• Nie Znaleziono Wyników

Informatyka 1. INF & EIT.

N/A
N/A
Protected

Academic year: 2021

Share "Informatyka 1. INF & EIT."

Copied!
1
0
0

Pełen tekst

(1)

Informatyka 1. INF & EIT. Ćwiczenie 9.

Dynamiczna alokacja pamięci Zagadnienia:

tworzenie zmiennych dynamicznych na stercie i przypisywanie ich adresów wskaźnikom (funkcje alokacji pamięci: malloc, calloc; operator new; funkcja zwalniania pamięci free i operator delete); wyprowadzanie wartości wskaźników (%p); tablice dynamiczne o wymia- rach wczytywanych z klawiatury; dostęp do tablic za pomocą wskaźników.

1. Zdefiniować wskaźniki na zmienne typu char, int, double. Za pomocą:

a) funkcji alokacji pamięci malloc, b) operatora new,

utworzyć zmienne dynamiczne typu char, int, double i zapamiętać ich adresy w odpowiednich wskaźnikach. Wczytać z klawiatury dane do utworzonych zmiennych dynamicznych. Wyprowadzić wartości wskaźników oraz zawartości zmiennych wskazywanych. Wykorzystując funkcję free dla a) i operator delete dla b) zwolnić pamięć przydzieloną zmiennym.

2. Utworzyć tablicę dynamiczną złożoną z n elementów typu int, gdzie n jest zmienną wczytywaną z klawiatury. Zadanie zrealizować za pomocą:

a) funkcji alokacji pamięci malloc, b) operatora new.

Zainicjować tablicę losowymi liczbami całkowitymi należącymi do zbioru {-1, 0, 1}.

Wyprowadzić zawartość tablicy na ekran. Obliczyć średnią arytmetyczną elementów tablicy. Zwolnić przydzieloną pamięć dla a) i b).

3. Opracować program, który utworzy dynamicznie tablicę typu char o rozmiarze n wczyty- wanym z klawiatury.

a) Utworzyć tablicę t1 za pomocą operatora new.

b) Utworzyć tablicę t2 za pomocą funkcji malloc.

Jeżeli operacja przydziału pamięci dla t1 i t2 zakończyła się pomyślnie (wskaźniki t1 i t2 są różne od NULL), to zainicjować tablicę t1 losowymi znakami o kodach należących do przedziału [65,90]. Wyprowadzić zawartość tablicy t1 na ekran. Przekopiować tablicę t1 do t2 wykorzystując standardową funkcję memmove lub memcpy. Wyprowadzić zawar- tość tablicy t2 na ekran. Przed zakończeniem programu zwolnić pamięć przydzieloną dla tablic t1 i t2.

4. Opracować funkcje:

a) tworzącą dynamiczną tablicę 2-wymiarową typu int A[nw][nk] o liczbie wierszy i liczbie kolumn wczytywanych do zmiennych int nw, nk; funkcja typu int** zwraca adres początku tablicy dwuindeksowej; zadanie zrealizować tworząc dynamiczną tablicę złożoną z nw wskaźników na dynamiczne tablice nk liczb całkowitych; funkcja zwraca NULL jeśli alokacja nie powiodła się; prototyp funkcji: int **pdw(int nw, int nk);

b) zwalniającą pamięć przydzieloną dla tablicy dwuindeksowej w sposób określony w a);

funkcja zwraca wartość A=NULL; prototyp funkcji: int **usun_dw(int **A, int nw).

W programie głównym utworzyć dynamiczną tablicę dwuwymiarową o wymiarach nw i nk, gdzie nw i nk są wczytywane z klawiatury. Zainicjować tablicę losowymi wartościami i wyprowadzić na ekran. Zwolnić przydzieloną pamięć.

Cytaty

Powiązane dokumenty

Opracować program umożliwiający przekazanie do programu trzech liczb typu int za pomocą argumentów funkcji main(int argc, char *argv[]), gdzie argc – liczba

Nie zmieniając zawartości tablicy struktur i nie kopiując jej do innej tablicy zmodyfi- kować tablicę indeksów w taki sposób, aby kolejne pozycje w tablicy ind określały

Opracować program, który zapisze do pliku binarnego dane w formacie: rozmiar danej typu tdana (zmienna typu unsigned), liczba danych w pliku (zmienna typu long), ciąg danych

Opracować funkcję, która wyznacza wszystkie liczby pierwsze z przedziału [2,N] w oparciu o metodę „sita” (opis: wpisać wszystkie liczby z przedziału [2,N] do tablicy t[N+1],

Napisać program, który losuje k cyfr liczby binarnej do tablicy unsigned char dane[N], gdzie 1<= k <= N, a następnie oblicza wartość dziesiętną liczby.. Zadanie zrealizować z

przydzielić dynamicznie pamięć zmiennym typu char, int, long, float, double oraz zapamię- tać ich adresy w odpowiednich wskaźnikach. W przypadku, gdy alokacja pamięci powiedzie

a) tworzącą dynamiczną tablicę 2-wymiarową typu int A[nw][nk] o liczbie wierszy i liczbie kolumn wczytywanych do zmiennych int nw, nk; funkcja typu int** zwraca adres po-

Prototyp funkcji: void oblicz(double min, double max, int n, tx T, wskaźnik_funkcji). W programie głównym wykonać obliczenia dla funkcji sin w przedziale [-pi/2, pi/2].