You are on page 1of 7

ТЕХНИЧЕСКИ УНИВЕРСИТЕТ – СОФИЯ

Курсова работа
Дисциплина: Синтез и анализ на алгоритми

Изготвил: Николай Иванов Николаев


Факултетен номер: 121221107
Специалност: КСИ
Група: 39
Условие на задача (номер 6 в списъка):
Даден е едномерен масив с n елемента. Да се напише програма,
която намира броя на намаляващите редици от елементи в масива,
тяхната дължина и най-дългата от тях. На C програмен език.

Програмен код:
 Линк към кода –> https://pastebin.com/3L7AjkQ6
Резултат от конзолата:

Обяснение на кода стъпка по стъпка:


1. Включване на библиотеки: ( #include <stdio.h> ) –> Този ред
включва стандартната входно-изходна библиотека в C, която
предоставя функции като printf и scanf.
2. Главна функция: ( int main() ) –> Това е входната точка на
програмата. Целият изпълним код ще бъде вътре в тази
основна функция.
3. Деклариране на променливи: ( int n; ) –> Декларираме
променлива n, за да съхраним броя на елементите в масива.
4. Въвеждане на брой елементи: ( printf("Въведете броя на
елементите в масива: "); scanf("%d", &n); ) –> Подканваме
потребителя да въведе броя на елементите в масива и да го
съхрани в променливата n.
5. Деклариране и въвеждане на елементи в масива: ( int array[n];
printf("Enter the elements of the array:\n"); for (int i = 0; i < n; i++)
{ scanf("%d", &array[i]); } ) –> Декларираме масив с размер n за
съхраняване на елементите. Използваме цикъл, за да въведем
всеки елемент от масива.
6. Инициализиране на променливи за низходящи
последователности: ( int currentLength = 1; int maxLength = 1;
int descendingSequences = 1; ) –> Инициализираме
променливи, за да следим текущата дължина, максималната
дължина и броя на низходящите редици.
7. Обхождаме масива, за да намерим намаляващите редици: (
for (int i = 1; i < n; i++) { if (array[i] < array[i - 1]) { currentLength++;
if (currentLength > maxLength) { maxLength = currentLength; } }
else { currentLength = 1; descendingSequences++; } } ) –>
Използваме цикъл, за да преминем през масива. Ако текущият
елемент е по-малък от предишния, то той е част от низходяща
последователност и „currentLength“ се увеличава. Ако
текущата дължина е по-голяма от максималната дължина,
актуализираме „maxLength“. Ако текущият елемент не е по-
малък, нулираме „currentLength“ и увеличаваме броя на
низходящите последователности.
8. Извеждаме резултатите: ( printf("Number of descending
sequences: %d\n", descendingSequences); printf("Length of the
longest descending sequence: %d\n", maxLength); ) –> Накрая
извеждаме броя на намаляващите редици и дължината на
най-дългата намаляваща редица.
9. Връщане от основната функция: ( return 0; ) –> Този израз
показва успешно изпълнение на програмата и 0 се връща на
операционната система.
10. Обяснение на резултата от конзолата: –> Има 3
намаляващи редици: (5 4 3; 8 6 2; 7 1). Дължината на най-
дългата намаляваща редица е 3.

Условие на задача (номер 22 в списъка):


Даден е двумерен масив с n реда и n стълба. Да се намери броя на
диагоналите с нулеви елементи, успоредни на вторичния диагонал.
На C програмен език.

Програмен код:
 Линк към кода –> https://pastebin.com/QpNYnwMs
Резултат от конзолата:

Обяснение на кода стъпка по стъпка:


1. Включване на библиотеки: ( #include <stdio.h> ) –> Този ред
включва стандартната входно-изходна библиотека в C, която
предоставя функции като printf и scanf.
2. Главна функция: ( int main() ) –> Това е входната точка на
програмата. Целият изпълним код ще бъде вътре в тази
основна функция.
3. Въвеждане на броя на редовете/стълбовете: ( int n;
printf("Въведете броя на редовете/стълбовете в двумерния
масив: "); scanf("%d", &n); ) –> Потребителят въвежда броя на
редовете и стълбовете в двумерния масив.
4. Въвеждане на елементите на двумерния масив: ( int matrix[n]
[n]; printf("Въведете елементите на двумерния масив:\n"); for
(int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { scanf("%d",
&matrix[i][j]); } } ) –> Този код използва вложен цикъл, за да
въведе елементите на двумерния масив.
5. Инициализация на променлива за броя на диагоналите с
нулеви елементи: ( int zeroDiagonalCount = 0; ) –> Тази
променлива се използва, за да брои колко диагонали
съдържат нулеви елементи.
6. Проверка на диагоналите с нулеви елементи: ( for (int i = 0; i <
n; i++) { if (matrix[i][n - i - 1] == 0) { zeroDiagonalCount++; } } ) –>
Този цикъл проверява дали елементът на текущата позиция
отговаря на елемент от диагонала, успореден на вторичния
диагонал. Ако елементът е 0, увеличаваме брояча на
диагоналите с нулеви елементи.
7. Извеждане на резултата: ( printf("Брой на диагоналите с
нулеви елементи, успоредни на вторичния диагонал: %d\n",
zeroDiagonalCount); ) –> Тук се извежда резултатът - броят на
диагоналите с нулеви елементи, успоредни на вторичния
диагонал.
8. Край на програмата: ( return 0; ) –> Този оператор сигнализира
успешно изпълнение на програмата на операционната
система.
9. Обяснение на резултата от конзолата: –> Програмата показва,
че от въведените данни от потребителя се получава матрица с
един диагонал успореден на вторичният диагонал, който
съдържа нула в себе си. Вторичният диагонал в този случай ни
е (4 0 2).

You might also like