我想制作一个降序号码分拣机。
我想问一下我的代码有什么问题。如果第三个变量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;
}
答案 0 :(得分:1)
将h2
设置为b1
的唯一代码是此代码:
if(b2 >= b1 && b1 >= b3){
h2 = b1;
但如果h2
介于b1
和b1
之间,则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;
}