Permalänk

C++ Dygnspassering

Hej.

Håller på med en uppgift där jag ska räkna ut sluttiden i en tävling. Dvs Sluttid - Starttid. Jag har fått till det ganska bra men det är en sak som inte fungerar.

Det är om en löpare exv. startar kl 00.40.(10sek) och går i mål kl. 00.30.(10sek). Alltså 23 timmar och 50 minuter senare, då får jag ett minusresultat.

Jag klipper in en del av koden så får ni se.

Citat:

cout << "Ange tid: ";
cin >> tim >> min >> sek;
cout << "Ange maltid: ";
cin >> maltim >> malmin >> malsek;

tim = dygn/24*tim;

maltim = dygn/24*maltim;

min = dygn/24/60*min;

malmin = dygn/24/60*malmin;

starttid =tim+min+sek;

sluttid =maltim+malmin+malsek;

sluttid > starttid;
.
sumtid = sluttid-starttid;

sumtim = (sumtid/60/60) %24;

summin = (sumtid/60) % 60;

sumsek = sumtid %60;

cout << "Sluttid är: " << sumtim << " tim " << summin << " min "<< sumsek << " sek";

I mitt exempel får jag svaret:
"Sluttid õr: 0 tim -10 min 0 sek"

Frågan är alltså, hur fixar jag till dygnspassagen?

Tack
Mathias

Visa signatur

Mathisa

Permalänk
Medlem

Om du vill täcka dygnspassagen i detta fall så kan du enkelt kontrollera om du får negativ tid och i så fall addera 24 timmar. Detta kommer endast att gälla upp till ett dygn. För att hantera längre tider måste du inkludera dygnsnummer i inmatningen

Visa signatur

weeeee

Permalänk

Det fungerade bra.

La till

if(sluttid<starttid)
{
sluttid = sluttid+dygn;
}

Tack för hjälpen

Visa signatur

Mathisa

Permalänk
Medlem

Fast det gäller som sagt inte om löparen börjar 00.40 och kommer i mål 00.41 nästa dag.
Det är inte heller något som säger om löparen har tagit 0, 2 eller 127 dagar på sig.

Med hjälp av timmar (0-24), minuter (0-60) och sekunder (0-60) kan du aldrig få tidtagning över 23:59:59. Du bör se över designen och ex. ge användaren ett val att ställa in kort tid (mindre än 24 timmar) eller lång tid (över 24 timmar), om användaren väljer det senare så måste du även ta hänsyn till antal dygn, alt. öka antalet timmar till obegränsat.

Visa signatur

Cat funeral! Cat funeral!
>>> 112383 <<<

Permalänk
Medlem

inkludera time.h och använd dom funktionerna som finns där.
Jag gör alltid så att jag räknar allt i epoc tid (+- i sekunder) och sen konverterar det till läsbar tid för presentation.

Visa signatur

Flest prylar när man dör vinner