Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

КР 2 1курс 1 семестр 7 вариант

.docx
Скачиваний:
7
Добавлен:
01.04.2014
Размер:
31.44 Кб
Скачать

5

Создайте очередь для символов. Создайте функции 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.