Написать функцию выводящую максимальный элемент в массиве и его индекс через указатель - 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;
}

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

  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
Похожие ответы