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

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

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

Листинг программы
  1. #include <stdio.h>
  2. #include <malloc.h>
  3. #define MAX_ELEM(count, array) int max=array[0]; for(int j = 0; j < n; ++j){if (array[j] > max){max = array[j];}}
  4. int main()
  5. {
  6. int *a;
  7. int n, i;
  8. printf("Input number of array:\n");
  9. scanf("%d", &n);
  10. a = (int*)malloc(n * sizeof(int));
  11. for (i = 0; i<n; i++)
  12. {
  13. printf("a[%d] =", i);
  14. scanf("%d", &a[i]);
  15. }
  16. int r = MAX_ELEM(n, a)
  17. printf("Max=%d\n", r);
  18. }

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

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

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

  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

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

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

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