Будет ли ошибкой return в ф-и MinMax? - C (СИ)
Формулировка задачи:
Здравствуйте!
Изучаю язык Си, есть решённая задачка.
1. Будет ли ошибкой return в ф-и MinMax?
2. Надо ли ставить двойку в объявлении MinMax'a и зачем?
#include<stdio.h>
#define SIZE 10
/*void*/int* MinMax(int *d, int len, int *mass/*,2 надо ли тут ставить двойку?*/)
{int i;
int min, max;
min=max=d[0];
for (i=0; i<len; i++)
{if (d[i]>max) max=d[i];
if (d[i]<min) min=d[i];
}
*mass=min;
*(mass+1)=max;
return(mass); /*?????*/
}
void main ()
{int data[SIZE]={32,-432,-34,4804,0,884}, mass[2];
MinMax(data, SIZE, mass/*,2 надо ли тут ставить двойку?*/);
printf("min=%d max=%d\n", *mass, *(mass+1));
}Решение задачи: «Будет ли ошибкой return в ф-и MinMax?»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#define SIZE 10
void MinMax(int *d, int len, int *min, int *max)
{
int _min = *d, _max = *d; /* *d == d[0] */
for (int i=0; i<len; i++)
{
if (d[i] > _max)
_max = d[i];
if (d[i] < _min)
_min = d[i];
}
*min = _min;
*max = _max;
}
int main ()
{
int min = 0, max = 0;
int data[SIZE] = {32, -432, -34, 4804, 0, 884};
MinMax(data, SIZE, &min, &max);
printf("min=%i max=%i\n", min, max);
system("PAUSE");
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек: iostream.h и stdlib.h
- Объявление константы размера массива SIZE
- Создание функции MinMax, которая принимает на вход указатель на первый элемент массива, длину массива, указатель на переменную min и указатель на переменную max.
- Внутри функции инициализация переменных _min и _max значением первого элемента массива d[0]
- Затем происходит проход по всем элементам массива, начиная с 0 и до len-1.
- Если текущий элемент d[i] больше значения переменной _max, то значение переменной _max обновляется.
- Если текущий элемент d[i] меньше значения переменной _min, то значение переменной _min обновляется.
- После прохода по всем элементам массива, значения переменных _min и _max содержат минимальное и максимальное значение массива соответственно.
- Значения переменных min и max в функции main устанавливаются равными нулю.
- Создается массив data типа int, размерностью SIZE, заполненный некоторыми значениями.
- Функция MinMax вызывается в функции main с аргументами data, SIZE, &min, &max.
- Выводится сообщение с значениями переменных min и max.
- Вызов system(
PAUSE) служит для приостановки выполнения программы до нажатия клавиши. - Возврат значения 0 из функции main означает успешный конец работы программы.