Итоги: Динамический массив
Часть раздела Logic & Flow путешествия по C на Coddy — урок 37 из 63.
Задание
ЛегкоНапишите программу на языке C, которая создает динамический массив на основе пользовательского ввода, обрабатывает данные и демонстрирует правильное управление памятью. Ваша программа должна:
- Считать целое число
nот пользователя, представляющее количество элементов для хранения - Использовать
malloc()сsizeof()для динамического выделения памяти под массив изnцелых чисел - Проверить, было ли выделение памяти успешным — если оно не удалось, вывести
Memory allocation failed!и завершить программу - Если выделение памяти прошло успешно, вывести
Array of size [n] created successfully! - Считать
nцелых чисел от пользователя и сохранить их в выделенном массиве - Вычислить и вывести сумму всех элементов в формате:
Sum: [value] - Найти и вывести минимальное значение в формате:
Minimum: [value] - Подсчитать, сколько элементов больше среднего значения, и вывести в формате:
Elements above average: [count] - Вывести общий объем использованной памяти в байтах в формате:
Memory used: [bytes] bytes - Использовать
free()для освобождения памяти - Вывести
Memory successfully freed!для подтверждения правильной очистки
Не забудьте включить заголовочный файл <stdlib.h> для использования malloc() и free(). Эта задача проверяет ваше полное понимание управления динамической памятью: от выделения и использования до правильной очистки.
Например, если входные данные:
5
12 8 15 3 20Ваш вывод должен быть следующим:
Array of size 5 created successfully!
Sum: 58
Minimum: 3
Elements above average: 2
Memory used: 20 bytes
Memory successfully freed!Эта комплексная задача демонстрирует полный жизненный цикл управления динамической памятью при выполнении значимых операций по обработке данных в выделенном массиве.
Попробуйте сами
#include <stdio.h>
#include <stdlib.h>
int main() {
// Считать количество элементов
int n;
scanf("%d", &n);
// TODO: Напишите свой код ниже
// 1. Выделить память для n целых чисел с помощью malloc()
// 2. Проверить, была ли аллокация успешной
// 3. Считать n целых чисел в массив
// 4. Вычислить сумму, найти минимум, подсчитать количество элементов выше среднего
// 5. Вывести результаты и освободить память
return 0;
}Все уроки раздела Logic & Flow
1Основы указателей
Что такое указатель?Объявление указателейОператор взятия адреса (&)Оператор разыменования (*)Указатели NULLИтоги: Основы указателей4Проект: Простая текстовая утилита
Обзор проектаПодсчет символов2Указатели и массивы
Имена массивов как указателиЭлементы массива — указателиАрифметика указателейСравнение указателейИтоги: Обход массива через указатели5Указатели и функции
Передача по значениюПередача указателей в функцииИзменение переменных через указателиКлассический пример: SwapПередача массивов в функцииИтоги: указатели как аргументы функций8Структуры и указатели
Указатели на структурыОператор «стрелка» (->)Передача структур по значениюПередача указателей на структурыДинамическое выделение памяти для структурИтоги: Изменение структур через указатели11Итоговые задачи на повторение
Повторение: динамическая конкатенация строкПовторение: массив структурПовторение: счетчик частоты слов3Символьные массивы и строки
Строки как массивы charНуль-терминаторВвод строк с помощью scanfИспользование strlen()Использование strcpy()Использование strcat()Использование strcmp()Итоги: основные строковые функции