Написать функцию выводящую максимальный элемент в массиве и его индекс через указатель - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте ! Помогите пожалуйста решить задачу - требуется написать функцию, находящую максимум массива и его индекс. С первой частью вроде бы справился, а вот как быть с индексом ?
Листинг программы
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #define size 10
  3. #include <stdio.h>
  4. #include <math.h>
  5. void max_index(int *, int);
  6. void max_index(int * arr, int i)
  7. {
  8. int *max = arr;
  9. int *index_max = &i;
  10. *index_max = 0;
  11. for (i = 0; i <= size - 1; i++) {
  12. printf("arr[%d]= ", i);
  13. scanf("%d", arr + i);
  14. if (arr[i] > *max)
  15. max = &arr[i];
  16. *index_max = i;
  17. }
  18. printf("%d %d\n", *max,*index_max);
  19. }
  20. main(void)
  21. {
  22. int arr[size], i;
  23. for (i = 0; i <= size - 1; i++) {
  24. max_index(arr, i);
  25. return 0;
  26. }
  27. }
Видимо недостаточно акцентировал на том, что максимум и индекс нужно найти через указатель....(Если я превращаю index_max в int - все работает....)

Решение задачи: «Написать функцию выводящую максимальный элемент в массиве и его индекс через указатель»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. void max_index(int *a, int n, int *max, int* index_max) {
  4.     *max = *a;
  5.     *index_max = 0;
  6.     for (int* i = a + 1; --n > 0; i++) {
  7.         if (*i > *max) {
  8.             *max = *i;
  9.             *index_max = i - a;
  10.         }
  11.     }
  12. }
  13.  
  14. int main(void) {
  15.     int max, index_max;
  16.     int arr[] = { 1, 2, 0, 9, 3, 4, 8, 7, 5, 6 };
  17.     max_index(arr, sizeof(arr) / sizeof(arr[0]), &max, &index_max);
  18.     printf("%d %d\n", max, index_max);
  19.     return 0;
  20. }

Объяснение кода листинга программы

  1. Объявление функции max_index, которая принимает три аргумента: массив a, его размер n и указатели на переменные max и index_max.
  2. Инициализация переменных max и index_max значением первого элемента массива и нулевым индексом соответственно.
  3. В цикле for итерируемся по массиву, начиная со второго элемента.
  4. Сравниваем текущий элемент с переменной max. Если текущий элемент больше max, то обновляем значения max и index_max.
  5. В конце функции возвращаем значение max и index_max.
  6. В функции main создаем массив arr и вызываем функцию max_index, передавая ей этот массив, его размер и указатели на переменные max и index_max.
  7. Выводим на экран значения max и index_max.
  8. Возвращаем 0, чтобы указать, что программа успешно завершилась.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы