【发布时间】:2018-10-18 12:52:52
【问题描述】:
我编写了这个程序来查找接受的整数的数字是否按任何特定顺序(升序或降序)。虽然它有效,但我被卡住了,因为我想让它更有效率(一旦确定没有顺序,循环应该停止并且不继续检查剩余的数字。) 提前致谢。
#include <iostream>
using namespace std;
int main()
{
int number,duplicate,i = 0,length = 0,j = 0,unit;
cout<<" \n Enter a number \n";
cin>>number;
duplicate = number;
unit = number%10;
cout<<unit<<endl;
while(number!=0)
{
number = number/10;
cout<<"NO \n"<<number<<'\n'<<i<<'\n'<<j;
if(unit<number) j++;
else if(unit>number) i++;
else number = 0;
}
while(duplicate!=0)
{
length++;
duplicate=duplicate/10;
}
cout<<length;
if(i==length-1) cout<<" \n Ascending";
else if(j==length-1) cout<<" \n Descending ";
else if(number==0) cout<<" \n No order";
return 0;
}
【问题讨论】:
-
将号码读取为
std::string。然后你只需迭代字符串以查看它是否有模式。 -
如果你想改进已经工作的代码,最好在SE Code Review提出这样的问题。
-
读取为字符串,然后比较字符。这将从您正在做的事情中节省大量计算。此外,一旦发现异常,请使用
break停止循环。 -
如果数字是递增的,则在看到递减值时立即停止,反之亦然。 (如果两个序号相同,这很复杂:您无法确定它们是升序还是降序。)
-
@tevemadar 随意推荐 CR 上的 OP 帖子,但在未来,请不要使用代码审查作为关闭问题的理由。评估请求并使用太宽泛、主要基于意见等原因。然后您可以向 OP 提及它可以在 Code Review 上发布(如果是) on-topic。请参阅this answer to A guide to Code Review for Stack Overflow users 中的你不应该做的事情部分
标签: c++ numbers int new-operator digits