Proste zadania z programowania
Zadania z tematów:
Pliki i proste pętle
Zadanie 1
Dany jest plik wejściowy DANE.TXT. W pierwszym wierszu pliku znajdują się 2
liczby: n i m oddzielone spacjami. W każdym z kolejnych n wierszy znajduje
się m liczb (typu Integer) oddzielonych spacjami. Mozna założyć, że liczby
m i n nie przekraczają 100.
Napisz program, który wczyta z pliku wejściowego liczby do tablicy
dwuwymiarowej T : array[1..100,1..100] of Integer. Następnie program powinien
dla każdej kolumny tablicy (o numerze od 1 do m) obliczyc sume wczytanych
do niej liczb. Obliczone sumy należy następnie wypisać do pliku WYNIK.TXT
(tzn. wplik wynikowy powinien zawierac m liczb oddzielonych spacjami)
Zadanie 2
Tak jak powyżej ale z użyciem tablicy 1-wymiarowej
T : array[1..100] od Integer zamiast 2-wymiarowej
Zadanie 3
Są dwa pliki zawierające ciągi liczb oddzielone spacjami: DANE1.TXT i
DANE2.TXT. W każdym pliku liczby są uporządkowane, tzn każda kolejna liczba
jest nie mniejsza od poprzedniej. Napisz program, który do pliku WYNIK.TXT
wypisze wszystkie liczby z obu plików wejściowych ale też uporządkowane.
Zadanie 4
Napisz program, który wczyta z pliku wejściowego dwie liczby. Liczby są
w kolejnych wierszach. Liczby mogą być bardzo długie, ale możesz założyć,
że każda z nich ma nie więcej niż 1000 cyfr (każdą taką liczbę można
reprezentować w pamięci komputera jako tablicę cyfr
L : array[1..1000] of 0..9.
Twój program powinien wypisać do pliku WYNIK.TXT (a) sumę danych liczb i
(b) iloczyn danych liczb.
Listy
Zadanie 5
Napisz program, który utworzy listę jednokierunkową zawierającą liczby
(liczby, które mają być wstawione można wczytać z pliku wejściowego albo
n. wylosować). Następnie napisz funkcję,
function Zawiera (glowa : PElListy; liczba : Integer) : Boolean
która zwróci True gdy lista podana przez wskaźnik do jej pierwszego elementu
zawiera element przechowujący liczbę podaną w parametrze liczba.
W przeciwnym przypadku funkcja zwróci False. Przetestuj działanie
funkcji na utworzonej wcześniej liście.
Zadanie 6 (ciekawe)
Napisz procedurę, która sprawdzi, czy dane dwie listy mają wspólny element,
(NIE chodzi o to czy przechowują tą samą liczbę!)
Zadanie 7 (ciekawsze)
Napisz procedurę, która znajdzie piwerszy taki wspólny element opisany
w poprzednim zadaniu.
Zadanie 8
n osob gra w wyliczanke. Co k-ta osoba odpada. Kto zostanie na koncu?
Napisz funkcje, która dla danych n i k zwróci numer osoby, która zostanie na koncu (osoby sa ponumerowane
od 1 do n, zaczynamy wyliczac od osoby nr 1, tzn gdy n > k to jako pierwsza odpada osoba k).
Funkcja powinna utworzyć jednokierunkowa liste cykliczna dlugosci n i usuwac odpowiednie jej elementy.
Drzewa
Zadanie 9
Dane (np. w pliku) n liczb uporzadkowanych. Zbudowac drzewo BST zawierajace te liczby. Glebokosc drzewa powinna
byc mniejsza niż log n + 1 (tzn. drzewo powinno byc optymalne).
Zadanie 10
Typ PWierzcholek jest wskaznikiem do wierzchołka drzewa binarnego zdefiniowanego jako
TWierzcholek = record
Liczba : Integer;
Lewy, Prawy : ^TWierzcholek;
end;
Natomiast PElListy jest wskaznikiem do elementu listy jednokierunkowej zdefiniowanego jako
TElListy = record
Liczba : Integer;
Nast : ^TElListy;
end;
Napisz funkcje function Liscie (d : PWierzcholek) : PElListy, która dla drzewa danego jako wskaznik d
do korzenia utworzy i zwróci liste zawierajaca liczby przechowywane w kolejnych lisciach (od lewej do prawej). Na przyklad dla drzewa:
7
/ \
9 4
/ \ \
2 1 5
należy zwrócić listę zawierajaca kolejno 2, 1 i 5.