Wskaźnik i tablica dynamiczna
Część sekcji Logika i przepływ programu ścieżki C++ w Coddy. Lekcja 56 z 56.
Wyzwanie
ŁatwyUtwórz program demonstrujący dynamiczne zarządzanie pamięcią poprzez stworzenie elastycznego systemu przechowywania i przetwarzania liczb. To wyzwanie sprawdzi Twoje zrozumienie tablic dynamicznych, alokacji pamięci, manipulowania tablicami i prawidłowego zwalniania pamięci.
Podane zostaną następujące dane wejściowe:
- Liczba całkowita
sizeokreślająca liczbę liczb całkowitych do przechowania - Następnie
sizeliczb całkowitych, które mają zostać zapisane w tablicy dynamicznej
Twój program powinien:
- Odczytać rozmiar z danych wejściowych
- Dynamicznie zaalokować tablicę liczb całkowitych o podanym rozmiarze, używając
new[] - Odczytać liczby całkowite z danych wejściowych i zapisać je w dynamicznie zaalokowanej tablicy
- Obliczyć sumę wszystkich liczb w tablicy
- Znajdź największą wartość w tablicy
- Wyświetlić wyniki w określonym formacie
- Prawidłowo zwolnić pamięć, używając
delete[]
Użyj następującego dokładnego formatu wyjściowego:
Array size: [size]
Sum: [sum_of_all_numbers]
Maximum: [maximum_value]Pamiętaj, że dynamiczna alokacja pamięci pozwala tworzyć tablice, których rozmiar jest określany w czasie działania programu na podstawie danych wprowadzonych przez użytkownika. Użyj new int[size], aby zaalokować tablicę, i uzyskuj dostęp do elementów za pomocą notacji tablicowej array[index]. Gdy skończysz korzystać z tablicy, musisz wywołać delete[] array, aby zwolnić zaalokowaną pamięć i zapobiec wyciekom pamięci. Tablica znajduje się na stercie i będzie istnieć, dopóki jawnie jej nie zwolnisz.
Spróbuj swoich sił
#include <iostream>
using namespace std;
int main() {
// Wczytaj rozmiar tablicy
int size;
cin >> size;
// TODO: Napisz tutaj swój kod
// 1. Dynamicznie przydziel pamięć na tablicę za pomocą new[]
// 2. Wczytaj liczby całkowite i zapisz je w tablicy
// 3. Oblicz sumę wszystkich liczb
// 4. Znajdź największą wartość
// 5. Nie zapomnij zwolnić pamięci za pomocą delete[]
// Wyświetl wyniki (zastąp rzeczywistymi zmiennymi)
cout << "Array size: " << size << endl;
cout << "Sum: " << /* zmienna sum */ << endl;
cout << "Maximum: " << /* zmienna max */ << endl;
return 0;
}Wszystkie lekcje w sekcji Logika i przepływ programu
1Wskaźniki i pamięć
Czym jest wskaźnik?Operator pobrania adresuOperator dereferencjiWskaźniki zeroweWskaźniki i tabliceDynamiczne zarządzanie pamięcią za pomocą „new”Zwalnianie pamięci za pomocą „delete”Podsumowanie — ćwiczenia ze wskaźnikami2Wektory (tablice dynamiczne)
Wprowadzenie do std::vectorTworzenie wektoraDodawanie elementówDostęp do elementówRozmiar wektoraIterowanie za pomocą pętli forPętla for oparta na zakresieUsuwanie elementówPodsumowanie — operacje na wektorach5Projekt: Narzędzie do zarządzania zapasami
Konfiguracja projektuDodawanie i aktualizowanie produktów3Projekt: narzędzie do listy zadań
Przegląd projektuDodawanie zadania6Zbiory (unikalne elementy)
Wprowadzenie do std::setTworzenie zbioru i dodawanie elementówSprawdzanie obecności elementówUsuwanie elementówIterowanie po zbiorzePodsumowanie — unikalne liczby9Końcowe wyzwania
Filtrowanie danych w wektorzeWyszukiwanie wartości w mapieWskaźnik i tablica dynamicznaPoćwicz samodzielnie: Kompilator C++ online