Jump to content

Задачи - ООП, Седмица 1, 18.02.2026

warn Както винаги, НЕ може да използвате външни библиотеки и (почти) всичко от стандартната библиотека!

За решаване

Задача 1

Реализирайте следните функции:

// Създава нова динамично-заделена матрица
int** newMatrix(unsigned rows, unsigned cols);
// Изтрива динамично-заделена матрица
void deleteMatrix(int**& matrix, unsigned rows); // Запишете nullptr в matrix!
// Връща сумата на всички елементи в матрицата
int sumMatrix(const int** matrix, unsigned rows, unsigned cols);

Поставете техните имплементации във файл matrix.cpp и техните дефиниции в matrix.h. Естествено, главната функция трябва да се намира извън arrmath.cpp!

От входа получавате размерите и стойностите на две матрици с цели числа. Изкарайте разликата, между сумата на елементите на първата матрица и на втората матрица.

Вход Изход
3 3
1 2 3
4 5 6
7 8 9
4 2
13 10
-6 -5
100 101
-30 -20
-118

Задача 2

Реализирайте следните функции:

int sum(const int* elements, unsigned length);
int average(const int* elements, unsigned length);
int largest(const int* elements, unsigned length);
int smallest(const int* elements, unsigned length);
// Връща индекса на първото срещане на elementToSearch
unsigned findIndex(const int* elements, unsigned length, int elementToSearch);

Поставете техните имплементации в arrmath.cpp и техните дефиниции в arrmath.h. Направете всички нужни проверки за коректност на аргументите на функциите!

От входа получавате цяло неотрицателно число N и след това N на брой цели числа.

Трябва да изкарате средното аритметично на всички елементи между най-малкия и най-големия (включително). Ако най-големия и/или най-малкия се среща повече от един път, използвайте неговото първо срещане.

Използвайте максимално функциите от arrmath!

Вход Изход
5 2 1 3 5 4 3
6 10 -2 17 0 0 1 4
8 1 1 1 1 10 10 10 10 2.8

Задача 3

Реализирайте следните функции във файлове stringHelpers.cpp и stringHelpers.h:

char* newString(unsigned length);
char* newString(const char* string);
char* concatStrings(const char* first, const char* second, const char* separator);
void deleteString(char*& string); // Запишете nullptr в string!

Реализирайте следните функции във файлове ioHelpers.cpp и ioHelpers.h:

// Прочита от потребителския вход цяло число между min и max включително,
// като предоставя prompt преди въведената стойност
// При невалидна стойност, пита пак за вход
int readInteger(const char* prompt, int min, int max);
double readDouble(const char* prompt, double min, double max);
char* readString(const char* prompt);

За реализацията им използвайте stringHelpers!

Реализирате система за запазване на ученици. Всеки ученик има две имена и оценка (по шестобалната система, между 2.0 и 6.0).

Използвайки ioHelpers, поискайте от потребителя брой ученици. След това, за всеки ученик, поискайте неговото име, фамилия и оценка (поотделно).

За всеки ученик запазаете името му като един низ във формата "<ИМЕ> <ФАМИЛИЯ>". Не запазвайте име и фамилия като отделни стойности!

Накрая изкарайте данните за всички ученици.

Смесен вход/изход: (удебеления текст е изкаран от програмата, останалото е въведено от потребителя)

Number of students: 4
First name: Ivan
Last name: Koprivan
Grade: 5.5
First name: Dimitar
Last name: Stoianov
Grade: 3.15
First name: Hari
Last name: Seldon
Grade: 6
First name: Richard
Last name: Stallman
Grade: 4.53
Ivan Koprivan has grade 5.5
Dimitar Stoianov has grade 3.15
Hari Seldon has grade 6
Richard Stallman has grade 4.53

За самоподготовка

Пререшете следните задачи от УП без да гледате решенията: