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]#