Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使该程序更高效?(程序用于查找给定数字的数字是否按升序排列)_C++_Numbers_Int_New Operator_Digits - Fatal编程技术网

C++ 如何使该程序更高效?(程序用于查找给定数字的数字是否按升序排列)

C++ 如何使该程序更高效?(程序用于查找给定数字的数字是否按升序排列),c++,numbers,int,new-operator,digits,C++,Numbers,Int,New Operator,Digits,我写这个程序是为了找出一个被接受的整数的数字是否有任何特定的顺序(升序或降序)。虽然它可以工作,但我还是被卡住了,因为我想让它更高效(一旦确定没有顺序,循环应该停止,并且不继续检查剩余的数字。) 提前谢谢 #include <iostream> using namespace std; int main() { int number,duplicate,i = 0,length = 0,j = 0,unit; cout<<" \n Enter

我写这个程序是为了找出一个被接受的整数的数字是否有任何特定的顺序(升序或降序)。虽然它可以工作,但我还是被卡住了,因为我想让它更高效(一旦确定没有顺序,循环应该停止,并且不继续检查剩余的数字。) 提前谢谢

#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;
int main()
{
整数,重复,i=0,长度=0,j=0,单位;
库特号码;
重复=数字;
单位=数量%10;

cout下面是其他人评论过的方法示例,使用字符串作为输入。迭代字符,一旦顺序发生变化,就中断

#include <cstdlib>
#include <iostream>

enum Order { None, Ascending, Decending };

int main()
{
    std::string input;
    std::cout << "Enter a number" << std::endl;
    std::cin >> input;

    Order prevOrder = None;
    if( input.size() > 1 ) {
        for( std::size_t i=1; i<input.size(); i++ ) {
            if( (prevOrder != Decending) && (input[i-1] < input[i]) )
                prevOrder = Ascending;
            else if( (prevOrder != Ascending) && (input[i-1] > input[i]) )
                prevOrder = Decending;
            else {
                prevOrder = None;
                break;
            }
        }
    }

    std::cout << input << ( (prevOrder == Ascending) ? " is ascending." :
                            (prevOrder == Decending) ? " is decending." :
                                                       " has no order." );
    std::cout << std::endl;
    return 0;
}
#包括
#包括
枚举顺序{None,升序,降序};
int main()
{
std::字符串输入;
std::cout输入;
订单号=无;
if(input.size()>1){
对于(std::size\u t i=1;i输入[i]))
前序=下降;
否则{
prevOrder=无;
打破
}
}
}

std::无法将数字读入
std::string
。然后您只需迭代字符串,看看它是否有模式。如果您想改进已经在运行的代码,最好在上问这样的问题。将数字读入字符串,然后比较字符。这将节省大量的计算量。此外,一旦您发现不规则通常,使用
break
停止循环。如果数字是升序的,则在看到降序值时立即停止,反之亦然。(如果两个序列号相同,则这很复杂:无法确定它们是升序还是降序。)@tevemadar可以自由推荐CR上的OP帖子,但在将来,请不要将代码审查作为结束问题的理由。评估请求并使用诸如过于宽泛、主要基于意见等理由。然后,您可以向OP提及,如果是,可以将其发布在代码审查上。请参阅@Tob中的“您不应该做什么”部分很好,删除了。