Created
October 29, 2014 18:16
-
-
Save Huholoman/0558cfbab0c3ad295be0 to your computer and use it in GitHub Desktop.
CVUT FIT 2014/15 - 02. MHD
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Úkolem je realizovat program, který pomůže optimalizovat hledání návaznosti MHD. | |
Jistě všichni známe problémy, když musíme přestupovat na jiný spoj MHD. Přijedeme na přestupní zastávku a zjistíme, že požadovaný navazující spoj odjel před pár minutami. Jak by byla krásná opačná situace, tedy přijet na přestupní zastávku, kde by navazující spoj odjížděl za pár minut. Náš program dokáže optimalizovat takové přestupy, tedy bude hledat, kdy se vyplatí vyrazit, abychom přestup zvládli bez zbytečného čekání. | |
Ve zjednodušeném výpočtu uvažujeme, že přijíždíme spojem #1. Tento spoj má pravidelné intervaly (zadané jako počet hodin a minut). Na přestupní stanici chceme odjet spojem #2, který má rovněž daný svůj interval (hodiny a minuty). Pro jednoduchost předpokládáme, že tento interval je stále stejný (spoje jezdí stejně často ve dne i v noci, zcela přesně ve svém intervalu). Předpokládejme, že spojem #1 přijedeme na přestupní stanici, kde zjistíme, že požadovaný spoj #2 odjel před zadaným počtem hodin a minut. Program z těchto údajů spočte, za jak dlouho nastane optimální situace pro přestup, tedy kdy bude spoj #2 odjíždět právě 1 minutu po příjezdu spoje #1. | |
Vstupem programu jsou tři časové údaje. Každý se sestává z hodin (celé číslo), dvojtečky a minut (celé číslo). Tyto časy udávají interval spoje #1, interval spoje #2 a dobu od odjezdu spoje #2. | |
Výstup programu se liší podle zadaných vstupů: | |
zobrazí se časový údaj (hodiny a minuty), který udává za jak dlouho nastane optimální situace pro přestup, tedy kdy bude spoj #2 odjíždět přesně 1 minutu po příjezdu spoje #1, | |
zobrazí se informace, že právě nyní je optimální situace pro přestup, tedy spoj #2 bude odjíždět za 1 minutu, | |
zobrazí se informace, že pro zadané hodnoty vstupů nebude nikdy spoj #2 odjíždět 1 minutu po příjezdu spoje #1. | |
Formát výstupu pro každou variantu je uveden v ukázkovém běhu níže. Pozor, za každým řádkem výstupu je odřádkování (\n). | |
Program musí být schopen detekovat nesprávný vstup. Pokud je na vstupu nesmyslné zadání, program to zjistí, vypíše chybové hlášení a ukončí se. Formát chybového hlášení je uveden v ukázce níže. Pozor, za případným chybovým hlášením je odřádkování (\n). Chybová hlášení zasílejte na standardní výstup (printf), nezasílejte jej na chybový výstup. Za chybu je považováno: | |
nečíselná nebo záporná hodnota hodin či minut, | |
počet minut převyšující 59, | |
nulový interval spoje, | |
nesmyslná kombinace intervalu a odjezdu spoje #2. | |
Při programování si dejte pozor na přesnou podobu výpisů. Výstup Vašeho programu kontroluje stroj, který požaduje přesnou shodu výstupů Vašeho programu s výstupy referenčními. Za chybu je považováno, pokud se výpis liší. I chybějící nebo přebývající mezera/odřádkování je považováno za chybu. Abyste tyto problémy rychle vyloučili, použijte přiložený archiv se sadou vstupních a očekávaných výstupních dat. Podívejte se na videotutoriál (edux -> výuková videa), jak testovací data použít a jak testování zautomatizovat. | |
Váš program bude spouštěn v omezeném testovacím prostředí. Je omezen dobou běhu (limit je vidět v logu referenčního řešení) a dále je omezena i velikost dostupné paměti (ale tato úloha by ani s jedním omezením neměla mít ve standardních testech problém). Testovací prostředí dále zakazuje používat některé "nebezpečné funkce" -- funkce pro spouštění programu, pro práci se sítí, ... Pokud jsou tyto funkce použité, program se nespustí. Možná ve svém programu používáte volání: |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment