4 marca 2010r

Transkrypt

4 marca 2010r
Laboratorium 2
Zadanie 1
Zaprojektować i zaimplementować funkcję przyjmującą tablicę liczb całkowitych, a zwracającą
maksymalną wartość z elementów tej tablicy. Przetestować za pomocą kodu:
unsigned size = 5;
int * tab = new int [size];
tab[0] = 3; tab[1] = 5; tab[2] = 2; tab[3] = -1; tab[4]=0;
cout << ”Max wartosc w tablicy to:” << tab_max(tab,size) << endl;
// Max wartosc w tablicy to: 5
Zaprojektować, zaimplementować i przetestować analogiczne funkcje wyznaczające wartość
minimalną, sumę elementów oraz najmniejszą wartość nieujemną (jeśli brak elementów
nieujemnych to wartość 0).
Zadanie 2
Zaprojektować i zaimplementować funkcję przyjmującą całkowitą liczbę dodatnią n oraz
przydzielającą pamięć dla n-wierszowej trójkątnej tablicy dynamicznej. Funkcja powinna wypełnić
tą tablicę elementami trójkąta Pascala oraz zwrócić wskaźnik na pierwszy element tej tablicy.
Trójkąt Pascala:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
Elementy w trójkącie Pascala tworzymy w następujący sposób:
• pierwszy i ostatni element w każdym wierszu to 1,
• pozostałe elementy są równe sumie dwóch elementów znajdujących się w trójkącie ponad
danym elementem.
const unsigned size = 100;
unsigned ** t_pascala = pascal(size);
Zadanie 3
Zaprojektować i zaimplementować funkcję przyjmującą trójkątną tablicę (np. wypełnioną
elementami trójkąta Pascala) i wypisującą tą tablicę na standardowe wyjście w postaci „choinki”
(tak jak jest przedstawione w zadaniu 2).
Zaprojektować i zaimplementować drugą analogiczną funkcję, która wypisze tablicę jako choinkę,
jednak podczas wypisywania zastąpi liczby parzyste znakiem '.' a liczby nieparzyste znakiem „#”.
wyswietl1(t_pascala,size);
wyswietl2(t_pascala,size);
Zadnaie 4
Napisać funkcję wyznaczającą statystyki dla poszczególnych wierszy trójkąta Pascala. Funkcja
powinna przyjmować trójkątną n-wierszową tablicę oraz wskaźnik do funkcji wyznaczającej
statystykę dla pojedynczego wiersza (wykorzystać funkcje z zadania 1). Funkcja powinna zwrócić
tablicę n-elementową. Tablica powinna zawierać wartości zwrócone przez przekazaną funkcję dla
poszczególnych wierszy.
Np. dla 4-wierszowej tablicy oraz funkcji tab_max:
1
11
121
1331
funkcja powinna zwrócić tablicę o wartościach: 1 1 2 3
int * st;
st = stat(t_pasca, size, tab_max);
for(int i = 0; i < size; ++i) cout << st[i] << " ";
// 1 1 2 3
int * st2;
st2 = stat(t_pasca, size, tab_min);
for(int i = 0; i < size; ++i) cout << st2[i] << " ";
// 1 1 1 1
Zadanie 5
Zaprojektować i zaimplementować funkcję porównującą leksykograficznie dwa ciągi znakowe. W
przypadku gdy pierwszy jest większy funkcja powinna zwrócić wartość wartość dodatnią, gdy są
równe wartość 0 a gdy drugi jest większy wartość ujemną.
const char * t1 = ”Ala ma kota”;
const char * t2 = ”Ala ma kotka”
const char * t3 = ”Ala ma”;
cout << porownaj(t1,t2) << ' ' << porownaj(t2,t3) << ' ' <<porownaj(t1,t1);
// np. -1 1 0
// wartosci mog by inne
Zadanie 6
Zaprojektowa i zaimplementowa funkcj wyznaczaj c d ugo
a cucha znakowego.
const char * t = ”Ala ma kota”;
cout << dlugosc(t);
//11
Zadanie 7
Zaprojektowa± i zaimplementowa funkcj doklejajbc n znaków na poczstkuacucha znakowego.
Funkcja powinna przyjmowa liczbÜ znaków do doklejenia, znak który ma byõ wstawiany oraz
a`cuch wzorcowy, a zwracaÿ nowy Eacuch znakowy.
const char * t = ”Ala ma kota”;
cout << doklej(t,4,'*');
// ****Ala ma kota
Zadanie 8
Zaprojektowaâ i zaimplementowa funkcj ecz´c dwa cigi znakowe za pomocdodatkowego
symbolu. Funkcja powinna przyjmowa dwa cigi znakowe oraz symbol, którym maj by
po
czone, a zwracaci¿g znakowy b.dacy rezultatem jej dzia«ania.
const char * t1 = ”Ala”;
const char * t2 = ”kota”;
cout << polacz(t1,t2,'*');
// Ala*kota
Zadanie 9
Zaprojektowa± i zaimplementowa funkcj kopiujcb ci—g znaków. Funkcja powinna przyjmowa˜
wzorcowy cig znaków a zwraca jego kopi.
const char * t1 = ”Ala”;
const char * t2 = kopiuj(t1);
t1 = ”Ma”;
cout << t2;
// Ala
Zadanie 10
W funkcji main odczyta ze standardowego wej cia zestaw ci gów znaków do momentu gdy
uytkownik poda cig znaków „END”. Odczytane cigi znakowe umieszczaww tablicy statycznej
(data_tab). Maksymalna liczba ci•gów znakowych to 100. Zadanie wykona wedug nastpujcego
schematu wykorzystujDc funkcje utworzone w poprzednich zadaniach.
1. Utworzy' statyczn tablicÊ znaków (wielko 255) peni c¾ funkcj÷ bufora (buf).
2. Odczyta ze standardowego wej~cia do bufora cig znaków.
3. WyznaczyÜ dugoL ci‚gu, utworzy( dynamiczn tablic znakow (tab), przydzieli dla niej
pami•î i przekopiowak do tej tablicy odczytany ci[g znaków.
4. WstawiÞ utworzonŒ tablic znakowp do tablicy statycznej (data_tab).
Zadanie 11
Dane odczytane w zadaniu 10 wypisa w postaci tabeli w nastpujcy sposób:
1. Jak argumenty wywoania programu przyjÞ nagŠówki kolumn.
2. Dane w kaÌdej kolumnie wyrównado tej samej udgoci doÇczajc na pocz•tku
odpowiedni liczb kropek.
3. Poszczególne kolumny oddzieliî znakiem #.
Sformatowane dane mogÌ na przykad wygl.d aÿ w nastNpujŸcy sposób:
#....Imie#.Nazwisko#........................E-mail#
#....Anna#Wawszczak#[email protected]#
#Grzegorz#Michalski#[email protected]#