КР 2 1курс 1 семестр 7 вариант
.docx
Создайте очередь для символов. Создайте функции push и pop для ввода и вывода элементов очереди. Вводите в очередь символы с клавиатуры, причем при совпадении вводимого символа с последним элементом очереди (т.е. предыдущим введенным символом) блокируйте ввод такого символа. В случае совпадения вводимого символа с эталонным символом (например #) выведите на экран содержимое очереди.
Методические рекомендации
КР 2 предназначена для приобретения практических навыков работы с материалом, относящимся к теме 13: «Динамические структуры данных». В качестве динамической структуры данных служит очередь или стек. При этом элементы очереди (стека) можно создавать по мере необходимости в динамической памяти или же сразу реализовать очередь (стек) на основе массива и больше память не распределять.
Листинг программы
#include <iostream.h> //Подключаемые файлы
#include <conio.h>
struct Ochered //Очередь
{
char ch; //Данные
Ochered *next; //Указатель на следующий элемент
} *och, *tek = NULL, *nach = NULL;
void push(char ch) //Вставка элемента очереди
{
och = new Ochered; //Выделение памяти
och->next = NULL;
och->ch = ch;
if (nach == NULL)
nach = och; //Запоминаем начало очереди
else
tek->next = och;
tek = och;
}
void pop(void) //Вывод очереди на экран
{
Ochered *och1;
och1 = nach;
while (och1->next != NULL)
{
cout << och1->ch << " ";
och1 = och1->next;
}
}
void ochistka(void) //Возврат памяти
{
Ochered *och1;
och = nach;
while (och != NULL)
{
och1 = och->next;
delete(och);
och = och1;
}
och = NULL;
och1 = NULL;
tek = NULL;
nach = NULL;
}
void main(void)
{
char etSimv, ch;
cout << "Vvedite etalonnyj simvol = ";
cin >> etSimv;
cout << "Vvodite simvoly" << endl;
while (ch != etSimv)
{
cout <<"\t\t>> ";
cin >> ch;
if (nach == NULL)
push(ch);
else
if (ch != och->ch) //Проверка на одинаковые символы
push(ch);
}
cout << "\nElemety ocheredi: ";
pop();
ochistka();
cout << "\n\nPrass any key to continue." << endl;
getch();
}
Результат работы программы
Список используемой литературы
1. Березин, Б.И. Начальный курс С и С++ / Б.И. Березин, С.Б. Березин. – М.: Диалог– МРТИ, 1999.
2. Берри, В. Язык Си: введение для программистов / В. Берри, Б. Микинз. – М.: Финансы и статистика, 1988.
3. Больски, М.Н. Язык программирования Си: справочник / М.Н. Больски. – М.: Радио и связь, 1988.
4. Бухтияров, А.М. Сборник задач по программированию на алгоритмических языках / А.М. Бухтияров, Г.Д. Фролов. – М.: Статистика, 1978.
5. Бадд, Т. Объектно-ориентированное программирование в действии / Т. Бадд. – СПб.: Питер, 1997.
6. Вайнер, Р. С++ изнутри / Р. Вайнер, Л. Пинсон – Киев: ДиаСофт, 1993.
7. Вирт, Н. Алгоритмы и структуры данных / Н. Вирт. – СПб.: Невский диалект, 2001.
8. Дейтел, Х.М. Как программировать на С / Х.М. Дейтел, П.Дж. Дейтел. – М.: БИНОМ, 2006.
9. Джехани, Н. Программирование на языке Си / Н. Джехани / Радио и связь, 1988.
10. Дэвис, С. С++ для «чайников» / С. Дэвис. – Киев: Диалектика, 1996.