gpt4 book ai didi

C++ - 需要一些关于这个排序代码的帮助

转载 作者:行者123 更新时间:2023-11-28 02:23:48 26 4
gpt4 key购买 nike

#include <iostream>
#include <cstdio>
using namespace std;

int val1;
int val2;
int val3;
int sortArray[3];

int main(){

printf("Enter three integer values.\n");
printf("Please enter integer 1: ");
cin >> val1;
printf("Please enter integer 2: ");
cin >> val2;
printf("Please enter integer 3: ");
cin >> val3;


//Checks val1 status
if (val1 > val2, val3) {
sortArray[1] = val1;
}
if (val1 > val2, val1 < val3){
sortArray[1] = val3;
sortArray[2] = val1;
sortArray[3] = val2;
}
if (val1 > val3, val1 < val2){
sortArray[1] = val2;
sortArray[2] = val1;
sortArray[3] = val3;
}

//checks val2 status
if (val2 > val1, val3){
sortArray[1] = val2;
}
if (val2 > val1, val2 < val3){
sortArray[1] = val3;
sortArray[2] = val2;
sortArray[3] = val1;
}
if (val2 > val3, val2 < val1){
sortArray[1] = val1;
sortArray[2] = val2;
sortArray[3] = val3;
}

//checks val3 status
if (val3 > val1, val2){
sortArray[1] = val3;
}
if (val3 > val1, val3 < val2){
sortArray[1] = val2;
sortArray[2] = val3;
sortArray[3] = val1;
}
if (val3 > val2, val3 < val1){
sortArray[1] = val1;
sortArray[2] = val3;
sortArray[3] = val2;
}

printf("Values sorted are: %d, %d, %d", sortArray[1], sortArray[2], sortArray[3]);
}

当按以下顺序输入值时,此程序有效:

1, 2, 3

1, 3, 2

3, 1, 2

但不适用于:

2, 3, 1

3, 2, 1

2, 1, 3

有什么想法我在这里做错了吗?我需要一些帮助,因为这让我烦恼了一段时间。

最佳答案

我认为您可能对 if 语句在 C++ 中的工作方式有些困惑。如果您希望多个条件都必须为真才能执行代码,则需要使用 &&,而不是逗号。逗号做一些不同的事情,它们执行多个语句但只使用最后一个进行评估。 Read this article ,特别是标题为“逻辑运算符”和“逗号运算符”的部分。

总而言之,对于每一个 if 语句,用 && 替换逗号。但是,这并没有解决您的排序算法可扩展性不强的事实,因为您已经对所有可能的场景进行了硬编码。查找一些真实的 sorting algorithms .

关于C++ - 需要一些关于这个排序代码的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31418132/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com