2017-09-16 2 views
0

Ich brauche maxhr und maxmin, um nur die höchste Zeit aufzuzeichnen. Unter meiner if((hr>maxhr)||((hr==maxhr)&&(min>maxmin))); ist, wo ich meine int speichern, aber es immer die zuletzt eingegebene Zeit zurückgibt. Ich verstehe das Problem, aber ich weiß nicht, wie es zu beheben ist.Erhalten der letzten Zeit anstelle der maximalen Zeit

Auch, wenn ich sage, wenn die aktuelle Stunde größer ist als meine maximale OR wenn beide Stunden gleich sind, aber meine aktuelle min ist größer als meine maxmin. Drücke ich das richtig aus?

#include <stdio.h> 
void main() 
{ 
    int hr; 
    int min; 
    int dives; 
    int counter=0; 
    int maxmin=0; 
    int maxhr=0; 
    int totmin=0; 
    int tothr=0; 
    printf("Please enter all dive times, one by one, with hours first and   minutes second, separated by a colon. Ex HH:MM\n"); 
    dives = scanf("%d:%d", &hr,&min); 

    while(dives != EOF) 
    { 
     counter++; 
     tothr = tothr+hr; 
     totmin = totmin+min; 
     if(totmin>59) 
     { 
      totmin = totmin-60; 
      tothr = tothr+1; 
     } 
     if((hr>maxhr)||((hr==maxhr)&&(min>maxmin))); 
     { 
      maxhr = hr; 
      maxmin = min; 
     } 
     dives = scanf("%d:%d", &hr,&min); 
    } 
    printf("The longest dive is %d:%d\n",maxhr,maxmin); 
    printf("The total dive time is %d:%d\n",tothr,totmin); 
} 
+0

Sie sollten das 'while' hinter dem' scanf' nicht verstecken. Sie sollten überprüfen, was 'scanf' zurückgibt. – mch

+2

Gibt es einen Grund, warum Sie Stunden und Minuten nicht einfach in Gesamtminuten umrechnen? – EOF

+0

Ich denke über die Berechnung der Gesamtminuten nach, aber meine Kontrolle d beendet das Programm nicht mehr wie früher. Auch, ist meine maxhr = hr speichern den Wert von hr zu maxhr, oder ist es einfach teilen den Wert von hr mit maxhr. Denn wenn es einfach geteilt wird, ändert sich nicht jedes Mal, wenn ich einen neuen Wert für die Stunde einstelle? –

Antwort

2

Die genannte Anweisung, if((hr>maxhr)||((hr==maxhr)&&(min>maxmin))) hat ein Semikolon am Ende. Könnte das dein Problem sein? Die if-Anweisung sieht so aus, als wäre sie korrekt.

+0

Ich entfernte das ";" aber jetzt macht meine Kontrolle nichts mehr. Gedanken? –

+0

"Gedanken?" --- jetzt debuggen Sie es. – zerkms

Verwandte Themen