XV Konkurs Informatyczny Politechniki Radomskiej

Transkrypt

XV Konkurs Informatyczny Politechniki Radomskiej
XV Konkurs Informatyczny Politechniki Radomskiej
dla uczniów szkół ponadgimnazjalnych
Zadania etapu I (termin nadsyłania prac do 31.12.2008 r.)
Zadanie 1 - Binarny labirynt
Proszę napisać program, którego zadaniem będzie sprawdzanie możliwości przejścia
labiryntu zawartego w kwadratowej mapie o boku 4. Należy zastosować się do następujących
wytycznych:
§ mapę labiryntu uzyskuje się poprzez konwersję liczby 16-bitowej bez znaku z systemu
dziesiętnego do dwójkowego,
§ wszystkie liczby, na postawie których mają być utworzone labirynty zawarte są
w pliku tekstowym DANE.IN,
§ w pierwszym wierszu pliku znajduje się liczba naturalna n (n<100) oznaczająca liczbę
pozostałych wierszy w pliku (każdy z nich zawiera liczbę, która powinna zostać
zamieniona w labirynt),
§ mapę tworzymy zapisując kolejne bity liczby kolejno wierszami oraz od lewej do
prawej, tworząc planszę o wymiarach 4x4,
§ drogi szukamy od lewego górnego rogu (najbardziej znaczący bit) do prawego
dolnego rogu (najmniej znaczący bit),
§ cyfra 1 oznacza możliwość przejścia, 0 – brak takiej możliwości,
§ jeżeli zapis dwójkowy liczby jest krótszy niż 16 cyfr uzupełniamy z przodu
nieznaczącymi zerami,
§ przejścia możliwe są poziomo, pionowo oraz ukośnie,
§ wyniki powinny zostać zapisane w pliku tekstowym WYNIKI.OUT,
§ wynikiem jest słowo „tak”, jeżeli przejście labiryntu jest możliwe, ”nie” –
w przeciwnym przypadku.
Przykład:
Dla przykładowego pliku DANE.IN o zawartości:
3
65535
0
34913
odpowiedź, zawarta w pliku WYNIKI.OUT, powinna wyglądać następująco:
tak
nie
tak
W pierwszym przypadku mapa składa się z samych jedynek, zatem możliwe są
wszystkie przejścia, w drugim – z samych zer, czyli nie istnieje żadna możliwa droga,
w trzecim przypadku postać binarna liczby jest następująca:
1000100001100001
zatem mapa ma postać:
1000
1000
0110
0001
możliwe jest zatem przejście tego labiryntu.
Zadanie 2 – Wydawanie reszty
Proszę napisać program, którego zadaniem będzie symulacja działania maszyny
wydającej kawę. Maszyna przyjmuje monety (5zł, 2zł, 1zł, 50 gr, 10 gr) i wydaje resztę.
Należy zaimplementować w wybranym języku programowania algorytm, który będzie
symulował działanie tej maszyny. Należy zastosować następujące założenia:
§
§
§
§
§
§
§
§
§
stan monet w automacie program ma pobierać z pliku tekstowego MONETY.IN, który
ma następującą postać (pierwsza kolumna zwiera nominały a druga liczbę ich sztuk):
5 zł
20
2 zł
50
1 zł
40
50 gr 100
20 gr 20
10 gr 50
cena kawy wynosi 1.40 zł,
automat ma wydawać resztę w taki sposób, który wymaga jak najmniejszej ilości
monet,
program ma uwzględniać stan monet w automacie,
w przypadku braku monet do wydawania program ma drukować odpowiedni
komunikat,
stan monet w automacie ma być zmieniany po każdym wydaniu kawy i zapisywany
w pliku wejściowym,
dane wejściowe do programu informujące o liczbie wrzuconych monet do automatu,
mają być wprowadzane z klawiatury w postaci ciągu liczb (całkowitych bez znaku
oddzielonych spacjami) o wartościach odpowiadających nominałom wrzuconych
monet,
wyniki mają być zapisane na ekranie komputera,
wynikiem jest ciąg liczb (całkowitych bez znaku oddzielonych spacjami)
odpowiadających nominałom monet wydanej przez automat reszty lub odpowiedni
komunikat w przeciwnym przypadku.
Przykład:
Dla przykładowych danych o wartościach:
1 1 50
5
2
odpowiedzi powinny wyglądać następująco:
10
2 1 50 10
50 10
Zadanie 3 - Parabola
Proszę napisać program, którego zadaniem będzie wyznaczenie pierwiastków
2
równania kwadratowego a * x + b * x + c = 0 w dziedzinie liczb rzeczywistych. Dane
wejściowe do programu stanowią dowolne wartości współczynników a, b i c spośród liczb
rzeczywistych. Dodatkowo program powinien rysować na ekranie monitora wykres paraboli.
2