Repository 32bit  Forum
Repository 64bit  Wiki

[Risolto] - Esercizio in C - Differenza due orari

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

[Risolto] - Esercizio in C - Differenza due orari

Messaggioda SIV » sab lug 25, 2009 17:41

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;
}
Ultima modifica di SIV il dom lug 26, 2009 13:13, modificato 1 volta in totale.
Avatar utente
SIV
Linux 2.6
Linux 2.6
 
Messaggi: 918
Iscritto il: mer apr 25, 2007 13:07
Località: Bari (Provincia)

Re: Esercizio in C - Differenza due orari

Messaggioda Mario Vanoni » sab lug 25, 2009 18:08

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.
Mario Vanoni
Iper Master
Iper Master
 
Messaggi: 3174
Iscritto il: lun set 03, 2007 20:20
Località: Cuasso al Monte (VA)
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey

Re: Esercizio in C - Differenza due orari

Messaggioda albatros » sab lug 25, 2009 18:13

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.
Avatar utente
albatros
Iper Master
Iper Master
 
Messaggi: 2056
Iscritto il: sab feb 04, 2006 13:59
Località: 43°52' N 11°32' E
Slackware: current 64bit
Kernel: 3.8.4
Distribuzione: ubuntu 12.04

Re: Esercizio in C - Differenza due orari

Messaggioda Vic Steele » sab lug 25, 2009 20:44

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.
Vic Steele
Linux 2.6
Linux 2.6
 
Messaggi: 534
Iscritto il: dom apr 27, 2008 12:46
Località: Potenza
Nome Cognome: Luigi Caiazza
Slackware: current x86_64
Kernel: 3.0.0
Desktop: Fluxbox / KDE 4.7.0
Distribuzione: Fedora 15

Re: Esercizio in C - Differenza due orari

Messaggioda SIV » dom lug 26, 2009 12:35

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);

}
Avatar utente
SIV
Linux 2.6
Linux 2.6
 
Messaggi: 918
Iscritto il: mer apr 25, 2007 13:07
Località: Bari (Provincia)


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron