-4

我需要用 c++ 编写程序,它将 mm 单位转换为 km、m、cm 和 mm。换句话说,例如输入 7580341 mm,它应该输出 7580341mm 等于 7km 580m 34cm 1mm。我改为 7km 6m 34cm 1mm。我对模函数做错了,我无法弄清楚。为什么它用 cm 和 mm 计算正确的值,而不用 m 计算?请帮忙。

一切顺利

帕夫勒

int mm, cm, m, km;
cout << "Type in value in millimeter:\n";
cin >> mm;

cm = mm/10;
m = mm/1000;
km = mm/1000000;

cout << mm << "mm equals " << km << "km " << m%km << "m " << cm%m << "cm " << mm%cm << "mm\n";

return 0;
4

3 回答 3

1

你可以用它来换米:

double convert(string str){ 
string numb;
for(int i=0; i<str.length()-2; i++){
    if ((str[i]>='0'&& str[i]<='9')||(str[i]='.')){
        numb+=str[i];
    }
}
int pos=str.length();
char const* n=numb.c_str();
double result = strtod(n, NULL);

if((str[pos-2]=='T')) // Terra
    return result*(1e+12);
else if((str[pos-2]=='G')) //Giga
    return result*(1e+9);
else if((str[pos-2]=='M')) //Mega
    return result*(1e+6);
else if((str[pos-2]=='k')) //kilo
    return result*(1e+3);
else if((str[pos-2]=='d')) //decimetre
    return result*(1e-1);
else if((str[pos-2]=='c')) //centimetre
    return result*(1e-2);
else if((str[pos-2]=='m')) //millimetre
    return result*(1e-3);
else if((str[pos-2]=='μ')) //micrometre
    return result*(1e-6);
else if((str[pos-2]=='n')) //nanometre
    return result*(1e-9);
else if((str[pos-2]=='p')) //picometre
    return result*(1e-12);
else 
    return -1; //if is false .
}
于 2020-05-18T15:11:32.997 回答
0

Hi need to use modulo operator

Something like this

km = mm/1000000;
m = (mm%1000000)/1000;
cm = ((mm%1000000)%1000)/10;
mm = ((mm%1000000)%1000)%10;
于 2013-10-22T14:34:38.417 回答
0

发生这种情况是因为您没有“删除”分配给每个单元的部件。

如果您知道它是例如 7 公里,那么构成这些公里的毫米需要从毫米的总计数中删除,否则您将再次“使用”它们。

所以,做:

const int km = mm / 1000000;
if(km > 0)
  mm -= 1000000 * km;

等等。您还可以使用%模运算符:

const int km = mm / 1000000;
mm %= 1000000;
于 2013-10-22T14:17:18.240 回答