ESERCIZIO 4
Si supponga che un dispositivo trasferisca dati ad una velocità di
10 MBIT/sec calcolare il tempo necessario per trasferire il contenuto di un CD
di un DVD e di un Blue Ray.
Prima di
tutto recupero le capacità dei supporti:
CD-ROM = 700 MByte;
DVD = 4,7 GByte;
Blu-Ray = 25
GByte.
Considerato
che : 1 byte = 8 bit -> 10 Mbit/sec = 1,25 Mbyte/sec e che 1 MByte=2^20 e
che 1 GByte= 2^30;
non devo far
altro che dividere la capacità dei tre supporti per la velocità in Mbyte/sec e
quindi;
CD-ROM 700
Mbyte = (700*2^20) / (1,25*2^20) = 560 secondi = 9 minuti e 20 secondi ;
DVD = 4,7
GByte = (4,7*2^30) / (1,25*2^20) = 3,76*2^10= 3850 secondi = 1 ora 4 minuti e
10 secondi;
Blu-ray = 25
GByte = (25*2^30) / (1,25*2^20) = 20*2^10 = 20480 secondi = 5 ore 41 minuti 20
secondi;
Troverò
prima i secondi totali e poi passerò al calcolo delle ore, minuti e secondi.
Variabili :
L'esercizio
non richiede l'inserimento di un dato dall'utente o la generazione di un numero
casuale ma assegna una velocità e una dimensione prestabiliti. Non utilizzerò
quindi variabili di input ma solo di lavoro e di output. Userò solo variabili
di tipo intero perché i decimali dei secondi non mi servono.
cdrom – di
tipo int (a cui assegno i secondi
necessari a riepirlo); variabile di lavoro;
dvd – di
tipo int (a cui assegno i secondi necessari a riempirlo); variabile di lavoro;
bluray – di
tipo int (a cui assegno i secondi necessari a riempirlo); variabile di lavoro;
mintot – di
tipo int (che utlizzo per trovare le ore e i minuti residui); variabile di
lavoro;
ore – di
tipo int (che utlizzo per la stampa in output delle ore); variabile di output;
minuti – di
tipo int (che utilizzo per la stampa in output dei munuti); variabile di
output;
secondi – di
tipo int (che utlizzo per la stampa in output dei secondi); variabile di
output;
Strumenti:
divisione;
moltiplicazione;
modulo;
pow(2,20);
Bozza programma:
int mintot,ore,minuti,secondi,cdrom,dvd,bluray;
cdrom=700 / 1,25;
dvd=(4.7*pow(2,30)) / (1.25*pow(2,20));
bluray=(25*pow(2,30)) / (1.25*pow(2,20));
secondi=cdrom%60;
mintot=cdrom/60;
minuti=mintot%60;
printf("%d
minuti : %d secondi ci vogliono per riempire un CD da 700 MByte \n\n",
minuti,secondi);
secondi=dvd%60;
mintot=dvd/60;
minuti=mintot%60;
ore=mintot/60;
printf("%d ore
: %d minuti : %d secondi ci vogliono per riempire un DVD da 4,7 GByte
\n\n", ore,minuti,secondi);
secondi=bluray%60;
mintot=bluray/60;
minuti=mintot%60;
ore=mintot/60;
printf("%d ore
: %d minuti : %d secondi ci vogliono per riempire un Bluray da 25 GByte
\n\n", ore,minuti,secondi);
Codifica in Linguaggio C:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int mintot,ore,minuti,secondi,cdrom,dvd,bluray;
//qui faccio le operazioni
e trovo i secondi totali necessari a riempire i supporti
cdrom=700/1.25;
dvd=(4.7*pow(2,30))/(1.25*pow(2,20));
bluray=(25*pow(2,30))/(1.25*pow(2,20));
printf("Alla
velocita' di trasferimento di 10Mbit/sec ci vogliono : \n\n");
// qui faccio la procedura
per calcolare il tempo del CDrom in
minuti e secondi
secondi=cdrom%60;
mintot=cdrom/60;
minuti=mintot%60;
printf("%d
minuti : %d secondi per riempire un CD da 700 MByte \n\n", minuti,secondi);
// qui faccio la procedura
per calcolare il tempo del DVD in ore,minuti e secondi
secondi=dvd%60;
mintot=dvd/60;
minuti=mintot%60;
ore=mintot/60;
printf("%d ore
: %d minuti : %d secondi per riempire un DVD da 4,7 GByte \n\n", ore,minuti,secondi);
// qui faccio la procedura
per calcolare il tempo del Bluray in ore,minuti e secondi
secondi=bluray%60;
mintot=bluray/60;
minuti=mintot%60;
ore=mintot/60;
printf("%d ore
: %d minuti : %d secondi per riempire un Bluray da 25 GByte \n\n", ore,minuti,secondi);
return 0;
}
Diagramma di Flusso (Algobuild):
Nessun commento:
Posta un commento