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

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

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

Дан массив целых чисел состоящий из N элементов (N = 20). Найти индекс максимального отрицательного элемента. Примечания: Данные вводятся с клавиатуры. В программе при обращении к элементу массива нельзя использовать дополнительную переменную для вычисления его адреса. Примерно понимаю алгоритм, но не могу понять как тут применить указатель, тк плохо понимаю тему. Заранее благодарю за помощь!

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

textual
Листинг программы
int arr[N], *start, *end, *max = NULL;
for(start = arr, end = arr + N; start < end; start++){
    if(*start < 0){
        if(!max)
             max = start;
        else{
            if(*max < *start)
                max = start;
        }
}
if(!max)
    puts("not found");
else
    printf("\nindex = %d\n", max - arr);

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

В этом коде:

  1. Объявлен массив arr[N] и указатель на него start.
  2. Затем объявлен указатель end, который указывает на элемент arr[N].
  3. Создается указатель max, который изначально равен NULL. Этот указатель будет использоваться для хранения индекса максимального отрицательного элемента.
  4. Происходит цикл, в котором start последовательно сравнивается со всеми элементами массива до end.
  5. Если текущий элемент меньше нуля, то проверяется, является ли max равным NULL. Если это так, то max присваивается текущему элементу. Если нет, то проверяется, меньше ли текущий элемент, чем элемент, на который указывает max. Если это так, то max присваивается текущему элементу.
  6. После завершения цикла проверяется, равен ли max NULL. Если это так, то выводится сообщение not found. В противном случае выводится сообщение с индексом максимального отрицательного элемента, рассчитываемое как (max - arr).

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

8   голосов , оценка 3.75 из 5
Похожие ответы