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).