Stránka 1 z 1

Rozdíl dvou časů v C

Napsal: 18 říj 2012 22:54
od JayCube
Zdravim, potřeboval bych poradit s domácím úkolem. Musím napsat program v C, ve kterém potřebuji zjistit rozdíl dvou zadaných časů. Samozřejmě mě napadlo ty časy od sebe odečíst, jenže problém nastane, když je tam přechod přes půlnoc (např. 23:00 a 01:00). V tom případě odečtení nefunguje. Potřeboval bych poradit nějaký způsob, jak to udělat, aby to fugovalo univerzálně - jak pro časy v rámci jednoho dne, tak i pro ten přechod přes půlnoc (s tím údajem budu potom dál pracovat). A prosím žádné šílenosti, v programování jsem začátečník :D.

Re: Rozdíl dvou časů v C

Napsal: 18 říj 2012 22:59
od faraon
A co kdyby sis k tomu času jeden den přidal, a po odečtení udělal modulo 24 hodin?
V C je na to operátor %.

Re: Rozdíl dvou časů v C

Napsal: 19 říj 2012 11:43
od JayCube
Jenže v tom případě program neví, kdy má ten den přidávat a kdy ne (ale možná jsem tvoji radu špatně pochopil :? ).
Ale díky tvojí radě mě napadlo tohle (časy jsou v minutách):

Kód: Vybrat vše

if( cas1 > (cas2 + 12*60) )
    rozdil = ( (cas2 + 24*60) - cas1 );
else if( cas2 > (cas1 + 12*60) )
    rozdil = ( cas2 - (cas1 + 24*60) );
else
    rozdil = cas2 - cas1;


Nevím, jestli je to ideální řešení, ale zkusil jsem ten program odevzdat a dostal jsem plný počet bodů. Takže děkuji za radu :D .

Re: Rozdíl dvou časů v C  Vyřešeno

Napsal: 19 říj 2012 11:57
od faraon
Buď můžeš použít podmínku nebo to přičítat při každém výpočtu, to modulo ti to v každém případě ořízne pod 24 hodiny. Totéž pak samozřejmě platí i pro minuty, kde ale musíš nejdřív ověřit, jestli ti nepřidají hodinu:

Kód: Vybrat vše

hod = (kon_hod + 24 - poc_hod) % 24;

Ale jde to jen pokud počítáš přechod z jednoho dne do druhého ;-)

Re: Rozdíl dvou časů v C

Napsal: 20 říj 2012 15:06
od JayCube
Aha! už jsem to pochopil. :D Moc děkuji za pomoc.