Поиск минимального и максимального значений в массиве на языке C
Задача. Дан массив целых чисел. Написать программу поиска в нем минимального и максимального значений.
Пояснение. Данная задача может быть немного усложнена, если требуется найти не значения, а индексы элементов (их положение в массиве), или вывести индексы и значения. Такой вариант приводится в конце.
Алгоритм решения:
- Введем переменные для хранения минимального и максимального значений и присвоим их значение первого элемента массива.
- Начиная со второго (его индекс 1), будем в цикле перебирать все элементы массива.
- Если значение очередного элемента меньше хранимого в соответствующей переменной, то перезапишем ее значение.
- Иначе, если значение текущего элемента больше значения переменной для хранения максимума, сохраним в переменной это новое значение.
- Выведем значения переменных на экран.
Решение задачи на языке программирования C:
Обратите внимание, что в данном программном коде длина массива вычисляется путем деления размера всего массива на размер одного его элемента. Вместо этого можно ввести константу N, в которой хранится длина массива.
#include <stdio.h> int main() { int a[] = {12, -34, 18, 4, -3, 15, 0, -10, 3, 17}; int min = a[0]; int max = a[0]; for (int i = 1; i < sizeof(a)/sizeof(a[0]); i++) { if (a[i] < min) min = a[i]; else if (a[i] > max) max = a[i]; } printf("Min: %d \n", min); printf("Max: %d \n", max); }
Результат выполнения:
Min: -34 Max: 18
Решение для поиска индексов, вывода индексов и значений:
#include <stdio.h> int main() { int a[] = {12, 18, 4, -3, 15, -34, 0, -10, 3, 17}; int min = 0; int max = 0; for (int i = 1; i < sizeof(a)/sizeof(a[0]); i++) { if (a[i] < a[min]) min = i; else if (a[i] > a[max]) max = i; } printf("ID min: %d, value min: %d \n", min, a[min]); printf("ID max: %d, value max: %d \n", max, a[max]); }
ID min: 5, value min: -34 ID max: 1, value max: 18