Informatyka II lab6

Transkrypt

Informatyka II lab6
Informatyka II, kier. E-a, sem.III, 2016/2017
Wskaźniki w języku C
Ćwiczenie laboratoryjne nr 6
W ramach przygotowania teoretycznego należy zapoznać się z następującymi opisami wskaź ników:
Wykłady_5_6 oraz materiał dydaktyczny Wskazniki_i_dynamiczna_alokacja_s3.pdf ( strony 1-15) .
I. Opisać następujące pojęcia
a) wskaźnik
b) operator adresowy
c) operator dereferencji ( pojęcia Lwartość i Rwartość)
II. Uruchomić następujące instrukcje i opisać w komentarzach działanie poszczególnych
konstrukcji programowych związanych ze wskaźnikami.
1. int a[8]={0, -1, 2, -3, 4, 5, 6, 7, 8},x=5,y=10;;
2. int *px,*py,*pa;
3. double *pd;
4. px=&x;py=&y;
5. y=*px; printf("\n y=%d", *px);
6. x=*py; printf("\n x=%d",x);
7. py=px; printf("\n py=%p", py);
8. *px=20;
9.*px=*py+5;
Opisać w komentarzach działanie następujących instrukcji (tablice, wskaźniki i arytmetyka wskaźnikowa)
10. pa=a;
11.*(pa+1)=10;
12. pa[2]=15;
13. pa++;
14. pa=pa-1;
15 *pa++=30;
16. *++pa=35;
III. Część programowa
1. a) Zdefiniować zmienne x typu int oraz y typu double i zmienne wskaźnikowe px typu wskaźnik do int oraz
py typu wskaźnik do double. Wczytać z klawiatury wartości x i y przy użyciu wskaźników, następnie wydrukować
bezpośrednio i przy użyciu wskaźników.
b) Zdefiniować tablicę tab typu double oraz wskaźnik pd do typu double. Wczytać i wydrukować tablicę tab
z użyciem pd.
2. Napisać funkcję zamien wymieniającą swoje argumenty typu int, następnie wywołać ją w funkcji main() dla
dwóch par argumentów.
3. Napisać funkcję wczytTab wczytującą tablicę oraz funkcję minMax wyszukującą w tablicy liczb typu int
wartość min przy użyciu wskaźnika. Funkcję minMax wywołać w main() i wydrukować wynik.
4.a) Alokować tablicę dynamiczną a[m][n] typu double przy zastosowaniu tablicy wskaźników.
b) Alokować tablicę dynamiczną b[m][n] typu int przy użyciu wskaźnika do tablicy dwuwymiarowej.
Wczytać i wydrukować obie tablice.
5. Zdefiniować wskaźnik do funkcji (*pfun)( double x) i wykorzystać do wywołania funkcji standardowych
sin(x) i cos(x).
Zadanie domowe
1. Wczytać tablicę tab1 liczb typu double i napisać funkcje sortTabAsc i sortTabDsc sortujące tę tablicę
przy użyciu wskaźników
a) niemalejąco przy zastosowaniu algorytmu sortowania bąbelkowego (sortTabAsc)
b) nierosnąco stosując algorytm prostego wybierania (sortTabDsc)
Wydrukować tablice przed sortowaniem i po sortowaniu.
2. Uruchomić program umożliwiający sterowanie typem sortowania przy użyciu wskaźnika do funkcji realizującej
porównanie( *compare). ( Wykłady 5_6).