using System;
using System.Collections.Generic;
using System.Text;
namespace MyQueue
{
public class QueueException : Exception { }
public class Queue <T>
{
private const int _basicCapacity = 8;
private int _capacity;
private int _count;
private T[] _items;
private int _begin;
private int _end;
public int Capacity
{
get => _capacity;
protected set
{
int newCapacity = value;
T[] newItems = new T[newCapacity];
Count = Math.Min(Count, Capacity);
for (int i = 0; i < Count; i++)
{
newItems[i] = _items[(_begin + i) % Capacity];
}
_begin = 0;
_end = Count;
_items = newItems;
_capacity = newCapacity;
}
}
public int Count
{
get => _count;
protected set => _count = value;
}
public Queue()
{
Capacity = _basicCapacity;
Count = 0;
_begin = 0;
_end = 0;
_items = new T[Capacity];
}
public void Enqueue(T item)
{
if (Count == Capacity)
{
Capacity *= 2;
}
Count++;
_items[_end] = item;
_end = (_end+1) % Capacity;
}
public bool IsEmpty()
{
return Count == 0;
}
public T Dequeue()
{
if (IsEmpty())
{
throw new QueueException();
}
T item = _items[_begin];
_begin = (_begin+1) % Capacity;
Count--;
if (Count * 4 < Capacity)
{
int newCapacity = Math.Max(Capacity / 4, _basicCapacity);
if (newCapacity < Capacity)
{
Capacity = newCapacity;
}
}
return item;
}
public T Peek()
{
if (IsEmpty())
{
throw new QueueException();
}
return _items[_begin];
}
public override string ToString()
{
StringBuilder sb = new StringBuilder();
for(int i = 0; i < Count; i++){
if (i > 0)
{
sb.Append(" ");
}
sb.Append(_items[(_begin+i) % Capacity].ToString());
}
return sb.ToString();
}
public void Clear()
{
Count = 0;
_begin = 0;
_end = 0;
if (Capacity > _basicCapacity)
{
Capacity = _basicCapacity;
}
}
}
class Program
{
public static void Main (string[] args)
{
Queue <double> q = new Queue <double>();
for(int i = 0; i < 20; i++){
q.Enqueue(i);
}
Console.WriteLine("0-19: \"{0}\"", q.ToString());
for(int i = 0; i < 10; i++)
{
Console.WriteLine("Peek: {0}", q.Peek());
Console.WriteLine("Dequeue: {0}", q.Dequeue());
}
Console.WriteLine("10-19: \"{0}\"", q.ToString());
q.Clear();
Console.WriteLine("Empty queue representation: \"{0}\"", q.ToString());
Console.WriteLine("Queue is empty? {0}", q.IsEmpty());
}
}
}
Объяснение:
Реализация циклической очереди с примерами использования.
Тот же самый код тут: onlinegdb.com/SkyJfEvnS
Элемент со значением 15 по порядку шестой. Каким будет его индекс в массиве - это зависит от того, какой индекс имеет первый элемент массива.
В языках семейства С (C, C++, C#, Java, ...) элементы индексируются от нуля, поэтому индекс шестого элемента будет равен 5.
В языке Паскаль, каким его придумал Н.Вирт, при описании массива индекс первого элемента задается и ответить на вопрос, не зная этого значения невозможно. В языках Free Pascal, Object Pascal и PascalABC.NET также можно создать массив динамическим, тогда индекс первого элемента будет равен нулю, а шестого - 5.
В языке Basic по умолчанию индекс первого элемента равен 1 или 0 (это зависит от настройки), но можно явно, как и в Паскаль, залать совершенно любое значений индекса, так что и тут однозначного ответа нет.
В языке Python массивов нет вообще. Вместо них используются списки List, к элементам которых можно обращаться по порядковому номеру, а номера эти начинаются с 0 и тогда можно условно считать, что тут "индекс" шестого элемента равен 5.
Получается, что либо ответ 5, либо его однозначно дать нельзя.
uses crt;
var
i,gl,sogl: integer;
b: string;
begin gl:=0;
sogl:=0;
write('Введите текст: ');
read(b);
for i:=1 to length(b) do
begin
case b[i] of
'а','А','о','О','у','У','е','Е','ё','Ё',
'и','И','ы','Ы','э','Э','ю','Ю','я','Я': inc(gl);
'й','ц','к','н','г' ,'ш', 'щ' ,'з','х',
'ъ','ф','в','п','р' ,'л','д' ,'ж','ч',
'с','м','т','ь','б','Й','Ц','К','Н','Г',
'Ш', 'Щ' ,'З','Х','Ъ','Ф','В','П','Р' ,
'Л','Д' ,'Ж','Ч','С','М','Т','Ь','Б': inc(sogl);
end;
end;
writeln('Гласных - ',gl,' согласных - ',sogl);
if gl>sogl then writeln('Гласных больше!');
if sogl>gl then writeln('Согласных больше!');
if gl=sogl then writeln('Кол-во гласных и согласных равно!');
end.
2)
program alphbt;
const
glasn=['а','е','и','о','у','ы','э','ю','я'];
soglas=['б','в','г','д','ж','з','й','л','м', 'н','р','к','п','с','т','ф','х','ц','ч','ш','щ'];
var
st: string;
g,s,i:integer;
begin
write('Введите строку ');
readln(st);
g:=0; s:=0;
for i:= 1 to length(st) do
if st[i] in glasn then
inc(g)
else if st[i] in soglas then
inc(s);
if g> s then writeln('Гласных больше')
else if g< s then writeln('Согласных больше')
else writeln('Согласн=гласн');
readln;
end.
3)
var
s: string;
i, j, k: integer;
begin writeln('Введите строку:');
readln(s);
writeln('Символы, которые встречаются один раз:');
for i := 1 to length(s) do
begin
k := 0;
for j := 1 to length(s) do
if s[i] = s[j] then inc(k);
if k = 1 then write(s[i]:4)
end;
readln end.