Zadanie 6 W pliku nagłówkowym zdefiniowano projekt struktury: typedef struct { char p1 [16]; char p2 [8]; int liczba; float miara; double wart;} ZASOBY; Następnie wyświetlono parametry adresowe obu obiektów: Kod printf ("Wielkosc ZASOBY: %d\n", sizeof x); printf ("Adres x: %p\n", &x); printf (" x.p1: %p\n", x.p1); printf (" x.p2: %p\n", x.p2); printf ("Adres x.liczba: %p\n", &x.liczba); printf ("Adres x.miara: %p\n", &x.miara); printf ("Adres x.wart: %p\n\n", &x.wart); printf ("Adres tablicy tt: %p\n\n", tt); W programie zadeklarowano zmienną x typu ZASOBY oraz zadeklarowano i zainicjowano tablicę struktur typu ZASOBY: ZASOBY x; ZASOBY tt [] = { {"Kakofonia", "Most", -45, 89.12, 4.0906}, {"Siedlisko", "Dysk", -24, -17.89, -39.4321}, {"Kolinearyzm", "Likier", 18, 67.22, -18.5832}, {"Neandertalczyk", "Laski", -16, -55.56, -43.2165}, {"Instancja", "Pies", 95, 81.72, 888.34}, {"Literatura", "Strony", 56, -15.67, 89.1263}}; Efekt na ekranie Wielkosc ZASOBY: 40 Adres x: 00223740 x.p1: 00223740 x.p2: 00223750 Adres x.liczba: 00223758 Adres x.miara: 0022375C Adres x.wart: 00223760 Adres tablicy tt: 00223650 Rozmiary typów danych (w bajtach): char = 1, int = 4, float = 4, double = 8. A) (waga 30) Dysponując powyższymi danymi napisać w kolumnie Efekt efekt działania kodu z kolumny Kod. Adresy należy wpisywać w pełnym formacie, z przedrostkiem 0x i z użyciem dużych liter A, B, C, D, E, F. Znak o kodzie \0 należy wpisywać w postaci słowa: NUL. Pusty łańcuch znakowy należy wpisać w postaci długiej kreski:. Wartość nieokreśloną (przypadkową) należy oznaczyć linią przerywaną:. Punktacja: za prawidłowy wpis nie będący adresem: jeden punkt obliczeniowy, za nieprawidłowy wpis lub brak wpisu: zero punktów obliczeniowych; za prawidłowy wpis będący adresem: trzy punkty obliczeniowe.
B) (waga 30 + 10) W kolumnie Nm wpisz numer wiersza kodu z kolumny Nr zaś do kolumny Lf wpisz jedną z liter: c, d, g, p, s w taki sposób, że wiersz kodu po wstawieniu tej litery po znaku % wyświetli zawartość wiersza z kolumny Efekt. Punktacja zadania o wadze 30: za prawidłowe wpisanie numeru kodu cztery punkty obliczeniowe, za nieprawidłowe wpisanie numeru kodu - minus jeden punkt obliczeniowy, za brak wpisu - zero punktów obliczeniowych. Punktacja zadania o wadze 10: za prawidłowe wpisanie litery - dwa punkty obliczeniowe, za nieprawidłowe wpisanie litery - minus jeden punkt obliczeniowy, za brak wpisu - zero punktów obliczeniowych. Zadanie 1. W kolumnie z prawej strony dana jest funkcja rozszyfruj. Uruchomiono program zawierający następujący fragment kodu: int ub; ub = rozszyfruj (4, 0); printf ("\nub%d", ub); Wpisać do formularza wiersze, które wyświetliły się na ekranie. int rozszyfruj (int sk, int ay) { int by, iy; printf ("\n[%d]sk%d", ay, sk); if (sk < 2) return 1; else { iy = rozszyfruj (sk - 1, ay + 1); printf ("\n[%d]iy%d", ay, iy); by = rozszyfruj (sk - 2, ay + 1); printf ("\n[%d]by%d", ay, by); return -5 * by + -2 * iy; } }
Nazwisko: Imię: ZESTAW INF 967 029 (kierunek, rok) data (rrrr-mm-dd) Zadanie 2. W kolumnie z prawej strony dana jest funkcja rozszyfruj. Uruchomiono program zawierający następujący fragment kodu: int yz [] = {0, 15, 19, 23, 27, 28, 31, 34, 36, 44, 48, 49, 50, 51, 52, 57, 61, 64, 65, 65, 73}; int sc = rozszyfruj (yz, 57, 0, 21, 0); printf ("\nwynik%d", sc); Wpisać do formularza wiersze, które wyświetliły się na ekranie. int rozszyfruj (int yz [], int ze, int om, int yv, int ij) { int qd = (om + yv) / 2; printf ("\n[%d]om%d", ij, om); printf ("\n[%d]yv%d", ij, yv); printf ("\n[%d]qd%d", ij, qd); if (ze == yz [qd]) return qd; if (ze > yz [qd] && qd < yv) return rozszyfruj (yz, ze, qd + 1, yv, ij + 1); if (ze < yz [qd] && om < qd) return rozszyfruj (yz, ze, om, qd - 1, ij + 1); return -1; } Formularz do zadań 1, 2. Odpowiedzi należy wpisywać kolumnami zgodnie z przykładem na odwrocie własnego formularza. 1 1 (c.d.) 1 (c.d.) 2 2 (c.d.) 2 (c.d.)
Zadanie 6 A, B Nr Kod Efekt 1 printf ("%c", *(tt[1].p1 + 4)); 2 printf ("%p", &tt[3].miara); 3 printf ("%s", &(tt + 3)->p2[0]); 4 printf ("%s", tt[0].p2 + 0); 5 printf ("%d", (*(tt + 5)).liczba); 6 printf ("%p", &tt[0].liczba); 7 printf ("%c", (tt + 0)->p1[2]); 8 printf ("%s", &tt[1].p2[1]); 9 printf ("%d", *((tt + 0)->p2 + 1)); 10 printf ("%g", (tt + 4)->wart); 11 printf ("%s", &(tt + 3)->p1[1]); 12 printf ("%g", (&tt[2])->wart); 13 printf ("%p", &(tt + 0)->p1[8]); 14 printf ("%d", tt[5].p1[3]); 15 printf ("%p", &(*(tt + 0)).liczba); Nr Kod Nm Lf Efekt 1 printf ("% ", *(tt[0].p2 + 3)); 002236F2 2 printf ("% ", *((tt + 4)->p1 + 8)); -15.67 3 printf ("% ", tt[2].p1 + 9); 97 4 printf ("% ", *((tt + 5)->p2 + 5)); 002236DD 5 printf ("% ", &tt[3].p2[1]); 00223694 6 printf ("% ", (tt + 4)->p1[8]); a 7 printf ("% ", tt[0].p2[0]); K 8 printf ("% ", &(*(tt + 3)).wart); 77 9 printf ("% ", tt[0].p1[0]); 002236D9 10 printf ("% ", (tt + 4)->p1 + 2); zm 11 printf ("% ", (&tt[1])->liczba); 002236E8 12 printf ("% ", &(tt + 3)->p2[5]); 4.0906 13 printf ("% ", (*(tt + 0)).wart); -24 14 printf ("% ", &(tt + 1)->miara); t 15 printf ("% ", (tt + 5)->miara); y
Odpowiedź Nr Kod Efekt 1 printf ("%c", *(tt[1].p1 + 4)); l 2 printf ("%p", &tt[3].miara); 002236E4 3 printf ("%s", &(tt + 3)->p2[0]); Laski 4 printf ("%s", tt[0].p2 + 0); Most 5 printf ("%d", (*(tt + 5)).liczba); 56 6 printf ("%p", &tt[0].liczba); 00223668 7 printf ("%c", (tt + 0)->p1[2]); k 8 printf ("%s", &tt[1].p2[1]); ysk 9 printf ("%d", *((tt + 0)->p2 + 1)); 111 10 printf ("%g", (tt + 4)->wart); 888.34 11 printf ("%s", &(tt + 3)->p1[1]); eandertalczyk 12 printf ("%g", (&tt[2])->wart); -18.5832 13 printf ("%p", &(tt + 0)->p1[8]); 00223658 14 printf ("%d", tt[5].p1[3]); 101 15 printf ("%p", &(*(tt + 0)).liczba); 00223668 Odpowiedź II Nr Kod Efekt 1 printf ("% ", *(tt[0].p2 + 3)); 10 p 002236F2 2 printf ("% ", *((tt + 4)->p1 + 8)); 15 g -15.67 3 printf ("% ", tt[2].p1 + 9); 6 d 97 4 printf ("% ", *((tt + 5)->p2 + 5)); 12 p 002236DD 5 printf ("% ", &tt[3].p2[1]); 14 p 00223694 6 printf ("% ", (tt + 4)->p1[8]); 2 c a 7 printf ("% ", tt[0].p2[0]); 9 c K 8 printf ("% ", &(*(tt + 3)).wart); 7 d 77 9 printf ("% ", tt[0].p1[0]); 5 p 002236D9 10 printf ("% ", (tt + 4)->p1 + 2); 3 s zm 11 printf ("% ", (&tt[1])->liczba); 8 p 002236E8 12 printf ("% ", &(tt + 3)->p2[5]); 13 g 4.0906 13 printf ("% ", (*(tt + 0)).wart); 11 d -24 14 printf ("% ", &(tt + 1)->miara); 1 c t 15 printf ("% ", (tt + 5)->miara); 4 c y