Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » In C mit Zeiten rechnen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
29.03.2007, 09:15 Uhr
Tux90



Hallo,
Erstmal: Habe vor etwa 3 Wochen angefangen, C zu lernen...

Ich bin jetzt dabei ein kleines Programm zur Aufzeichnen von Trainingsdaten zu schreiben.
Dabei wird eine Zeit eingegeben und in einer String-Variablen gespeichert, zusätzlich die Anzahl der Kilometer, die man gelaufen/gefahren ist ebenfalls in einer Stringvariablen.

Nun möchte ich den Schnitt (minuten/kilometer) automatisch ausrechnen lassen.
D.h. man müsste die eingegebene Zeit zB 1:00:00 durch die eingegebenen Kilometer, zB 12 rechnen, so dass 00:05:00 als Schnitt herauskommt.

Kann man das irgendwie realisieren?
Wenn ja wie?

Vielen Dank für die Antworten schoneinmel
Gruß
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.03.2007, 10:15 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Klar kann man das realisieren.
Die Frage dabei ist wie du deine Zeit ablegst. Wenn du es wirklich als String in der Form 1:00:00 für eine Stunde ablegst dann musst du dir erstmal einen Parser schreiben der das dann in eine Zahl (also 60) umwandelt. Die teilst du dann einfach durch die Anzahl der Kilometer.

Aber am Besten wäre es wohl wenn du die Zeit direkt als Zahl ablegst und nur zur Anzeige in ein anderes Format bringst.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
29.03.2007, 11:26 Uhr
virtual
Sexiest Bit alive
(Operator)


Hallo,

"Parser" hört sich ganz dolle schlimm an, ist es strenggenommen auch, aber es läßt sich recht einfach mit sprintf/sscanf realisieren.


C++:
typedef char TimeString[9]; // Format: hh:mm:ss

/*
   Wandelt einen Zeitstempel hh:mm:ss in die entsprechende Anzahl sekunden um.
   Rückgabe -1, wenn kein gültiger stempel.
*/

int timeStringToInt(const TimeString ts) {
    int h, m, s;

    if (3 != sscanf(ts, "%02d:%02d:%02d", &h, &m, &s)) {
        return -1;
    }

    return h*3600 + m*60 + s;
}

/*
    Wandelt eine Sekundenzahl in einen Zeitstempel um. Rückgabe -1, wenn zeit nicht als
    Zeitstempel darstellbar (zugroß/klein)
*/

int intToTimeString(int t, TimeString ts) {
    if (t<100*3600 && t>=0) {
        sprintf(ts, "%02d:%02d:%02d", t/3600, (t/60)%60, t%60);
        return 0;
    }
    else {
        return -1;
    }
}


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: