PDA

Visualizza la versione completa : [C]Orologio dove sbaglio?


eoj
09-12-2008, 17:10
Ciao a tutti non riesco a capire dove sta l'errore il programma viene compilato normalmente ma appaiono numeri dappertutto che mi riempiono la finestra dell'output.

#include<stdio.h>
typedef struct tempo {
int ore;
int minuti;
int secondi;
}temp;
void aggiorna(tempo *t);
void stampa(tempo *t);
void ritardo();

int main ()
{
struct tempo temp;
temp.ore = 0;
temp.minuti = 0;
temp.secondi = 0;

for(; ;) {
aggiorna(&temp);
stampa(&temp);
}
return 0;
}
void aggiorna(tempo *t)
{

(*t).secondi++;
if((*t).secondi==60) {
(*t).secondi=0;
(*t).minuti++;
}

if((*t).minuti==60) {
(*t).minuti=0;
(*t).ore++;
}

if((*t).ore==24) {
(*t).ore=0;
ritardo();
}
}
void stampa(tempo *t)
{

printf("%d:",(*t).ore);
printf("%d:",(*t).minuti);
printf("%d:",(*t).secondi);

}

void ritardo() {
long int t;
for(t=1;t<1280000;++t);
}

menphisx
09-12-2008, 17:49
Mai sentito parlare dell'operatore modulo ?

MItaly
09-12-2008, 18:16
Non così


if((*t).ore==24) {
(*t).ore=0;
ritardo();
}
ma così


if((*t).ore==24) {
(*t).ore=0;
}
ritardo();.
In ogni caso questo metodo per ottenere un ritardo funziona solo se il programma verrà eseguito sempre e solo sullo stesso processore con lo stesso clock (ad esempio su microcontrollori); su PC, palmari e in generale su qualunque macchina che deve condividere la CPU con altri processi e/o il cui clock non è sempre lo stesso questo approccio non è adeguato, devi usare le apposite funzioni di attesa fornite dal sistema operativo.

Loading