Problem A - Górna liga
Problem B - Górna liga
Problem C - Dolna liga
Problem D - Zliczanie liczb
Problem E - Trójkątny tekst

 

1974

Problem B - Górna liga


Opis

Ten problem wymaga napisania programu wykonującego trzy zadania, które mogłyby ułatwić użycie linii telekomunikacyjnej.

Pierwsze zadanie polega na tłumaczeniu z jednego zbioru kodów na inny, Drugim zadaniem jest kompresowanie wierszy do mniejszego rozmiaru przez kompresowanie pustych znaków. Ostatnie zadanie polega na grupowaniu tych "skompresowanych" rekordów w większe rekordy. Te trzy zadania mają być wykonane kolejno.

 

Specyfikacja wejścia i wyjścia

Program otrzyma na wejściu wiersz sterujący, za którym wystąpi dowolna liczba wierszy z danymi. Ostatni wiersz będzie zawierał tylko cztery gwiazdki "****". wiersz sterujący będzie posiadał następującą budowę:

 

Pierwsza liczba N określa długość "nowych" rekordów, N < 1000.
Druga liczba M określa liczbę znaków, które powinny być tłumaczone, M ≤ 20.
M kolejnych znaków, które mają być tłumaczone.
M kolejnych znaków, na które mają być tłumaczone te pierwsze M znaków.

 

Na przykład, wiersz sterujący, który zawiera:

 

400 3 ABC $,$

 

oznacza, że program powinien utworzyć 400 znakowe rekordy, gdzie wszystkie litery A i C są zastąpione znakiem "$", natomiast litery B mają być zamienione na ",". Znaki pojawiające się w wierszach danych, których nie ma na liście zamian, mają pozostać niezmienione.

Kompresja polega na zastępowaniu każdego łańcucha z 4 lub więcej spacji przez wyrażenie rozpoczynające się od znaku "&", za którym należy umieścić cyfry liczby określającej liczbę spacji. W ten sposób skompresowana postać przetłumaczonego 80-znakowego wiersza, w którym pierwsze 9 znaków to spacje, następnie litery ABC i reszta to również spacje, wygląda następująco:

 

&9ABC&68

 

Na koniec, po tłumaczeniu i kompresji, wynikowe rekordy powinny być pogrupowane w "nowe" rekordy o długości N przez konkatencję skompresowanych rekordów, aż do zapełnienia "nowego" rekordu. Żaden ze skompresowanych rekordów nie powinien być dzielony pomiędzy dwa "nowe" rekordy. Jeśli nie można już dodać kolejnego rekordu bez przekroczenia rozmiaru N, pozostałe miejsce w "nowym" rekordzie powinno być uzupełnione spacjami.

Wynik działania programu powinien być wysłany do pliku tekstowego o nazwie out.txt. Plik powinien zawierać wiersze o maksymalnej długości 100 znaków. Każdy "nowy" rekord powinien być umieszczany od nowego wiersza.

 



List do administratora Serwisu Edukacyjnego Nauczycieli I LO

Twój email: (jeśli chcesz otrzymać odpowiedź)
Temat:
Uwaga: ← tutaj wpisz wyraz  ilo , inaczej list zostanie zignorowany

Poniżej wpisz swoje uwagi lub pytania dotyczące tego rozdziału (max. 2048 znaków).

Liczba znaków do wykorzystania: 2048

 

W związku z dużą liczbą listów do naszego serwisu edukacyjnego nie będziemy udzielać odpowiedzi na prośby rozwiązywania zadań, pisania programów zaliczeniowych, przesyłania materiałów czy też tłumaczenia zagadnień szeroko opisywanych w podręcznikach.



   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2017 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.