АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Count - свойство содержащее количество объектов

Читайте также:
  1. A) количество товаров и услуг, предлагаемое в масштабе общества при данном уровне цен
  2. Countable/ uncountable 2
  3. Countries of the UK
  4. Countries within a Country
  5. Countries, capitals, languages and nationalities
  6. Do debtors always pay back? Why? What happens if not? What can be done to overdue accounts?
  7. Drawing 4 - the Monthly average salary of member countries EvrAzEs (US dollars)
  8. ENGLISH - SPEAKING COUNTRIES/AMERICA
  9. English Speaking Countries - Англоязычные страны
  10. English-speaking country (the USA)
  11. FORMS OF ACCOUNTING

NET framework предоставляет нам готовый класс Queue (очередь).

Класс Queue находится в пространстве имен System.Collections, поэтому перед тем, как использовать его, желательно подключить это пространство, чтобы в дальнейшем не использовать записи вида System.Collections.Queue:

using System.Collections;

Для работы с очередью необходимы следующие методы:

Enqueue() - помещает элемент в конец очереди

Dequeue() - достает из очереди первый элемент

В принципе этого вполне достаточно. У класса Queue есть еще несколько полезных методов:

Contains() - проверяет имеется ли данный объект в очереди

Count - свойство, содержащее количество элементов в очереди

Peek() - возвращает первый элемент в очереди, но не удаляет его

Рассмотрим пример:

static void Main(string[] args)

{

Queue q = new Queue(3);

 

q.Enqueue(3); //помещаем в очередь тройку

q.Enqueue(4); //помещаем в очередь четверку

q.Enqueue(5); //помещаем в очередь пятерку

 

//наша очередь выглядит так: 5 4 3

 

Console.WriteLine("В очереди содержится " + q.Count + " объекта"); //выведет 3

 

Console.WriteLine("Первый элемент: " + q.Peek()); //выведет 3

 

Console.WriteLine((int)q.Dequeue()+ (int)q.Dequeue() - (int)q.Dequeue()); //3+4-5=2

 

}

Сначала мы создаем экземпляр класса Queue. После этого помещаем в очередь 3 элемента. В нашем случае это объекты типа int. Обратите внимание на очередность. Тройка заняла очередь первой, а пятерка последней. Далее мы узнаем, сколько элементов содержится в очереди. Узнаем, какой первый. Далее мы извлекаем элементы из очереди и сразу выполняем простые расчеты. Приведение к типу int обязательно, т.к. в очереди хранятся объекты типа object вне зависимости от того, что в очередь было помещено.

Нужно помнить, что невозможно узнать, кто в очереди второй или третий, пока не "достать" из очереди соответствующее количество элементов. Если вам такая функция необходима, то скорее всего придется отказаться от использования класса Queue и реализовать очередь самому, на основе массива или ArrayList

Обратим внимание на то, что очередь не является типизированной, т.е. в ней могут содержаться объекты разных типов.

q.Enqueue("строка"); //помещаем в очередь строку

q.Enqueue(3); //помещаем в очередь тройку

q.Enqueue(4); //помещаем в очередь четверку

q.Enqueue(5); //помещаем в очередь пятерку

стек в C#

 

В NET framework существует класс Stack, который содержит все необходимые методы:

Push() - помещает элемент в стек

Pop() - достает элемент из стека

Peek() - возвращает верхний элемент стека

Contains() - проверяет содержится ли элемент в стеке

Count - свойство содержащее количество объектов

Методы практически аналогичны методам очереди. Рассмотрим следующую задачу:

Пусть у нас имеется арифметическое выражение, поддерживающее 3 вида скобок: (), [], {}. Наша задача - проверить правильность расположения скобок в выражении.

Примеры:

{(5-[3+9])-4} - правильное выражение

{(5-[3+)9]-4} - неверное выражение

Эту задачу очень легко решить с помощью стека. Алгоритм следующий: пробегаем по выражению слева направо. Если мы встретим открывающую скобку, то помещаем ее в стек. Если встретим закрывающую скобку, то достаем элемент из стека и проверяем форму скобки. Если формы разные или стек пуст, то это значит, что выражение неверное. Если к концу работы программы стек оказался не пуст, то это также означает, что выражение неверно.

Рассмотрим реализацию этого алгоритма:

static void Main(string[] args)

{

string str;

char c;

Stack s = new Stack();

str=Console.ReadLine();

 

for (int i = 0; i < str.Length; i++)

{

 

if ((str[i] == ′(′) || (str[i] == ′[′) || (str[i] == ′{′))

{

//если это открывающая скобка, то

s.Push(str[i]); //помещаем скобку в стек

}

else if ((str[i] == ′)′) || (str[i] == ′]′) || (str[i] == ′}′))

{

//если это закрывающая скобка

if (s.Count == 0)

{

//если стек путстой

Console.WriteLine("Не хватает скобки");

break;

}

 

c = (char)s.Pop();

//проверяем соответствие форм

if (((c == ′{′) && (str[i] == ′}′)) ||

((c == ′[′) && (str[i] == ′]′)) ||

((c == ′(′) && (str[i] == ′)′)))

{

continue;

}

else

{

Console.WriteLine("Неверный тип скобки");

break;

}

}

else

{

//если это другой символ

continue;

}

}

 

if (s.Count > 0)

{

//в стеке остались скобки

Console.WriteLine("Не хватает закрывающей скобки");

}

}

Прокомментируем программный код. Сначала мы создаем 3 переменные: типа string (строка), сhar (символ), Stack (стек). После чего считываем строку с экрана (ее должен ввести пользователь). Далее в цикле for мы пробегаем по всем символам введенной строки. Далее выполняются действия по алгоритму описанному выше.

 


Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.006 сек.)