Написать функцию выводящую максимальный элемент в массиве и его индекс через указатель - C (СИ)
Формулировка задачи:
Здравствуйте ! Помогите пожалуйста решить задачу - требуется написать функцию, находящую максимум массива и его индекс. С первой частью вроде бы справился, а вот как быть с индексом ?
#define _CRT_SECURE_NO_WARNINGS #define size 10 #include <stdio.h> #include <math.h> void max_index(int *, int); void max_index(int * arr, int i) { int *max = arr; int *index_max = &i; *index_max = 0; for (i = 0; i <= size - 1; i++) { printf("arr[%d]= ", i); scanf("%d", arr + i); if (arr[i] > *max) max = &arr[i]; *index_max = i; } printf("%d %d\n", *max,*index_max); } main(void) { int arr[size], i; for (i = 0; i <= size - 1; i++) { max_index(arr, i); return 0; } }
Видимо недостаточно акцентировал на том, что максимум и индекс нужно найти через указатель....(Если я превращаю index_max в int - все работает....)
Решение задачи: «Написать функцию выводящую максимальный элемент в массиве и его индекс через указатель»
textual
Листинг программы
#include <stdio.h> void max_index(int *a, int n, int *max, int* index_max) { *max = *a; *index_max = 0; for (int* i = a + 1; --n > 0; i++) { if (*i > *max) { *max = *i; *index_max = i - a; } } } int main(void) { int max, index_max; int arr[] = { 1, 2, 0, 9, 3, 4, 8, 7, 5, 6 }; max_index(arr, sizeof(arr) / sizeof(arr[0]), &max, &index_max); printf("%d %d\n", max, index_max); return 0; }
Объяснение кода листинга программы
- Объявление функции
max_index
, которая принимает три аргумента: массивa
, его размерn
и указатели на переменныеmax
иindex_max
. - Инициализация переменных
max
иindex_max
значением первого элемента массива и нулевым индексом соответственно. - В цикле
for
итерируемся по массиву, начиная со второго элемента. - Сравниваем текущий элемент с переменной
max
. Если текущий элемент большеmax
, то обновляем значенияmax
иindex_max
. - В конце функции возвращаем значение
max
иindex_max
. - В функции
main
создаем массивarr
и вызываем функциюmax_index
, передавая ей этот массив, его размер и указатели на переменныеmax
иindex_max
. - Выводим на экран значения
max
иindex_max
. - Возвращаем 0, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д