Задача с динамическим выделением памяти - C (СИ)

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

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

Написать пользовательскую функцию на языке Си. Массивы А и В динамические, выделение памяти выполнить функциями malloc и calloc, обращение к элементам только через указатель. Заданы 2 массива А и В. Первым на печать вывести массив, содержащий наибольшее значение. Напечатать также это значение и его порядковый номер.

Решение задачи: «Задача с динамическим выделением памяти»

textual
Листинг программы
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <time.h>
  4. #define N 4
  5. #define M 7
  6.  
  7. void Print(int *arr, const int size)
  8. {
  9.     int i;
  10.     for (i = 0; i < size; i++)
  11.         printf("%d ", *(arr + i));
  12.     printf("\n");
  13. }
  14.  
  15. int main(void)
  16. {
  17.     int i, *arr = malloc(sizeof(*arr) * (N + M)), *A = arr, *B = arr + N, *pMax = arr;
  18.     srand(time(NULL));
  19.     for (i = 0; i < N + M; i++)
  20.     {
  21.         *(arr + i) = rand() % 100;
  22.         if (*pMax < *(arr + i))
  23.             pMax = arr + i;
  24.     }
  25.     if (pMax < B)
  26.     {
  27.         Print(A, N);
  28.         Print(B, M);
  29.         printf("Max is %d with number %d\n", *pMax, pMax - A + 1);
  30.     }
  31.     else
  32.     {
  33.         Print(B, M);
  34.         Print(A, N);
  35.         printf("Max is %d with number %d\n", *pMax, pMax - B + 1);
  36.     }
  37.     free(arr);
  38.     return 0;
  39. }

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

  1. Подключение необходимых библиотек для работы с памятью и вводом/выводом данных
  2. Определение констант N и M, которые задают размер массивов A и B соответственно
  3. Объявление функции Print, которая выводит элементы массива на экран
  4. Объявление переменной i для использования в цикле
  5. Выделение памяти под массив arr с помощью функции malloc. Размер массива определяется как сумма размеров массивов A и B
  6. Разделение выделенной памяти на массивы A и B, а также указатель pMax, который будет отслеживать максимальный элемент
  7. Инициализация генератора случайных чисел с помощью функции srand и времени
  8. Заполнение массива arr случайными числами от 0 до 99
  9. Поиск максимального элемента в массиве arr с помощью указателя pMax
  10. Если максимальный элемент находится в первой половине массива (до указателя B), то выводится список элементов массива A, затем список элементов массива B и сообщение о том, что максимальное число находится в позиции pMax - A + 1
  11. Если максимальный элемент находится во второй половине массива (после указателя B), то выводится список элементов массива B, затем список элементов массива A и сообщение о том, что максимальное число находится в позиции pMax - B + 1
  12. Освобождение памяти, выделенной под массив arr, с помощью функции free
  13. Возврат значения 0, что означает успешное завершение программы

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


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

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

13   голосов , оценка 4.231 из 5

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

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

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