Salve a tutti mi sono appena iscritto volevo chiedere consiglio per un esercizio in C datomi al poli che non riesco a far girare come vorrei:
Questo è il testo dell'esercizio:
Il codice che ho scritto:Si scriva un programma che acquisisca 2 stringhe corrispondenti a 2 orari
nel formato hh:mm. Il programma deve:
a. Controllare le stringhe, segnalando i casi in cui il formato non sia
rispettato (ad esempio 10,30 non è valido)
b. Stabilire se l’orario contenuto nella prima stringa è precedente a
quello contenuto nella seconda stringa
c. In caso affermativo, tradurre i 2 orari in valori interi corrispondenti
all’orario espresso come distanza in minuti da 00:00 e calcolarne la
differenza
d. Converta il risultato (sarà un numero intero positivo) in una stringa
così composta “<intervallo calcolato>_minuti” e la stampi a video.
Non ho implementato ancora l'ultimo punto perché se, per esempio, inserisco come orari 11:05 e 11:10 la differenza restituita dal programma è 160, quindi non va.codice:#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int ho1,min1,ho2,min2,i,gap; char hour1[5],hour2[5],h1[2],h2[2],m1[2],m2[2],pausa; printf("\n\n\t\tProgramma che acquisisce da tastiera due orari " "\n\n\t\te ne calcola la diffrenza in minuti"); printf("\n\n\t\tInserisci il primo orario:\n\n\t\t"); for(i=0;((hour1[i]=getchar())!='\n') && (i<5);i++); // acquisizione primo orario if(hour1[2]!=':'){ // controllo formato printf("\n\n\t\t\aIl formato non è corretto!!"); printf("\n\n\t\tInserisci il primo orario:\n\n\t\t"); for(i=0;((hour1[i]=getchar())!='\n') && (i<5);i++); } printf("\n\n\t\tInserisci il secondo orario:\n\n\t\t"); for(i=0;((hour2[i]=getchar())!='\n') && (i<5);i++); // acquisizione secondo orario if(hour2[2]!=':'){ // controllo formato printf("\n\n\t\t\aIl formato non è corretto!!"); printf("\n\n\t\tInserisci il secondo orario:\n\n\t\t"); for(i=0;((hour2[i]=getchar())!='\n') && (i<5);i++); } strncpy(h1,hour1,2); // copio le cifre dell'ora del primo orario in h1 strncpy(h2,hour2,2); // copio le cifre dell'ora del secondo orario in h2 h1[3]='\0'; // termino h1 h2[3]='\0'; // termino h2 strncpy(m1,&hour1[3],2); // copio le cifre dei minuti del primo orario in m1 strncpy(m2,&hour2[3],2); // copio le cifre dei minuti del secondo orario in m2 m1[3]='\0'; // termino m1 m2[3]='\0'; // termino m2 // converto ore e minuti in interi e trasformo le ore in minuti min1=atoi(m1); ho1=atoi(h1); min2=atoi(m2); ho2=atoi(h2); min1=min1+(ho1*60); min2=min2+(ho2*60); // calcolo la differenza in minuti if(min1>=min2){ gap=min1-min2; } if(min1<min2){ gap=min2-min1; } printf("\n\n\t\tLa differenza tra i due orari e' di %d minuti",gap); // stampo a video la differenza printf("\n\n\t\t"); pausa=getchar(); return 0; }![]()
Sapreste aiutarmi per favore?

Rispondi quotando