注册 登录
编程论坛 C++教室

[求助] 如何计算乘法呢?

阿辉 发布于 2007-06-29 08:51, 704 次点击
新手 只会一些基本编程 帮忙指导一下 以下功能 由用户输入两个八进制数计算加减乘运算:
#include <iostream.h>
void main()
{
unsigned int n,m,i,t=1,r; int s1[10]={0},s2[10]={0},c[10]={0};
cout<<"pleade put a number:";
cin>>n;
for (i=0;i<10;i++)
{
t*=10;
r=t/10;
s1[i]=(n%t)/r;
if(s1[i]<0||s1[i]>7)
{
cout<<"error";
break;
}
}

cout<<"please put another number: ";
cin>>m;
t=1;
for (i=0;i<10;i++)
{
t*=10;
r=t/10;
s2[i]=(m%t)/r;
if(s2[i]<0||s2[i]>7)
{
cout<<"error";
break;
}
}
for(i=0;i<10;i++)
{
c[i]+=s1[i]+s2[i];
if(c[i]>=8)
{
c[i]-=8;
c[i+1]+=1;
}
}
for(i=9;i>=0;i--)
cout<<c[i];
}
不能输出c[0];而且不能计算八进制的乘法,感觉程序也很罗嗦能简洁一下吗?
如果用户输入大于八的数程序终止 不能由用户再继续输入;
1 回复
#2
aipb20072007-06-29 13:36
LZ的思路很正确。
但是如你所见,你这样在设计每个四则运算的时候就会遇到进位控制的问题。
并且在8进制上直接使用乘法是很难控制的。

LZ完全可以换个角度,你可以设计程序让用户输入和获取的总为8进制,但是对于你自己(程序)而言,始终处理10进制。
这样不解决了吗?

至于你第二个问题,可以有很多方法,比如直接退出,或者在循环里提示从新输入。
这不是重要的。
1