Lista zadań z Pascala nr 4.

Transkrypt

Lista zadań z Pascala nr 4.
Lista zadań z Pascala nr 4.
Zad. 1. Rysunek przedstawia trójkąt zbudowany z liczb.
7
1 8
8 1 0
2 7 4 4
4 5 2 6 5
Napisz program obliczający największą sumę liczb, przez jakie można przejść
po drodze, która zaczyna się w wierzchołku i kończy w pewnym punkcie podstawy.
1) Każdy krok można wykonać albo skośnie w lewo w dół, albo skośnie w prawo
w dół.
2) Liczba wierszy w trójkącie jest większa od 1, ale nie przekracza 100.
3) Wszystkie liczby zapisane w trójkącie są całkowite i mieszczą się pomiędzy
0 i 99.
4) Dane wejściowe znajdują się w pliku tekstowym Input.txt. W pierwszej linii
tego pliku dana jest liczba wierszy w trójkącie, w kolejnych – liczby z poszczególnych wierszy trójkąta. Plik Input.txt z naszym przykładem wygląda
tak:
5
7
38
810
2744
45265
5) Największą sumę należy zapisać, jako liczbę całkowitą, w pliku Output.txt.
Przygotuj odpowiednie pliki testowe. Pewną trudnością w tym zadaniu jest
algorytm. Nietrudno znaleźć jakikolwiek algorytm. Dobry algorytm budujemy wykorzystując tzw. programowanie zachłanne. Główny fragment algorytmu powinien
korzystać na przykład z tablicy pozwalającej na zapisanie w niej liczb z najdłuższego wiersza trójkąta. Proponuję posłużyć się tablicą dynamiczną.
Zad. 2. (Zmodyfikowane zadanie 2 z listy 2 dr Krupickiej.) Histogram długości
słów. Napisz program, który dla pliku tekstowego o danej nazwie, zawierającego
słowa, zapisze w wynikowym pliku tekstowym o danej nazwie histogram długości
tych słów. Dodatkowe ustalenia:
1) Nazwa pliku z danymi jest czytana tak długo aż
a) zostanie znaleziony plik z danymi o takiej nazwie lub
b) nazwa jest napisem pustym (powoduje to zakończenie działania programu).
2) Słowem jest dowolny ciąg znaków ograniczony: spacjami, końcami wierszy,
początkiem lub końcem pliku.
3) Słowa mogą mieć dowolną długość (nawet większą niż 255 znaków, w pliku
może się też znajdować bardzo długa linia, w której np. 250-ty znak jest
pierwszą literą długiego słowa), ale w histogramie słowa o długości większej
od 100 należą do tej samej kategorii.
4) Histogram ma posta ciągu wierszy, każdy wiersz zawiera dwie liczby: długość
słów i liczba słów o tej długości; wiersze mają by posortowane rosnąco względem długości słów. W histogramie nie występują wiersze z długościami słów,
których nie było w danych; długości słów w histogramie i odpowiadające im
liczby wystąpień są umieszczone odpowiednio w dwóch kolumnach.
Zad. 3. Napisz program, który umożliwia prezentowanie list i efektów przeksztaceń
na listach z modułem udostpniajźcym procedury do manipulowania listami. W
module powinny się znaleźć procedury, które
1) tworzą listę danej długości losowych liczb naturalnych < 100,
2) wyświetlają elementy listy,
3) odwracają listę,
4) wstawiają do uporządkowanej listy element we właściwym miejscu,
5) przekształcają daną listę w uporządkowaną korzystając z metody wstawiania.
Zad. 4. Jest to zadanie analogiczne do zadania 2 z listy 7 z programowania. Zaimplementuj algorytm szukania w grafie ścieżki między wskazanymi elementami.
Graf można różnie implementować, ale żeby łatwo testować program, dobrze jest
przyjąć implementację przypominającą prologową. Zgodnie z taką implementacją
graf to tablica krawędzi, z kolei krawędź to rekord złożony z dwóch identyfikatorów
wierzchołków: tego, z którego krawędź wychodzi i tego, do którego trafia. Tak rozumiany graf może być stałą z pascalowym programie. Program powinien zawierać
dwa moduły umożliwiające wykorzystanie kolekcji (zbiorów) zaimplementowanych
na dwa sposoby, z identycznymi interfejsami. W obu modułach kolekcje implementujemy jako listy, a pobierając z nich element bierzemy pierwszy element listy. W
jednym module elementy do kolekcji dodajemy wstawiając je na początek listy, w
drugim – na koniec.
Antoni Kościelski