C++ 程序需要2个罗马数字作为输入,1个作为输出。这一解决方案似乎是行不通的。我能做些什么来防止上吊?
我在这里写的解决方案是我家庭作业中的一个练习。程序需要2个罗马数字作为输入,将它们相加并以罗马数字打印输出。当我把这个作为家庭作业提交时,它不起作用,因为这个解决方案似乎挂起了,而且它超过了老师允许的时间限制。我能做些什么来防止上吊C++ 程序需要2个罗马数字作为输入,1个作为输出。这一解决方案似乎是行不通的。我能做些什么来防止上吊?,c++,C++,我在这里写的解决方案是我家庭作业中的一个练习。程序需要2个罗马数字作为输入,将它们相加并以罗马数字打印输出。当我把这个作为家庭作业提交时,它不起作用,因为这个解决方案似乎挂起了,而且它超过了老师允许的时间限制。我能做些什么来防止上吊 #include <iostream> using namespace std; int main() { int dec, decdig1, decdig2, decdig3, decdig4, rem; int sum1 = 0;
#include <iostream>
using namespace std;
int main()
{
int dec, decdig1, decdig2, decdig3, decdig4, rem;
int sum1 = 0;
int sum2 = 0;
char s, t, d, c;
cin.get(t);
while(t!='\n')
{
s=t;
cin.get(t);
if(s=='I'&&t!='V'&&t!='X')
{
sum2 = sum2 + 1;
}
if((s=='I'&&t=='V')||(s=='I'&&t=='X'))
{
sum2 = sum2 - 1;
}
if(s=='V')
{
sum2 = sum2 + 5;
}
if(s=='X'&&t!='L'&&t!='C')
{
sum2 = sum2 + 10;
}
if((s=='X'&&t=='L')||(s=='X'&&t=='C'))
{
sum2 = sum2 - 10;
}
if(s=='L')
{
sum2 = sum2 + 50;
}
if(s=='C'&&t!='D'&&t!='M')
{
sum2 = sum2 + 100;
}
if((s=='C'&&t=='D')||(s=='C'&&t=='M'))
{
sum2 = sum2 - 100;
}
if(s=='D')
{
sum2 = sum2 + 500;
}
if(s=='M')
{
sum2 = sum2 + 1000;
}
}
cin.get(c);
while(c!='\n')
{
d=c;
cin.get(c);
if(d=='I'&&c!='V'&&c!='X')
{
sum1 = sum1 + 1;
}
if((d=='I'&&c=='V')||(d=='I'&&c=='X'))
{
sum1 = sum1 - 1;
}
if(d=='V')
{
sum1 = sum1 + 5;
}
if(d=='X'&&c!='L'&&c!='C')
{
sum1 = sum1 + 10;
}
if((d=='X'&&c=='L')||(d=='X'&&c=='C'))
{
sum1 = sum1 - 10;
}
if(d=='L')
{
sum1 = sum1 + 50;
}
if(d=='C'&&c!='D'&&c!='M')
{
sum1 = sum1 + 100;
}
if((d=='C'&&c=='D')||(d=='C'&&c=='M'))
{
sum1 = sum1 - 100;
}
if(d=='D')
{
sum1 = sum1 + 500;
}
if(d=='M')
{
sum1 = sum1 + 1000;
}
}
dec = sum1 + sum2;
decdig1 = dec/1000;
rem = dec%1000;
decdig2= rem/100;
rem= rem%100;
decdig3= rem/10;
rem= rem%10;
decdig4= rem/1;
rem= rem%1;
if(decdig1 == 1)
{
cout<<"M";
}
if(decdig2== 1)
{
cout<<"C";
}
else if(decdig2 == 2)
{
cout<<"CC";
}
else if(decdig2 == 3)
{
cout<<"CCC";
}
else if(decdig2 == 4)
{
cout<<"CD";
}
else if(decdig2 == 5)
{
cout<<"D";
}
else if(decdig2 == 6)
{
cout<<"DC";
}
else if(decdig2 == 7)
{
cout<<"DCC";
}
else if(decdig2 == 8)
{
cout<<"DCCC";
}
else if(decdig2 == 9)
{
cout<<"CM";
}
if(decdig3 == 1)
{
cout<<"X";
}
else if(decdig3 == 2)
{
cout<<"XX";
}
else if(decdig3 == 3)
{
cout<<"XXX";
}
else if(decdig3 == 4)
{
cout<<"XL";
}
else if(decdig3 == 5)
{
cout<<"L";
}
else if(decdig3 == 6)
{
cout<<"LX";
}
else if(decdig3 == 7)
{
cout<<"LXX";
}
else if(decdig3 == 8)
{
cout<<"LXXX";
}
else if(decdig3 == 9)
{
cout<<"XC";
}
if(decdig4 == 1)
{
cout<<"I";
}
else if(decdig4 == 2)
{
cout<<"II";
}
else if(decdig4 == 3)
{
cout<<"III";
}
else if(decdig4 == 4)
{
cout<<"IV";
}
else if(decdig4 == 5)
{
cout<<"V";
}
else if(decdig4 == 6)
{
cout<<"VI";
}
else if(decdig4 == 7)
{
cout<<"VII";
}
else if(decdig4 == 8)
{
cout<<"VIII";
}
else if(decdig4 == 9)
{
cout<<"IX";
}
}
#包括
使用名称空间std;
int main()
{
12月1日,12月1日,12月2日,3日,4日,rem;
int sum1=0;
int-sum2=0;
字符s,t,d,c;
cin.get(t);
而(t!='\n')
{
s=t;
cin.get(t);
如果(s=='I'&&t!='V'&&t!='X')
{
sum2=sum2+1;
}
如果((s='I'和&t='V')| |(s=='I'和&t=='X'))
{
sum2=sum2-1;
}
如果(s=='V')
{
sum2=sum2+5;
}
如果(s='X'&&t!='L'&&t!='C')
{
sum2=sum2+10;
}
如果((s='X'&&t='L')| |(s='X'&&t='C'))
{
sum2=sum2-10;
}
如果(s=='L')
{
sum2=sum2+50;
}
如果(s=='C'&&t!='D'&&t!='M')
{
sum2=sum2+100;
}
如果((s=='C'&t=='D')| |(s=='C'&t=='M'))
{
sum2=sum2-100;
}
如果(s=='D')
{
sum2=sum2+500;
}
如果(s=='M')
{
sum2=sum2+1000;
}
}
cin.get(c);
而(c!='\n')
{
d=c;
cin.get(c);
如果(d='I'&&c!='V'&&c!='X')
{
sum1=sum1+1;
}
如果((d='I'&&c='V')| |(d='I'&&c='X'))
{
sum1=sum1-1;
}
如果(d='V')
{
sum1=sum1+5;
}
如果(d='X'&&c!='L'&&c!='c')
{
sum1=sum1+10;
}
如果((d='X'&&c='L')| |(d='X'&&c='c'))
{
sum1=sum1-10;
}
如果(d=='L')
{
sum1=sum1+50;
}
如果(d='C'&&C!='d'&&C!='M')
{
sum1=sum1+100;
}
如果((d='C'&&C='d')| |(d='C'&&C='M'))
{
sum1=sum1-100;
}
如果(d=='d')
{
sum1=sum1+500;
}
如果(d=='M')
{
sum1=sum1+1000;
}
}
dec=sum1+sum2;
decdig1=dec/1000;
rem=dec%1000;
decdig2=rem/100;
rem=rem%100;
decdig3=rem/10;
雷姆=雷姆%10;
decdig4=rem/1;
rem=rem%1;
如果(decdig1==1)
{
当然,如果没有测试用例,我无法真正判断问题出在哪里,但很可能是因为while循环检查了'\n'。
输入中的最后一行可能没有新的空行,这可能会导致最后一个字符在无限循环中卡住,从而导致时间限制。
我建议使用以下内容:
while(cin.get(c)) { }
而不是你的第二个while循环。你知道是什么输入导致程序没有响应吗?我忘了提到我不能使用数组或字符串,只是基本的东西。最多我可以使用函数。它适用于所有的输入。它似乎超过了时间限制,但我仍然不知道为什么。你是如何计时代码的?这个方法od不会输出解决方案如果您试图在控制台上运行程序时没有输入文件(与任务中预定义的测试用例不同),那么它当然会保持在无限循环中。请尝试使用包含所需测试用例的文件,或者如果您的IDE支持在运行前定义程序输入,那么它将保持在无限循环中。