Задачи - ООП, Седмица 1, 18.02.2026
За решаване
Задача 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!
От входа получавате размерите и стойностите на две матрици с цели числа. Изкарайте разликата, между сумата на елементите на първата матрица и на втората матрица.
| Вход | Изход |
|---|---|
| -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
За самоподготовка
Пререшете следните задачи от УП без да гледате решенията:
Както винаги, НЕ може да използвате външни библиотеки и (почти) всичко от стандартната библиотека!