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