Как сделать, чтобы макрос передавал значения (нужно вывести максимум через переменную)? - C (СИ)

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

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

#include <stdio.h>
#include <malloc.h>
#define MAX_ELEM(count, array) int max=array[0]; for(int j = 0; j < n; ++j){if (array[j] > max){max = array[j];}}
 
int main()
{
    int *a;
    int n, i;
    printf("Input number of array:\n");
    scanf("%d", &n);
    a = (int*)malloc(n * sizeof(int));
    for (i = 0; i<n; i++)
      {
        printf("a[%d] =", i);
        scanf("%d", &a[i]);
      }
    int r = MAX_ELEM(n, a)
    printf("Max=%d\n", r);
}

Решение задачи: «Как сделать, чтобы макрос передавал значения (нужно вывести максимум через переменную)?»

textual
Листинг программы
//gcc 5.4.0
 
#include <stdio.h>
 
#define N 7
 
#define MAX_ELEM(arr, size, max) do { \
    max=arr[0]; \
    for(int i = 1; i < size; ++i) \
        if (arr[i] > max) \
            max = arr[i]; \
} while(0)
 
int main(void)
{
    int r=0;
    int a[N] = {1, 4, 3, 25, 6, 77, 8}; 
    
    MAX_ELEM(a, N, r);
        
    printf("Max=%d\n", r);
}

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

  1. Включаем файл stdio.h для работы с функциями ввода-вывода
  2. Объявляем макрос N со значением 7
  3. Объявляем макрос MAX_ELEM, который принимает три аргумента: arr (массив), size (размер массива) и max (переменная для хранения максимального элемента)
  4. В теле макроса присваиваем переменной max значение первого элемента массива arr
  5. С помощью цикла for проходим по всем элементам массива, начиная со второго
  6. Внутри цикла сравниваем текущий элемент массива с переменной max и если он больше, то присваиваем max значение текущего элемента
  7. В конце макроса ничего не делаем, поэтому выходим из него с помощью оператора return
  8. В функции main создаем массив a с семью элементами
  9. Вызываем макрос MAX_ELEM, передавая в качестве аргументов массив a, его размер N и переменную r
  10. Значение переменной r будет содержать максимальное значение из массива a
  11. Выводим значение переменной r на экран с помощью функции printf
  12. Значение переменной r будет 8, так как это максимальный элемент в массиве a

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


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

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

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