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

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Uživatelský avatar
JayCube
Level 1.5
Level 1.5
Příspěvky: 106
Registrován: srpen 11
Bydliště: Sedlec-Prčice
Pohlaví: Muž
Stav:
Offline

Rozdíl dvou časů v C

Příspěvekod JayCube » 18 říj 2012 22:54

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.
CPU: Intel Core i5-4460 + GELID Tranquillo MB: MSI B85-G43 RAM: Crucial Ballistix Sport 8GB GK: Palit GTX 1060 JetStream SSD: Crucial MX100 128GB HDD: WD Caviar Blue 250GB ZDROJ: Seasonic SS-500ET-F3 500W CASE: Zalman R1 OS: Windows 7 Home Premium MONITOR: Iiyama ProLite X2483HSU

Reklama
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Rozdíl dvou časů v C

Příspěvekod faraon » 18 říj 2012 22:59

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 %.
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Uživatelský avatar
JayCube
Level 1.5
Level 1.5
Příspěvky: 106
Registrován: srpen 11
Bydliště: Sedlec-Prčice
Pohlaví: Muž
Stav:
Offline

Re: Rozdíl dvou časů v C

Příspěvekod JayCube » 19 říj 2012 11:43

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 .
CPU: Intel Core i5-4460 + GELID Tranquillo MB: MSI B85-G43 RAM: Crucial Ballistix Sport 8GB GK: Palit GTX 1060 JetStream SSD: Crucial MX100 128GB HDD: WD Caviar Blue 250GB ZDROJ: Seasonic SS-500ET-F3 500W CASE: Zalman R1 OS: Windows 7 Home Premium MONITOR: Iiyama ProLite X2483HSU

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod faraon » 19 říj 2012 11:57

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 ;-)
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Uživatelský avatar
JayCube
Level 1.5
Level 1.5
Příspěvky: 106
Registrován: srpen 11
Bydliště: Sedlec-Prčice
Pohlaví: Muž
Stav:
Offline

Re: Rozdíl dvou časů v C

Příspěvekod JayCube » 20 říj 2012 15:06

Aha! už jsem to pochopil. :D Moc děkuji za pomoc.
CPU: Intel Core i5-4460 + GELID Tranquillo MB: MSI B85-G43 RAM: Crucial Ballistix Sport 8GB GK: Palit GTX 1060 JetStream SSD: Crucial MX100 128GB HDD: WD Caviar Blue 250GB ZDROJ: Seasonic SS-500ET-F3 500W CASE: Zalman R1 OS: Windows 7 Home Premium MONITOR: Iiyama ProLite X2483HSU


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Jaký z těchto dvou notebooků vybrat?
    od Speed_dead » 10 říj 2024 21:49 » v Rady s výběrem hw a sestavením PC
    11
    1968
    od Speed_dead Zobrazit poslední příspěvek
    12 říj 2024 21:07

Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 6 hostů