Pracownia programowania (C/C++). Zaoczne inżynierskie (INK). Ćwiczenie 4.
Zagadnienia: Wskaźniki funkcji. Operacje z wykorzystaniem tablic i wskaźników funkcji.
Sortowanie tablic z wykorzystaniem funkcji qsort. Łańcuchy (teksty) jako tablice znaków.
Tablice wskaźników na łańcuchy. Dynamiczne tablice na dynamiczne łańcuchy. Sortowanie tablic łańcuchów.
1. Zadeklarować typ tablicowy typedef double tx[N][2]. Opracować funkcję, która wyznacza wartości funkcji double f(double) w przedziale [min, max] dla N punktów postaci
xi = min + i*d, gdzie d=(max-min) / (N-1) oraz i=0,1,...,N-1 (N – stała). Obliczone elementy xi, f(xi) powinny być zapamiętane w tablicy T typu tx w sposób następujący: T[i][0] = xi oraz T[i][1] = f(xi). 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].
2. W programie głównym utworzyć dynamicznie tablicę złożoną z N elementów typu double.
Zainicjować tablicę losowymi liczbami rzeczywistymi należącymi do przedziału
[-10.2, 15.3). Wykorzystując standardową funkcję qsort opracować funkcję, która sortuje elementy tablicy rosnąco. Wyprowadzić zawartość tablicy na ekran.
3. Zdefiniować tablicę złożoną z N elementów typu char. Zainicjować tablicę losowymi znakami o kodach należących do przedziału [65,127). Wykorzystując standardową funkcję qsort opracować funkcję, która sortuje elementy tablicy według kodów ASCII. Wyprowadzić zawartość tablicy na ekran.
4. Utworzyć dynamicznie dwuwymiarową tablicę liczb typu int złożoną z m wierszy i n kolumn, gdzie m i n są wczytywane z klawiatury. Wykorzystać operator new. Adres początku tablicy zapamiętać w zmiennej int **A. Zadanie zrealizować tworząc dynamicznie tablicę złożoną z m wskaźników na dynamiczne tablice n liczb całkowitych. Zainicjować utworzone tablice losowymi liczbami całkowitymi należącymi do przedziału [-10,10].
Opracować funkcję sortującą elementy w wierszu o numerze i, gdzie 0<= i <=m.
Wyprowadzić zawartość tablicy wierszami na ekran. Przed zakończeniem programu zwolnić pamięć. Wyprowadzić stan pamięci (coreleft) przed alokacją tablicy, po alokacji oraz po zwolnieniu pamięci.
5. Zdefiniować dwuwymiarową tablicę łańcuchów char t[][20] zainicjowaną dowolnymi tekstami, np. char t[][20]={”jeden”,”dwa”,”trzy”, ... }. Opracować funkcje:
a) wyprowadzającą zawartość tablicy na ekran;
b) sortującą elementy tablicy według kodów ASCII za pomocą funkcji qsort.
6. Zadeklarować typ td określający tablicę złożoną z 20 elementów typu char. Utworzyć dynamicznie N tablic typu td, gdzie N jest stałą, i zapamiętać adres początku w zmiennej char (*T)[20]. Wczytać do utworzonych tablic N łańcuchów. Posortować łańcuchy za pomocą funkcji qsort.
7. Zdefiniować zainicjowaną tablicę wskaźników na teksty char *t[]={”Ala”,”Ola”,”Ewa”}.
Posortować elementy tablicy za pomocą funkcji qsort.
8. Utworzyć dynamicznie tablicę złożoną z n wskaźników na łańcuchy, gdzie n jest wczytywane z klawiatury, i zapamiętać adres początku tablicy w zmiennej char **wt.
Wczytywać łańcuchy z klawiatury do bufora. Dla każdego wczytanego łańcucha przydzielić dynamicznie pamięć na stercie i przekopiować zawartość bufora w przydzielony obszar pamięci. Adres początku łańcucha wpisać do elementu wt[i], i=0,1,...,n-1. Posortować elementy tablicy za pomocą funkcji qsort.