我已经创建了一个项目,打破了一个大的数字到它的根,它的工作非常好,但它打印了一个额外的 * 在最后一个根的结尾。
#include <iostream>
using namespace std;
int multinum(int a, int b);
int primeOp(int a);
int main()
{
char ch;
do {
int a=0, b=0;
multinum(a,b);
cout << "\n\nDo you want to continue?(y/n)";
cin >> ch;
} while (ch=='y');
return 0;
}
int multinum(int num1, int num2)
{
cout<< "\nPlease enter the first number : ";
cin >> num1;
cout << "\nPlease enter the second number : ";
cin >> num2;
cout << num1 <<" = ";
primeOp(num1);
cout << endl;
cout << num2 <<" = ";
primeOp(num2);
return 0;
}
int primeOp(int a)
{
int i, x, power;
x=a;
if (a%2==0)
{
power=0 ;
while(a%2==0)
{
a/=2;
power++;
}
cout << 2 <<"^"<<power<< "*";
}
for (i=3; i<=x/2; i+=2)
{
power=0 ;
while(a%i==0)
{
a/=i;
power++;
}
if (power!=0)
cout << i <<"^"<< power << "*";
if (power!=0 && a%i== 0)
cout << "*";
}
if(a==x)
cout<< x << "^" << 1;
return 0;
}
我试着用不同的方法打印 ,但都没有效果,我也试着用最后一个“i”或“power”来停止打印,但没用。
我该怎么做,才能在不需要的时候停止打印 * ▲?
例如:24 = 2^3 * 3^1 * ---它应该变成:24 = 2^33^1
3条答案
按热度按时间ve7v8dk21#
在primeOp()函数中,您可以在if(power!=0 && a%i== 0)语句中添加else条件,该条件仅在幂不等于零且a可被i整除时才打印 * 符号。
更新后的primeOp()函数如下所示:
进行此更改后,代码应按预期工作,并且输出末尾不应再打印额外的 * 符号。
46qrfjad2#
如果不容易找到最后一张照片,请将第一张照片做得特别。
这样打印第一个幂:
然后通过以下方式打印所有剩余内容
我不完全理解你的代码,但要知道这是第一次打印,你可以使用布尔标志。
13z8s7eq3#
您可以通过在结果末尾打印退格来避免此问题。
就在return语句上方