Главна страница

Упражнение 6 - Контролна 1

2010 година

Задачите от 2011 година

Задача 1.1

Напишете клас опашка с приоритети, в която да се съхраняват цели числа (може и клас-шаблон). Класът трябва да има следните методи:
конструктор по подразбиране;
деструктор;
метод за добавяне на елемент;
метод, който изважда елемента с най-голям приоритет (най-голямото число) и го отпечатване на екрана. Ако опашката е празна методът да връща false, а в противен случай true.

Ако методът за добавяне се казва push(), а този за изваждане printElement(), то след изпълнението на следните редове код в main функцията:

	Queue<int> q;
	q.push(3);
	q.push(-3);
	q.push(40);
	q.push(18);
	q.push(28);
	q.push(6);
	q.push(7);

	while(printElement()) cout << ' ';

на екрана трябва да се е отпечатало: 40 28 18 7 6 3 -3.

Ако е необходимо добавете още методи към класа.
Съвет: още при добавянето на елементите ги подреждайте спрямо приоритета им.

Примерно решение - zad_1.1.cpp

Резултати

ф.н. конструктор - 1 деструктор - 3 добавяне - 10 изваждане - 6 Общо
0801261002 1 1 6 0 8
0801261004 1 0 5 5 11
0801261005 1 0 5 5 11
0801261007 1 0 10 6 17
0801261008 1 0 1 0 2
0801261011 1 3 0 0 4
0801261013 0 0 2 0 2
0801261014 1 3 1 6 11
0801261017 1 3 7 6 17
0801261018 1 0 3 3 7
0801261021 0 0 0 0 0
0801261022 0 0 0 0 0
0801261025 1 3 3 2 9
0801261026 1 0 1 0 2
0801261027 1 1 2 0 4
0801261029 1 3 0 0 4
0801261034 1 3 8 4 16
0801261036 1 3 10 6 20
0801261037 1 2 4 1 8
0801261040 1 2 5 0 8
0801261049 1 3 2 0 6
0801261054 1 0 2 3 6
0801261065 0 0 1 1 2
0801261067 1 2 5 2 10
0801261076 1 0 10 6 17
0801261136 1 0 0 0 1
0801261140 1 1 3 2 7





Задача 1.2

Напишете шаблонен клас стек със следните методи:
	конструктор по подразбиране;
	деструктор;
	метод за добавяне на елемент;
	метод за изваждане на елемент.

Създайте 2 стека: s1 и s2.
Прочетете от клавиатурата 2 числа s1n и s2n.
Изискайте от потребителя на програмата да въведе от клавиатурата s1n на брой цели числа сортирани във възходящ ред и ги добавете в s1.
Направете същото и със s2n и s2.
Сега двата стека трябва да са сортирани низходящо от върха към дъното.
Слейте двата сортирани стека в трети стек s, като внимавате той също да бъде сортиран, но възходящо от върха към дъното.
Отпечатайте елементите в стека s.

Пример:
	Вход:
	3
	5
	2 4 9
	1 3 5 6 8

	Изход:
	1 2 3 4 5 6 8 9

Ако е необходимо добавете още методи към класа.

Примерно решение - zad_1.2.cpp

Резултати

ф.н. конструктор - 1 деструктор - 3 добавяне - 3 изваждане - 3 главна програма - 10 Общо
0701261069 0 0 0 0 0 0
0801261006 1 3 3 0 0 7
0801261010 1 3 3 3 2 12
0801261024 1 0 3 0 0 4
0801261051 1 3 3 3 10 20
0801261053 1 3 3 3 2 12
0801261056 1 0 1 1 1 4
0801261062 0 0 0 0 0 0
0801261066 0 0 0 0 0 0
0801261068 0 0 0 0 0 0
0801261069 1 3 2 1 0 7
0801261071 1 3 3 3 10 20
0801261072 0 0 0 3 0 3
0801261073 1 0 0 1 0 2
0801261075 0 0 0 0 0 0
0801261078 1 1 1 1 2 6
0801261079 1 0 3 1 0 5
0801261080 1 0 3 2 0 6
0801261081 1 1 1 1 1 5
0801261083 1 3 3 3 0 10
0801261084 1 2 3 2 2 10
0801261086 1 0 0 0 0 1
0801261099 1 3 3 2 1 10
0801261103 1 0 0 0 0 1
0801261110 1 0 2 1 0 4
0801261114 0 0 0 0 0 0
0901261038 1 0 1 0 0 2
0901261056 1 2 3 3 8 17
0901261131 1 0 3 2 0 6





Задача 2.2

Напишете шаблонен клас динамичен масив със следните методи:
	конструктор по подразбиране;
	деструктор;
	метод за добавяне на елемент в края на масива;
	метод за добавяне на елемент в началото на масива. В този случай всички елементи се изместват с една позиция
назад, към края на масива; метод за отпечатване на масива на екрана.

Създайте динамичен масив.
Прочетете от клавиатурата 10 цели числа, като: ако числото е четно го добавяте в края на масива, ако е нечетно го добавяте в началото на масива.
Отпечатайте масива на екрана, в обратен ред.
Ако е необходимо добавете още методи към класа.

Пример:
Добавяме 1, масива: 1 Добавяме 2, масива: 1 2 Добавяме 3, масива: 3 1 2 Добавяме 4, масива: 3 1 2 4 Добавяме 5, масива: 5 3 1 2 4 Добавяме 6, масива: 5 3 1 2 4 6 Добавяме 7, масива: 7 5 3 1 2 4 6 Добавяме 8, масива: 7 5 3 1 2 4 6 8 Добавяме 9, масива: 9 7 5 3 1 2 4 6 8 Добавяме 10, масива: 9 7 5 3 1 2 4 6 8 10 Изход: 10 8 6 4 2 1 3 5 7 9

Примерно решение - zad_2.2.cpp

Резултати

ф.н. конструктор - 2 деструктор - 2 доб. в края - 6 доб. в нач. - 6 главна програма - 4 Общо
0801261019 0 0 0 0 0 0
0801261047 2 1 2 2 3 10
0801261055 0 0 0 0 0 0
0801261097 0 0 0 0 0 0
0801261105 1 0 2 2 3 8
0801261129 1 1 0 0 2 4
0801261133 0 0 0 0 0 0
0801261135 1 0 1 1 2 5
0801261137 0 0 0 0 0 0
0801261138 0 0 0 0 0 0
0801261142 0 0 0 0 0 0
0801261145 0 0 0 0 0 0
0801261146 1 0 1 1 2 5
0801261148 0 0 0 0 0 0
0801261151 1 1 2 2 1 7
0801261153 0 0 0 0 0 0
0801261155 0 0 0 0 0 0
0801261156 0 0 0 0 0 0
0801261162 0 0 0 0 0 0
0801261165 0 0 0 0 0 0
0901261124 0 0 0 0 2 2
0901261132 0 0 0 0 0 0





Задача 3.1

Напишете шаблонен клас динамичен масив със следните методи:
конструктор по подразбиране;
деструктор;
метод за добавяне на елемент в средата на масива. Ако масивът има n на брой елемента, новият елемент трябва да се добави на позиция n / 2. Останалите елементи, след добавения, се изместват с една позиция назад, към края на масива;
метод за отпечатване на масива на екрана.

Създайте динамичен масив.
Прочетете от клавиатурата 8 реални числа и ги добавете в масива, използвайки метода за добавяне в средата.
Отпечатайте масива на екрана.
Ако е необходимо добавете още методи към класа.

Пример:
	Добавяме 1, масива: 1
	Добавяме 2, масива: 2 1
	Добавяме 3, масива: 2 3 1
	Добавяме 4, масива: 2 4 3 1
	Добавяме 5, масива: 2 4 5 3 1
	Добавяме 6, масива: 2 4 6 5 3 1
	Добавяме 7, масива: 2 4 6 7 5 3 1
	Добавяме 8, масива: 2 4 6 8 7 5 3 1

Примерно решение - zad_3.1.cpp

Резултати

ф.н. конструктор - 2 деструктор - 2 добавяне - 12 отпечатване - 2 главна програма - 2 Общо
0801261063 0 0 0 0 0 0
0801261064 0 0 0 0 0 0
0801261087 2 1 8 2 2 15
0801261089 2 0 0 2 2 6
0801261094 0 0 0 0 0 0
0801261100 0 2 4 2 0 8
0801261101 0 0 0 0 0 0
0801261106 0 0 0 0 0 0
0801261107 2 0 0 2 2 6
0801261108 0 0 0 0 0 0
0801261111 0 0 0 0 0 0
0801261113 0 0 0 0 0 0
0801261116 0 0 0 0 0 0
0801261117 2 2 2 0 2 8
0801261120 0 0 0 0 0 0
0801261121 0 0 0 0 0 0
0801261122 0 0 0 0 0 0
0801261147 0 0 0 0 0 0
0901261076 0 0 0 0 0 0

Главна страница