Podsumowanie: tablica dynamiczna
Część sekcji Logika i sterowanie przepływem ścieżki C w Coddy. Lekcja 37 z 63.
Wyzwanie
ŁatwyNapisz program w C, który tworzy tablicę dynamiczną na podstawie danych wejściowych użytkownika, przetwarza dane i demonstruje prawidłowe zarządzanie pamięcią. Twój program powinien:
- Odczytać od użytkownika liczbę całkowitą
nokreślającą liczbę elementów do przechowania - Użyć
malloc()zsizeof(), aby dynamicznie przydzielić pamięć na tablicę zawierającąnliczb całkowitych - Sprawdzić, czy przydzielenie pamięci się powiodło — jeśli nie, wyświetlić
Memory allocation failed!i zakończyć program - Jeśli przydzielenie pamięci się powiedzie, wyświetlić
Array of size [n] created successfully! - Odczytać od użytkownika
nwartości całkowitych i zapisać je w przydzielonej tablicy - Obliczyć i wyświetlić sumę wszystkich elementów w formacie:
Sum: [value] - Znajdź i wyświetl minimalną wartość w formacie:
Minimum: [value] - Policzyć, ile elementów jest większych od średniej, i wyświetlić wynik w formacie:
Elements above average: [count] - Wyświetlić całkowitą ilość użytej pamięci w bajtach w formacie:
Memory used: [bytes] bytes - Użyć
free(), aby zwolnić pamięć - Wyświetlić
Memory successfully freed!, aby potwierdzić prawidłowe zwolnienie pamięci
Pamiętaj, aby dołączyć nagłówek <stdlib.h>, by móc używać malloc() i free(). To wyzwanie sprawdza pełne zrozumienie dynamicznego zarządzania pamięcią — od przydzielania przez użycie aż po prawidłowe zwolnienie.
Na przykład, jeśli dane wejściowe to:
5
12 8 15 3 20Oczekiwany wynik:
Array of size 5 created successfully!
Sum: 58
Minimum: 3
Elements above average: 2
Memory used: 20 bytes
Memory successfully freed!To kompleksowe wyzwanie pokazuje pełny cykl życia dynamicznego zarządzania pamięcią, jednocześnie wykonując użyteczne operacje przetwarzania danych na przydzielonej tablicy.
Spróbuj swoich sił
#include <stdio.h>
#include <stdlib.h>
int main() {
// Wczytaj liczbę elementów
int n;
scanf("%d", &n);
// TODO: Napisz swój kod poniżej
// 1. Przydziel pamięć dla n liczb całkowitych za pomocą malloc()
// 2. Sprawdź, czy przydzielenie pamięci się powiodło
// 3. Wczytaj n liczb całkowitych do tablicy
// 4. Oblicz sumę, znajdź minimum i policz elementy większe od średniej
// 5. Wypisz wyniki i zwolnij pamięć
return 0;
}Wszystkie lekcje w sekcji Logika i sterowanie przepływem
1Podstawy wskaźników
Czym jest wskaźnik?Deklarowanie wskaźnikówOperator pobrania adresu (&)Operator dereferencji (*)Wskaźniki NULLPodsumowanie: podstawy wskaźników4Projekt: Proste narzędzie tekstowe
Przegląd projektuLiczenie znaków2Wskaźniki i tablice
Nazwy tablic jako wskaźnikiElementy tablic — wskaźnikiArytmetyka wskaźnikówPorównywanie wskaźnikówPodsumowanie: przechodzenie po tablicy za pomocą wskaźników5Wskaźniki i funkcje
Przekazywanie przez wartośćPrzekazywanie wskaźników do funkcjiModyfikowanie zmiennych za pomocą wskaźnikówKlasyczny przykład: zamianaPrzekazywanie tablic do funkcjiPowtórka: argumenty wskaźnikowe funkcji8Struktury i wskaźniki
Wskaźniki do strukturOperator strzałki (->)Przekazywanie struktur przez wartośćPrzekazywanie wskaźników do strukturDynamiczna alokacja strukturPodsumowanie: modyfikowanie struktury — wskaźnik11Końcowe zadania powtórkowe
Powtórka: dynamiczne łączenie ciągów znakówPowtórka: tablica strukturPowtórka: licznik częstotliwości słów3Tablice znaków i ciągi znaków
Ciągi znaków jako tablice charZnak końca ciąguWczytywanie ciągu za pomocą scanfUżywanie strlen()Używanie strcpy()Używanie strcat()Używanie strcmp()Podsumowanie: podstawowe funkcje do obsługi ciągów znaków6Zarządzanie pamięcią
Pamięć stosu a stertyAlokacja dynamiczna — malloc()Użycie sizeof() do alokacjiSprawdzanie niepowodzenia alokacjiZwalnianie pamięci za pomocą free()Alokacja za pomocą calloc()Podsumowanie: tablica dynamicznaPoćwicz samodzielnie: Kompilator C online