single
Динамічне Виділення Пам'яті для Масиву
Свайпніть щоб показати меню
Перш ніж розглянути, чому динамічне виділення пам'яті є необхідним, коротко згадаємо характеристики статичних і динамічних масивів:
Статичний масив
- Фіксований розмір: після оголошення розмір статичного масиву залишається незмінним і не може бути змінений під час виконання програми;
- Виділення пам'яті під час компіляції: пам'ять для статичного масиву виділяється на етапі компіляції.
Динамічні масиви
- Масштабованість: динамічні масиви дозволяють змінювати розмір під час виконання програми, забезпечуючи гнучкість для адаптації до змінних вимог;
- Виділення пам'яті під час виконання: пам'ять для динамічних масивів виділяється під час виконання програми.
Обмеження статичного підходу
Розглянемо програму, яка пропонує користувачу ввести оцінки продуктивності за кожен день поточного місяця.
На жаль, цього не можна досягти за допомогою статичного масиву:
main.cpp
12345678910#include <iostream> #include <ctime> int main() { std::time_t currentTime = std::time(nullptr); int day_passed = std::localtime(¤tTime)->tm_mday; int arr[day_passed]; std::cout << day_passed << std::endl; }
Це призведе до помилки компіляції, оскільки day_passed не є константним виразом — він залежить від значення поточного дня місяця під час виконання програми.
Тому замість статичного масиву необхідно використовувати динамічно виділений масив.
Swipe to start coding
Уявіть, що ви працюєте метеорологом і вам потрібно аналізувати показники температури протягом дня.
Ви будете працювати з вказівниками та функціями, які оперують динамічно виділеними масивами даних.
- Ініціалізуйте змінні
sumзначенням 0,minTemp— першим елементом масиву, аmaxTemp— також першим елементом масиву. - Використовуйте цикл
tempsз індексомforвід 0 доiдля проходження по масивуhours. - Для кожного елемента
temps[i]додайте його значення доsum. - Якщо
temps[i]менше заminTemp, присвойтеtemps[i]зміннійminTemp. - Якщо
temps[i]більше заmaxTemp, присвойтеtemps[i]зміннійmaxTemp. - Обчисліть середню температуру, поділивши
sumнаhours, і збережіть результат у зміннійaverage. - Виведіть значення
minTemp,maxTempтаaverageу консоль.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат