- •Управление esc – последовательность (с примерами)
- •4. Определение констант и их характеристика (const,define,enum)
- •5. Форматные потоки в с. Функции fPrintf(), Fscanf(), и модификации (с примерами). Спецификаторы
- •7. Перегруженные операции.
- •8. Инструкция ветвления. (пример)
- •9. Инструкция switch()
- •10. Применение инструкции switch() для создания текстового меню.
- •11. Инструкция цикла.
- •12. Инструкция перехода.
- •13. Указатели. Операции над указателями. Косвенная адресация.
- •14. Ссылки (пример)
- •15. Статические числовые одномерные
- •16. Статические числовые двумерные массивы.
- •17. Динамическая память.
- •18. Выделение памяти под динамический одномерный и двумерный массив.
- •19. Алгоритм удаления и добавления данных в массив.
- •20. Глобальные, локальные, статические, внешние переменные.
- •21. Классы памяти.
- •22. Формальные и фактические параметры.
- •23. Функции.
- •24. Виды передачи параметров в функцию.
- •25.Функции и массивы
- •26. Функции с переменным числом параметров.
- •27. Шаблоны функции.
- •28.Рекурсии. Фреймы.
- •29. Функция Main()
- •30. Стеки.
- •31. Очереди.
- •33. Строки, как массив символов.
- •34. Функции ввода строковых переменных.
- •35.Основные функции обработки строковых переменных.
- •37. Функции преобразования типов.
- •38. Строки типа string.
- •40. Функции работы с памятью. Memcmp - сравнивает две области памяти
- •41. Структуры
- •42. Вложенные структуры.
- •43. Объединения (union)
- •44.Передача переменных определенных пользователем в функцию.
- •50. Функция определения конца файла.
- •51. Файловый поток.
- •52. Функции tellg и ftell
- •53. Установка файлового указателя
- •55. Обработка текстовых файлов.
- •56. Бинарный файл.
31. Очереди.
Очередь — структура данных с дисциплиной доступа к элементам «первый пришёл — первый вышел» (FIFO, First In — First Out). Добавление элемента (принято обозначать словом enqueue — поставить в очередь) возможно лишь в конец очереди, выборка — только из начала очереди (что принято называть словом dequeue — убрать из очереди), при этом выбранный элемент из очереди удаляется.
Очередь в программировании используется, как и в реальной жизни, когда нужно совершить какие-то действия в порядке их поступления, выполнив их последовательно. Примером может служить организация событий в Windows. Когда пользователь оказывает какое-то действие на приложение, то в приложении не вызывается соответствующая процедура (ведь в этот момент приложение может совершать другие действия), а ему присылается сообщение, содержащее информацию о совершенном действии, это сообщение ставится в очередь, и только когда будут обработаны сообщения, пришедшие ранее, приложение выполнит необходимое действие.
аdd() – занести в очередь значение
print() – вывести все значения очереди на экран
num() – вернуть количество значений в очереди
isempty() – вернуть значение true (тип bool), если очередь пустая
Сейчас можно смело работать с очередью. Для работы нам могут понадобиться следующие методы:
Enqueue() - помещает элемент в конец очереди
Dequeue() - достает из очереди первый элемент
В принципе этого вполне достаточно. У класса Queue есть еще несколько полезных методов:
Contains() - проверяет имеется ли данный объект в очереди
Count - свойство, содержащее количество элементов в очереди
Peek() - возвращает первый элемент в очереди, но не удаляет его
Рассмотрим пример:
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 }
33. Строки, как массив символов.
Таким образом, можно определить строки двумя способами: как массив символов или как указатель на первый символ строки , например:
char str1[10] = "string1"; // объявление строки с помощью массива символов
Итак, теперь подробнее. Вы уже знаете, что массив - это набор однородных значений.
Так вот строка есть не что иное, как набор символов, и, соответственно, для хранения строк можно использовать символьные массивы .
Например, строка "QWERTY" имеет тип char[7], а пустая строка "" имеет тип char[1]. Почему char[1]? Именно потому, что любая строка завершается так называемым нулевым символом, то есть символом, код которого в ASCII-таблице равен 0.
Для начальной инициализации символьного массива можно использовать правила инициализации произвольного массива , то есть используя фигурные скобки, только в данном случае придется явно указывать нулевой символ , которым заканчивается строка . Давайте рассмотрим предшествующий пример с использованием общих правил начальной инициализации массива .
char str[]={'A','B','C','D','E','�'};
Одна из замечательных особенностей при работе со строками - это возможность упрощенной начальной инициализации. Например,
Объявление char str[] = "ABCDE"; присваивает переменной-строке
Еще одна особенность работы с символьными массивами - если элементы произвольного массива можно вводить с клавиатура и выводить на экран только по одному элементу в цикле, то в символьный массив можно ввести сразу всю строку , используя оператор ввода
cin >> Имя_ массива ;
и, аналогичным образом, вывести сразу всю строку на экран, используя оператор вывода
cout << Имя_ массива ;
Следует сразу отметить, что при вводе с клавиатуры строки оператор cin автоматически добавляет в конец строки нулевой символ , так что Вы должны учитывать этот факт при указании количества элементов при объявлении массива .
Второй способ определения строки - это использование указателя на символ. Объявление
char *b;
Например,
#include<iostream.h>
void main()
{ char str[] = "Здравствуй, мир!"; // объявляем символьный массив
char *b; // объявляем указатель на символ
b = &str[12]; // теперь b указывает на 12-ый символ str
*b = 'M'; // присваиваем первому элементу b символ 'М'
cout << b; // выводим строку b на экран (Мир!)}
Первый и самый очевидный способ присваивания строк – присваивание отдельных символов. Например,str1[0]=’H’;
str1[1]=’e’;
str1[2]=’l’;
str1[3]=’l’;
str1[4]=’o’;
str1[5]=’\0’;