Pagina 1 di 1

[Risolto] - Esercizio in C - Differenza due orari

Inviato: sab 25 lug 2009, 18:41
da SIV
Ragazzi oggi mentro ero in giro mi sono mangiato la testa per "risolvere" questo esercizio:
Scrivete una funzione che accetti in input l'ora, suddiviso in tre argomenti interi(per le ore,i minuti e i secondi) e restituisca il numero dei secondi trascorsi dall'ultima volta che l'orologio ha rintoccato le 12. Utilizzate questa funzione per calcolare la quantità di tempo in secondi che intercorre tra due orari, netrambi i quali siano compresi all'interno di un ciclo di 12 ore dell'orologio.
Per ora ho solo, dato ora minuti e secondi calcolati i secondi. Poi mi blocco, ma proprio non so cosa fare (proprio a livello di logica :D )

Codice: Seleziona tutto

#include<stdio.h>

int main(){

int ora,minuti,secondi,tot;

printf("Inserisci l'ora: ");
scanf("%d",&ora);
printf("\nInserisci i minuti: ");
scanf("%d",&minuti);
printf("\nInserisci i secondi: ");
scanf("%d",&secondi);
ora *= 3600;
minuti *= 60;
tot = ora+minuti+secondi;
printf("\nTotale secondi: %d",tot);


return 0;
}

Re: Esercizio in C - Differenza due orari

Inviato: sab 25 lug 2009, 19:08
da Mario Vanoni
http://introweb.linux.tucows.com/ports/ ... c/?C=S;O=D

datedif-0.9.1.4.tgz 27-Sep-2003 02:33 5.2K

Magari ti e` utile, lo uso dal ... 2003.

Re: Esercizio in C - Differenza due orari

Inviato: sab 25 lug 2009, 19:13
da albatros
Ti basta fare la differenza fra i due tempi, ma ti converrebbe creare (come suggerisce l'esercizio) una funzione apposta int f(int ore, int minuti, int secondi), da richiamare dentro la main.

Re: Esercizio in C - Differenza due orari

Inviato: sab 25 lug 2009, 21:44
da Vic Steele
Ciao, io ho ragionato così:

Codice: Seleziona tutto

#include <stdio.h>

int calcolaSecondiTrascorsi(int ore, int minuti, int secondi);
void schermoStampaRisultato(int risultato);

int main() {
	
	int ore = 0, minuti = 0, secondi = 0, risultato;
	printf("Inserisci l'ora ---> ");
	scanf("%d", &ore);
	while (ore < 0 || ore > 24) {
		printf("Errore: immettere un'ora corretta ---> ");
		scanf("%d", &ore);
	}
	if (ore == 0) {
		ore = 24;
	}
	printf("Inserisci i minuti ---> ");
	scanf("%d", &minuti);
	while (minuti < 0 || minuti > 59) {
		printf("Errore: immettere minuti corretti ---> ");
		scanf("%d", &minuti);
	}
	printf("Inserisci i secondi ---> ");
	scanf("%d", &secondi);
	while (secondi < 0 || secondi > 59) {
		printf("Errore: immettere secondi corretti ---> ");
		scanf("%d", &secondi);
	}
	risultato = calcolaSecondiTrascorsi(ore, minuti, secondi);
	schermoStampaRisultato(risultato);
	return 0;
	
}

int calcolaSecondiTrascorsi(int ore, int minuti, int secondi) {
	
	int risultato = 0;
	risultato += secondi;
	risultato += (minuti * 60);
	if (ore < 12) {
		risultato += ((ore + 12) * 3600);
	} else if (ore > 12) {
		risultato += ((ore - 12) * 3600);
	}
	return risultato;
	
}

void schermoStampaRisultato(int risultato) {
	
	printf("Il numero di secondi trascorsi dalle ultime ore 12 e': %d", risultato);
	
}
Pare vada bene.


EDIT: non avevo letto l'ultima parte.
Vabbè, a questo punto è una banale sottrazione tra la funzione che ho calcolato io e quella che hai calcolato tu.

Re: Esercizio in C - Differenza due orari

Inviato: dom 26 lug 2009, 13:35
da SIV
Ragazzi grazie a tutti. :bounce: :bounce: :bounce:

Ho visto un po' sul web come fare a ricavare ora,minuti e secondi da tot secondi ed allora ho:

Codice: Seleziona tutto

-ricavato i secondi dal primo oraio
-ricavato i secondi dal secondo orario
-verificato qual è il più grande (numero di secondi)
-sottratto
-ricavato dai secondi (ricavati dalla differenza) ora:minuti:secondi
Ecco il source:

Codice: Seleziona tutto

#include <stdio.h>

int calcsec(int ore, int minuti, int secondi);
void tot(int risultato, int risultato1);

int main() {
   
   int ore = 0, minuti = 0, secondi = 0, risultato;
   int ore1 = 0, minuti1 = 0, secondi1 = 0, risultato1;

   //Input primo orario
   printf("Inserisci l'ora del primo orario ---> ");
   scanf("%d", &ore);
   while (ore < 0 || ore > 24) {
      printf("Errore: immettere un'ora corretta del primo orario ---> ");
      scanf("%d", &ore);
   }
   if (ore == 0) {
      ore = 24;
   }
   printf("Inserisci i minuti del primo orario ---> ");
   scanf("%d", &minuti);
   while (minuti < 0 || minuti > 59) {
      printf("Errore: immettere minuti corretti del primo orario ---> ");
      scanf("%d", &minuti);
   }
   printf("Inserisci i secondi del primo orario ---> ");
   scanf("%d", &secondi);
   while (secondi < 0 || secondi > 59) {
      printf("Errore: immettere secondi corretti del primo orario ---> ");
      scanf("%d", &secondi);
   }
   

   //Input secondo orario
   printf("Inserisci l'ora del secondo orario ---> ");
   scanf("%d", &ore1);
   while (ore1 < 0 || ore1 > 24) {
      printf("Errore: immettere un'ora corretta del secondo orario ---> ");
      scanf("%d", &ore1);
   }
   if (ore1 == 0) {
      ore1 = 24;
   }
   printf("Inserisci i minuti del secondo orario ---> ");
   scanf("%d", &minuti1);
   while (minuti1 < 0 || minuti1 > 59) {
      printf("Errore: immettere minuti corretti del secondo orario ---> ");
      scanf("%d", &minuti1);
   }
   printf("Inserisci i secondi del secondo orario ---> ");
   scanf("%d", &secondi1);
   while (secondi1 < 0 || secondi1 > 59) {
      printf("Errore: immettere secondi corretti del secondo orario ---> ");
      scanf("%d", &secondi1);
   }
  

risultato = calcsec(ore, minuti, secondi);
risultato1 = calcsec(ore1, minuti1, secondi1);

tot(risultato,risultato1);


return 0;
   
}



int calcsec(int ore, int minuti, int secondi) {
   
   int risultato = 0;
   risultato += secondi;
   risultato += (minuti * 60);
   if (ore < 12) {
      risultato += ((ore + 12) * 3600);
   } else if (ore > 12) {
      risultato += ((ore - 12) * 3600);
   }
   return risultato;
   
}


void tot(int risultato, int risultato1){

int ore2,minuti2,secondi2;
int totale;

if(risultato>risultato1){totale=risultato-risultato1;}
else{totale=risultato1-risultato;}

secondi2 = totale % 60;
totale = (totale - secondi2)/60;
minuti2 = totale % 60;
totale = (totale - secondi2)/60;
ore2 = totale % 24;

printf("Tempo tra i due orari --> %d : %d : %d",ore2,minuti2,secondi2);

}