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.
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 )
#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 26 lug 2009, 14:13, modificato 1 volta in totale.
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.
#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.
-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