试图从最小值到最大值对C++的3个值进行排序
trying to order 3 values from least to greatest C++
我有一个程序,它接受一个人输入的数字并求和。这种情况发生了3次,所以我总共有3次。我遇到的问题是,无论总和是多少,我都需要从大到小排序
#include <iostream>
#include <string>
using namespace std;
string firstName1, lastName1; // input and output for the users names
string firstName2, lastName2;
string firstName3, lastName3;
// from greatest to least
if ( sum > sum_2 > sum_3 )
{
cout << "Total for" << " " << firstName1 << " " << lastName1 << " " << "$" << sum << ".00" << endl;
cout << "Total for" << " " << firstName2 << " " << lastName2 << " " << "$" << sum_2 << ".00" << endl;
cout << "Total for" << " " << firstName3 << " " << lastName3 << " " << "$" << sum_3 << ".00" << endl;
}
在c++中,语法sum > sum_2 > sum_3
不会像您所假设的那样求值。它相当于(sum > sum_2) > sum_3
。
在sum
大于sum_2
的情况下,sum > sum_2
将评估为true。然后,该布尔值将被转换为整数1,并与sum_3
进行比较。
要做你试图完成的事情,请尝试:
if (sum > sum_2 && sum_2 > sum_3)
使用助手交换函数:
void swap( int *a, int *b )
{
int temp = *a;
*a = *b;
*b = temp;
}
泡沫分类:
int sums[3] = { sum, sum_2, sum_3 };
for ( int i = 0; i < 3; ++i )
for ( int j = 0; j < i; ++j )
if ( sums[j] < sums[i] )
swap( &sums[j], &sums[i] );
cout << "Total for" << " " << firstName1 << " " << lastName1 << " " << "$" << sums[0] << ".00" << endl;
cout << "Total for" << " " << firstName2 << " " << lastName2 << " " << "$" << sums[1] << ".00" << endl;
cout << "Total for" << " " << firstName3 << " " << lastName3 << " " << "$" << sums[2] << ".00" << endl;
相关文章:
- 查找两个排序向量中共有的元素
- C++ 如何比较n个排序的整数向量以找到互元素?
- 合并两个排序链表时运行时出错
- 在 C++ 中合并两个排序链表
- 合并 2 个排序的链表。必需的成员函数 bool Merge(List342 &list1):
- 两个排序的链接列表C 的交点
- 合并两个排序的链表
- 合并两个排序的列表 - 不起作用
- 使用不同的比较函数合并两个排序的双向量
- 在完成对 k 个排序流进行排序的函数时需要帮助
- 如何在 c++ 中合并多个排序范围
- (C++)如何创建一个函数来接收两个排序的链表并返回出现在两个列表中的第三个元素列表
- 比较两个排序的数字向量(性能优先)
- 如何在c++中使用两个排序标准(对于一组对)创建有序集
- 合并两个排序的链接列表
- 在给定两个排序向量的情况下设置减法
- 在C++中合并两个排序的列表
- 将值插入到两个排序不同的 BST 中
- 合并两个排序的链表
- 合并两个排序的单向链表 [错误]