Задача с динамическим выделением памяти - 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, что означает успешное завершение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д