Non così
codice:
if((*t).ore==24) {
    (*t).ore=0;
    ritardo();
}
ma così
codice:
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.