LISTA 2

Transkrypt

LISTA 2
Lista zadań nr 2
W języku programowania C napisać program, który
(7) (a) szyfruje podany tekst zadanym szyfrem (szyfr postaci f (x) = ax + b),
(b) odszyfrowuje tekst, gdy znamy szyfr (f (x) = ax + b),
(c) łamie szyfr przy założeniu, że najczęściej występującą literą w tekscie jest e, a drugą
co do częstości występowania jest litera t,
(8) wykorzystując operacje na bitach, mnoży daną liczbę naturalną przez 8,
(9) wykorzystując operacje na bitach, sprawdza parzystość danej liczby naturalnej.
(10) Kodujemy grupy krwi jako ciągi zer i jedynek długości trzy: np. AB+ = 111,
A− = 100, B+ = 011. Wykorzystując operacje na bitach napisać program, który
(a) dla danej grupy krwi x wypisze wszystkie grupy krwi y spełniające warunek: osoba
posiadająca grupę krwi y może być dawcą krwi dla osoby posiadającej grupę x,
(b) dla danej grupy krwi x wypisze wszystkie grupy krwi y spełniające warunek: osoba
posiadająca grupę krwi x może być dawcą krwi dla osoby posiadającej grupę y.
(11) Wykorzystując wskaźniki, napisać funkcję, która zamienia miejscami dwie liczby
całkowite a,b (tzn. jeśli przed wykonaniem funkcji zmienna a miała wartość np. 3, a zmienna
b - 5, to po jej wykonaniu zmienna a powinna mieć wartość 5, a b - 3).
Czy można napisać taką funkcję w języku C nie używając wskaźników?
(12) Przypuśćmy, że mamy zadeklarowane zmienne
int a[10]; int *pa; int x;
Czy następujące instrukcje są poprawne (odpowiedź uzasadnić). Jeśli są poprawne to co
oznaczają.
(a) x=*pa;
(b) pa=a;
(c) pa++;
(d) a=pa;
(e) a++;
(13) Napisz program, który w danej tablicy liczb całkowitych wyszuka element największy. Wszędzie gdzie to jest możliwe wykorzystaj wskaźniki.
(14) Napisz funkcję void dopisz(char *p,char *q), która dopisuje ciąg znaków q do ciągu
znaków p.
(15) Wykorzystując struktury zdefiniuj dodawanie, mnożenie oraz dzielenie liczb zespolonych.
1