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);
}
Sie sollten das 'while' hinter dem' scanf' nicht verstecken. Sie sollten überprüfen, was 'scanf' zurückgibt. – mch
Gibt es einen Grund, warum Sie Stunden und Minuten nicht einfach in Gesamtminuten umrechnen? – EOF
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? –