用C ++对数字降序排序

时间:2017-09-11 10:22:17

标签: c++ sorting

我想制作一个降序号码分拣机。

我想问一下我的代码有什么问题。如果第三个变量b3的值最低,为什么我的代码无法正常工作。

示例:b1 = 90, b2 = 60, b3 = 30,结果为90, 30, 30

但是如果我输入了另一个数字(只要第3个变量不是最低值),我的代码就可以正常工作了。

示例:b1 = 30 , b2 = 90 , b3 = 60,结果为90, 60, 30

示例:b1 = 30 , b2 = 60 , b3 = 90,结果为90, 60, 30

#include <iostream>
using namespace std;

int main(){

    int b1,b2,b3,h1,h2,h3;

    cout<<"Masukkan Bilangan 1: ";
    cin>>b1;
    cout<<"Masukkan Bilangan 2: ";
    cin>>b2;
    cout<<"Masukkan Bilangan 3: ";
    cin>>b3;

    if(b1 >= b2 && b1 >= b3){
        h1 = b1;
    }else if(b2 >= b1 && b2 >= b3){
        h1 = b2;
    }else{
        h1 = b3;
    }

    if(b2 >= b1 && b1 >= b3){
        h2 = b1;
    }else if(b2 >= b1 && b2 <= b3 ){
        h2 = b2;
    }
    else{
        h2 = b3;
    }

    if(b1 <= b2 && b1 <= b3){
        h3 = b1;
    }else if(b2 <= b1 && b2 <= b3){
        h3 = b2;
    }
    else{
        h3 = b3;
    }

    cout<<h1<<", ";
    cout<<h2<<", ";
    cout<<h3;
    return 0;
}

3 个答案:

答案 0 :(得分:1)

h2设置为b1的唯一代码是此代码:

if(b2 >= b1 && b1 >= b3){
    h2 = b1;

但如果h2介于b1b1之间,则b2应设置为b3。这可能是两种不同的方式,你只测试其中一种。

例如,10介于5和30之间。但10也介于30和5之间!

尝试涵盖所有可能的案例并不是排序两个以上数字的合理方法。使用合理的排序算法。

答案 1 :(得分:0)

#include <iostream>
using namespace std;

int main(){

int b1,b2,b3,h1,h2,h3;

cout<<"Masukkan Bilangan 1: ";
cin>>b1;
cout<<"Masukkan Bilangan 2: ";
cin>>b2;
cout<<"Masukkan Bilangan 3: ";
cin>>b3;

if(b1 >= b2 && b1 >= b3){
    h1 = b1;
}else if(b2 >= b1 && b2 >= b3){
    h1 = b2;
}else{
    h1 = b3;
}

if(b1 >= b2 && b1 <= b3 || b1 >= b3 && b1 <= b2){
    h2 = b1;
}else if(b2 >= b3 && b2 <= b1 || b2 >= b1 && b2 <= b3){
    h2 = b2;
}
else{
    h2 = b3;
}

if(b1 <= b2 && b1 <= b3){
    h3 = b1;
}else if(b2 <= b1 && b2 <= b3){
    h3 = b2;
}
else{
    h3 = b3;
}

cout<<h1<<", ";
cout<<h2<<", ";
cout<<h3;
return 0;
}

答案 2 :(得分:0)

问题在于第二个嵌套if条件。如果你自动设置值,h2的值将变为30.而不是试试..

if((b2 >= b1 && b1 >= b3) ||(b3 >= b1 && b1 >= b2)){
        h2 = b1;
    }else if((b2 >= b1 && b2 <= b3 )||(b2 >= b3 && b2 <= b1)){
        h2 = b2;
    }
    else{
        h2 = b3;
    }