Zadania na laboratorium, część 3

advertisement
Programowanie i metody numeryczne — laboratorium, część 3
3
3.1
Tablice
Wstęp
Zadanie 3.1.1. Napisz program, który definiuje dwie tablice zmiennych typu int długości 20, a następnie
wypełnia pierwszą z nich kolejnymi liczbami naturalnymi zaczynając od 1, a drugą zerami. Na koniec program
powinien wypisać zawartość tablic na ekran.
Zadanie 3.1.2. W powyższym zadaniu spróbuj wypełnić więcej elementów pierwszej tablicy, aniżeli wynosi jej
zadeklarowana długość, np. 25, 40, 70, 1000, 10000, 100000. Co się wówczas stanie?
Zadanie 3.1.3. Napisz procedurę wczytującą trzy zmienne a, b, c, zmieniający wartości zmiennych a i b na
a := ca,
b := b/c.
Napisz program demonstrujący działanie procedury.
Zadanie 3.1.4. Napisz procedurę wczytującą dwie tablice typu int o tej samej długości, zapisującą do pierwszej
z nich sumę kolejnych elementów obu tablic. Napisz program demonstrujący działanie procedury.
Zadanie 3.1.5. Napisz procedurę, która jako argument przyjmuje napis i wyświetla kody odpowiadające znakom
zawartym w tym napisie.
3.2
Wczytywanie i wypisywanie
Zadanie 3.2.1. Napisz procedurę
void zapisz_tab ( string nazwa_pliku , const int * tab , unsigned int n );
która zapisze do pliku podaną tablicę o długości n.
Zadanie 3.2.2. Napisz procedurę
void s p r a w d z _ i _ z l i c z _ e l e m e n t y ( string nazwa_pliku , unsigned int & n );
która sprawdzi, czy z podanego pliku można wczytać tablicę elementów typu int. Jeśli tak, w zmiennej n należy
zwrócić długość tej tablicy, jeśli nie to trzeba zwrócić 0.
Zadanie 3.2.3. Napisz procedurę
void w c z y t a j _ t a b _ z _ p l i k u ( string nazwa_pliku , int * tab , unsigned int n );
która wczyta tablicę do zmiennej tab długości n z podanego pliku.
Zadanie 3.2.4. Używając szablonów, popraw funkcje z powyższych zadań, tak aby mogły one przyjmować tablice
elementów dla dowolnego, wybranego typu.
3.3
Operacje
Zadanie 3.3.1. Napisz program, który generuje tablicę losowych liczb całkowitych z wybranego zakresu do pliku.
Program powinien przyjmować nazwę pliku, dolne i górne ograniczenie zakresu liczb oraz długość tablicy.
Zadanie 3.3.2. Napisz procedurę
bool z n a j d z _ w _ t a b ( int szuk , int & poz , const int * tab , int n )
która sprawdza, czy w podanej tablicy znajduje sie liczba szuk. Jeśli tak, funkcja zwraca wartość true i w poz
zapisuje jej pozycję w tablicy (jeśli liczba wystąpi wiele razy, najmniejszy indeks). W przeciwnym wypadku
funkcja powinna zwrócić wartość false i ustawić poz na -1.
1
Zadanie 3.3.3. Napisz program, który wczyta tablicę z pliku podanego przez użytkownika, a następnie korzystając z powyższej funkcji wypisze te liczby {0, 1, . . . , 1000}, które znajdują się we wczytanej tablicy. Na tej
podstawie sprawdź, w jaki sposób czas działania powyższej procedury zależy od wielkości tablicy.
Zadanie 3.3.4. Napisz program, który posortuje tablicę z pliku podanego przez użytkownika metodą sortowania
przez wybieranie. Metoda ta polega na wybraniu z tablicy elementu najmniejszego i przestawieniu go na pierwsze
miejsce, a następnie wykonaniu tej samej operacji na tablicy bez pierwszego elementu, itd., aż do uzyskania
tablicy jednoelementowej. Operację sortowania umieść w osobnej procedurze. Oceń czas działania metody w
zależności od wielkości tablicy.
Zadanie 3.3.5. Powtórz powyższe zadanie zmieniając podejście, tzn. iteracyjnie zamiast rekurencyjnie lub odwrotnie. Oceń czas działania w zależności od wielkości tablicy.
2
Download