domenica 9 novembre 2014

ESER. INFORMATICA - ESERCIZIO 1

Esercizio 1

Assegnato il numero di secondo 15678 calcolare il numero di ore, i minuti e i secondi residui.

Per passare dai secondi ai minuti basta una semplice divisione per 60 e stessa cosa per passare dai minuti alle ore. Passando da secondi a minuti mi viene 261,30 minuti. Il 0,30 sono i secondi residui, quindi ho due alternative :

-          Moltiplico per 60 il 0,30 e trovo i 18 secondi
-          Uso il modulo %  sui secondi totali, il resto della divisione per 60 sono i secondi residui, quindi 15678 diviso 60 fa 261 con resto di 18.

Scelgo la seconda strada più semplice e più logica e scelgo variabili solo di tipo int perché i decimali non mi servono. Quindi prima mi trovo i minuti con la divisione per 60 e poi uso il modulo anche sui minuti e il resto sono i minuti residui. Per le ore posso dividere i secondo totali 15678 per 3600 (60x60) oppure posso dividere i minuti calcolati prima (261,30) per 60.

Variabili:

L’esercizio non richiede ne l’inserimento di un dato dall’utente ne la generazione casuale di un valore ma assegna un valore di partenza di 15678 secondi, quindi non mi servono variabili di input ma solo di lavoro e di output.

mintot (a cui assegno il risultato della divisione per 60 dei secondi totali) variabile di lavoro;
secondi  (a cui assegno il resto dell’operazione col modulo dei secondi totali) variabile di output;
minuti  (a cui assegno il resto della divisione col modulo dei minuti totali) variabile di output;
ore (a cui assegno il risultato della divisione per 60 dei minuti totali) variabile di output;

Strumenti:

divisione ( /60)
modulo (%60)

Bozza programma;

il codice sorgente che andrò a scrivere dovrà fare le seguenti operazioni:

secondi=15678%60;    (resto 18 secondi)
mintot=15678/60;    (tot. 261)
minuti=mintot%60;    (tot.  21)
ore=mintot/60;   (tot. 4)

printf (“15678 secondo sono ore, minuti, secondi”);  (4 ore, 21 minuti , 18 secondi).

Codifica in linguaggio C:

#include <stdio.h>
#include <stdlib.h>

int main()

{
            int ore,minuti,secondi,mintot;
           
            secondi=15678%60;
            mintot=15678/60;
            minuti=mintot%60;
            ore=mintot/60;
            printf("15678 secondi sono %d, ore , %d minuti, %d secondi \n", ore,minuti,secondi);
            return 0;
}



Diagramma di flusso (algobuild):






































Nessun commento:

Posta un commento