Нужна программа, которую можно вложить в отчет с максимальным количеством комментариев - C (СИ)
Формулировка задачи:
На практике изучали язык си. Нужна хорошая программа которую можно вложить в отчет с максимальным кол-вом комментариев.
Решение задачи: «Нужна программа, которую можно вложить в отчет с максимальным количеством комментариев»
textual
Листинг программы
#include <stdio.h>
#include <malloc.h>
//Функция рекурсивного поиска минимума в массиве из n элементов
int min_rec(int* Arr, int n, int min)
{
//Сравниваем текущий элемент в текущим минимумом.
//Если элемент меньше минимума - минимум становится равен элементу.
if(*Arr < min)
min=*Arr;
//Выход из фукнции при n = 1 (на каждом шаге рекурсии уменьшаем n)
//Иначе рекурсивный вызов функции со следующим элементом и уменьшенным n
return n == 1 ? min : min_rec(++Arr, --n, min);
}
int main()
{
int n;
printf("Enter size of array\n");
scanf("%d", &n);
//Выделение памяти под массив n элементов типа int
int* Arr=(int*) malloc(n*sizeof(int));
int i;
printf("Enter %d elements of array\n", n);
for(i=0; i<n; ++i)
scanf("%d", &Arr[i]);
int min=min_rec(Arr, n, *Arr);
printf("Minimum of array is: %d\n", min);
//Очистка памяти
free(Arr);
return 0;
}
Объяснение кода листинга программы
- В программе представлена функция
min_rec, которая реализует рекурсивный поиск минимума в массиве. - В функции
mainпроисходит запрос размера массива и его заполнение значениями. - Вызывается функция
min_recдля поиска минимума в массиве. - Результат выводится на экран.
- В конце программы выполняется освобождение памяти.
- Значение переменной
nиспользуется в качестве параметра в функцииmin_recи для выхода из рекурсии. - В цикле используется оператор
scanfдля ввода значений в массив. - Значение переменной
minинициализируется значением первого элемента массива. - Значение переменной
Arrиспользуется как указатель на первый элемент массива. - Значение переменной
iинициализируется нулем и используется в цикле для прохода по всем элементам массива. - Значение переменной
minобновляется при каждом шаге рекурсии. - Значение переменной
nуменьшается на единицу при каждом шаге рекурсии. - Значение переменной
Arrувеличивается на единицу при каждом шаге рекурсии. - Значение переменной
minсравнивается с текущим элементом массива. - Если текущий элемент меньше
min, тоminобновляется значением текущего элемента. - Если
nравно единице, то рекурсия завершается иminвыводится на экран. - Если
nбольше единицы, то выполняется рекурсивный вызов функцииmin_recс увеличенным указателем и уменьшенным значениемn. - Значение переменной
minвыводится на экран после завершения рекурсии. - Значение переменной
Arrосвобождается с помощью функцииfree. - Программа завершается с возвращаемым значением
0.