Задача с динамическим выделением памяти - 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;
}

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

  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
Похожие ответы