View Full Version : Piccolo Help sui tipi di dati in C++
trediman
01-12-2006, 22:37
Avrei bisogno di un piccolo aiuto sui tipi di dati
ho appena finito un programmino per calcolare il tempo di download di un file
ma non so che tipo di dato usare per la conversione da gb a kb
superati i 2 gb mi da una cosa del tipo 2.3593e+006kb che mi sembra che e proprio dopo il limite del tipo long ma non esiste un tipo per cifre piu grandi? non mi da problemi a livello di calcoli ma e l'unico difetto nel mio bel programmino. Per favore aiutatemi :mc:
unsigned int arrivi a 4gb...anche con unsigned long int
trallallero
02-12-2006, 08:02
non mi ricordo se è ANSI ma esiste il long long
Se lo devi "printare" usi "%lld"
trediman
02-12-2006, 12:25
Avevo gia provato con unsigned, long e tutti i tipi conosciuti ora mi sorge il dubbio che il problema non sia quello xke ho notato che non arriva nemmeno ad un gigabyte quindi vi riporto di seguito il listato completo onde evitare sbagli:
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
float n;
float a;
float b;
char byte, g, m;
float d, z;
unsigned long c;
int secondi;
int minuti, ore, giorni;
system("COLOR a");
cout<<"\n************ <<<<Programma per il calcolo del tempo di download>>>> ************\n";
cout<<"\n ************** Autore: trediman e-mail: labdesign2006@yahoo.it **************\n";
cout<<"\n ********************* Data creazione: 17 novembre 2006 *********************\n";
cout<<"\n ****************** Data Ultima Modifica: 1 dicembre 2006 *****************\n";
cout<<"\n ********************* Categoria: Utility per il p2p ********************\n";
cout<<"\n ** Commenti: Calcola il tempo di dwnld di un file o di una sua parte**\n\n";
cout<<"\n <<<INIZIO PROGRAMMA>>>\n";
cout<<"\n Inserisci dimensione file: ";
cin>>d ;
cout<<"\n Inserisci byte, esempi: g per gb, m per mb: ";
cin>> byte;
cout<<"\n Inserisci percentuale di download scaricata: ";
cin>>z;
c= 100-z;
cout<<"\n La percentuale da scaricare ancora e': "<<c<<"% cioe': ";
n= d/100*c;
if(byte=='m')
{
b=n*1024;
cout<<b<<"kb"<<endl;
}
else if(byte=='g')
{
b=n*1048576;
cout<<b<<"kb"<<endl;
};
cout<<"\n Inserisci velocita' download in kb/s: ";
cin>>a;
secondi=b/a;
cout<<"\n Per scaricare ci vogliono "<<secondi<<"s "<<endl;
minuti=secondi/60; secondi=secondi%60;
cout<<"\n oppure "<<minuti<<"m "<<secondi<<"s"<<endl;
ore=minuti/60; minuti=minuti%60;
cout<<"\n oppure "<<ore<<"h "<<minuti<<"m "<<secondi<<"s"<<endl;
giorni=ore/24; ore=ore%24;
cout<<"\n oppure "<<giorni<<"d "<<ore<<"h "<<minuti<<"m e "<<secondi<<"s \n"<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Ecco per favore aiutatemi sono sciocchezze come qste che fanno impazzire una persona :doh:
trediman
02-12-2006, 18:44
Up
trallallero
02-12-2006, 18:57
scusa potrei essere più preciso se fossi al lavoro perchè quì non ho neanche un compilatore installato sul portatile però così al volo ti posso consigliare di usare unsigned double anzichè float.
I float sono sconsigliati perchè imprecisi nelle condizioni e comunque i double sono ... doppi :D quindi già raddoppi il range.
trediman
02-12-2006, 19:29
anke cambiando b c n a in double o long double il problema non si risolve unsigned double mi da errore come lo risolvo inizio a pensare che il problema stia da qlke altra parte ho postato il codice per qsto dovreste controllarlo tutto per vedere se c'e qlke errore per favore sto sclerando
trediman
02-12-2006, 19:45
Grazie a tutti anke se ci ero gia arrivato prima di postare il primo msg solo che avevo sbagliato lettera
dovevo mettere long long double b mentre l'avevo fatto con la c
cmq questo e l'unico dato che mi legge fino a 100 gb convertiti in kb
grazie lo stesso alla prossima
Ah ho ancora qll'altro esercizio ora lo uppo
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.