Задача с динамическим выделением памяти - C (СИ)
Формулировка задачи:
Написать пользовательскую функцию на языке Си. Массивы А и В динамические, выделение памяти выполнить функциями malloc и calloc, обращение к элементам только через указатель.
Заданы 2 массива А и В. Первым на печать вывести массив, содержащий наибольшее значение. Напечатать также это значение и его порядковый номер.
Решение задачи: «Задача с динамическим выделением памяти»
textual
Листинг программы
- #include <stdlib.h>
- #include <stdio.h>
- #include <time.h>
- #define N 4
- #define M 7
- void Print(int *arr, const int size)
- {
- int i;
- for (i = 0; i < size; i++)
- printf("%d ", *(arr + i));
- printf("\n");
- }
- int main(void)
- {
- int i, *arr = malloc(sizeof(*arr) * (N + M)), *A = arr, *B = arr + N, *pMax = arr;
- srand(time(NULL));
- for (i = 0; i < N + M; i++)
- {
- *(arr + i) = rand() % 100;
- if (*pMax < *(arr + i))
- pMax = arr + i;
- }
- if (pMax < B)
- {
- Print(A, N);
- Print(B, M);
- printf("Max is %d with number %d\n", *pMax, pMax - A + 1);
- }
- else
- {
- Print(B, M);
- Print(A, N);
- printf("Max is %d with number %d\n", *pMax, pMax - B + 1);
- }
- free(arr);
- return 0;
- }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с памятью и вводом/выводом данных
- Определение констант N и M, которые задают размер массивов A и B соответственно
- Объявление функции Print, которая выводит элементы массива на экран
- Объявление переменной i для использования в цикле
- Выделение памяти под массив arr с помощью функции malloc. Размер массива определяется как сумма размеров массивов A и B
- Разделение выделенной памяти на массивы A и B, а также указатель pMax, который будет отслеживать максимальный элемент
- Инициализация генератора случайных чисел с помощью функции srand и времени
- Заполнение массива arr случайными числами от 0 до 99
- Поиск максимального элемента в массиве arr с помощью указателя pMax
- Если максимальный элемент находится в первой половине массива (до указателя B), то выводится список элементов массива A, затем список элементов массива B и сообщение о том, что максимальное число находится в позиции pMax - A + 1
- Если максимальный элемент находится во второй половине массива (после указателя B), то выводится список элементов массива B, затем список элементов массива A и сообщение о том, что максимальное число находится в позиции pMax - B + 1
- Освобождение памяти, выделенной под массив arr, с помощью функции free
- Возврат значения 0, что означает успешное завершение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д