 |
|
Програма не работает коректно
Решил для себя написать простенькую програму которая могла б переводить кило байты в байты и тд и тп. В целом она должна была работать с b, B, Kb, KB, Mb, MB, Gb, GB, Tb, TB, Pb, PB, Eb,EB. Написал но програма не хочет работать с всем что выше Gb. Вот код:
Код:
#include <iostream>
#include <string>
using namespace std;
int main()
{
const int mk=1024;
const int mb=8;
int fin;
bool eror=false;
string ft;
string st;
int ofin;
int out;
char yn;
end:
cin>>fin>>ft>>st;
if((ft=="b")||(ft=="B")||(ft=="Kb")||(ft=="KB")||(ft=="Mb")||(ft=="MB")||(ft=="Gb")||(ft=="GB")||(ft=="Tb")||(ft=="TB")||(ft=="Pb")||(ft=="PB")||(ft=="Eb")||(ft=="EB"))
{
if(ft=="b") {ofin=fin;};
if(ft=="B") {ofin=fin*mb;};
if(ft=="Kb"){ofin=fin*mk;};
if(ft=="kB"){ofin=fin*mk*mb;};
if(ft=="Mb"){ofin=fin*mk*mk;};
if(ft=="MB"){ofin=fin*mk*mk*mb;};
if(ft=="Gb"){ofin=fin*mk*mk*mk;};
if(ft=="GB"){ofin=fin*mk*mk*mk*mb;};
if(ft=="Tb"){ofin=fin*mk*mk*mk*mk;};
if(ft=="TB"){ofin=fin*mk*mk*mk*mk*mb;};
if(ft=="Pb"){ofin=fin*mk*mk*mk*mk*mk;};
if(ft=="PB"){ofin=fin*mk*mk*mk*mk*mk*mb;};
if(ft=="Eb"){ofin=fin*mk*mk*mk*mk*mk*mk;};
if(ft=="EB"){ofin=fin*mk*mk*mk*mk*mk*mk*mb;};
//--------------------------------------------------------
if((st=="b")||(st=="B")||(st=="Kb")||(st=="KB")||(st=="Mb")||(st=="MB")||(st=="Gb")||(st=="GB")||(st=="Tb")||(st=="TB")||(st=="Pb")||(st=="PB")||(st=="Eb")||(st=="EB"))
{
if(st=="b") {out=ofin;};
if(st=="B") {out=ofin/mb;};
if(st=="Kb"){out=ofin/mk;};
if(st=="KB"){out=(ofin/mk)/mb;};
if(st=="Mb"){out=(ofin/mk)/mk;};
if(st=="MB"){out=ofin/mk/mk/mb;};
if(st=="Gb"){out=ofin/mk/mk/mk;};
if(st=="GB"){out=(ofin/mk/mk/mk)/mb;};
if(st=="Tb"){out=ofin/mk/mk/mk/mk;};
if(st=="TB"){out=ofin/mk/mk/mk/mk/mb;};
if(st=="Pb"){out=ofin/mk/mk/mk/mk/mk;};
if(st=="PB"){out=ofin/mk/mk/mk/mk/mk/mb;};
if(st=="Eb"){out=ofin/mk/mk/mk/mk/mk/mk;};
if(st=="EB"){out=ofin/mk/mk/mk/mk/mk/mk/mb;};
}
else{
cout<<"Eror2!"<<endl;
goto end;
}
//--------------------------------------------------------
}
else{
cout<<"Eror1!"<<endl;
goto end;
}
cout<<fin<<ft<<"="<<out<<st<<endl;
goto end;
system("pause");
|
Цитата:
Цитата COM-BAT
не хочет работать с всем что выше Gb »
|
Что значит не хочет работать? Ошибки?
На вскидку, в Int (32) идет переполнение. Попробуйте использовать тип long long
|
LilLoco,
спасибо інта не хватало
|
Время: 05:42.
© OSzone.net 2001-