我试图从书中进行练习:编程 - 使用C ++的原理和实践(第二版)
编写一个程序,提示用户输入三个整数值,然后输出值 用逗号分隔的数字序列。因此,如果用户输入值10 4 6,则输出 应该是4,6,10。如果两个值相同,它们应该一起订购。所以,输入 4 5 4应该给4,4,5。
这就是我所做的:
#include "std_lib_facilities.h"
int main(){
int val1 = 0;
int val2 = 0;
int val3 = 0;
cout << "input 3 integers values with spaces between them\n";
cin >> val1 >> val2 >> val3;
int bigger = 0;
int middle = 0;
int smallest = 0;
if(val1 >= val2 && val1 >= val3) {
bigger = val1;
}
if (val1 <= val2 && val1 <= val3) {
smallest = val1;
}
else {
middle = val1;
}
if(val2 >= val1 && val2 >= val3) {
bigger = val2;
}
if (val2 <= val1 && val2 <= val3) {
smallest = val2;
}
else {
middle = val2;
}
if(val3 >= val1 && val3 >= val2) {
bigger = val3;
}
if (val3 <= val1 && val3 <= val2) {
smallest = val3;
}
else {
middle = val3;
}
cout << smallest << " " << middle << " " << bigger << '\n';
return 0;
}
该程序适用于某些值但不是全部,即: 当val3大于val1和val2时,我认为最后有一个问题: else {middle = val3; }
纠正Strousput:http://stroustrup.com/Programming/Solutions/Ch3/e3-6.cpp
对不起,我没有发表任何评论!
答案 0 :(得分:1)
这样的事情应该有效。将值写入数组,对其进行排序然后打印。
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int intArray[3] = {0, 0, 0};
cout << "input 3 integers values with spaces between them\n";
cin >> intArray[0] >> intArray[1] >> intArray[2];
//Since you are using std you should have this sort method
sort(intArray, intArray + 3);
cout << intArray[0] << ", " << intArray[1] << ", " << intArray[2];
return 0;
}
如果您不能使用'sort',请看一下 sorting int array with only 3 elements
答案 1 :(得分:1)
程序中的else部分与前面的if语句一起使用。因此,如果您的第一个if语句运行但第二个if语句没有运行,那么else语句也将运行。 例如,val1 = 4,val2 = 5,val3 = 6。 根据你的代码:
if(val3 >= val1 && val3 >= val2) {
bigger = val3;
}
这是真的,所以它设置更大= 6。然后
if (val3 <= val1 && val3 <= val2) {
smallest = val3;
}
这是假的,所以你的其他部分会运行。
else {
middle = val3;
}
设置中= 6。 对所有3种情况使用if-else梯形图如下:
if(val3 >= val1 && val3 >= val2) {
bigger = val3;
}
else if (val3 <= val1 && val3 <= val2) {
smallest = val3;
}
else {
middle = val3;
}
如果任何条件为真,那么梯子的剩余部分就会被通过。
答案 2 :(得分:0)
我也在做同样的运动,我想出了这个解决方案
#include "std_lib_facilities.h"
int main()
{
int a,b,c,temp;
cout<<"enter three values\n";
cin>>a>>b>>c;
if(a>b && a>c)
{
temp=c;
c=a;
a=temp;
if(a>b)
{
temp=b;
b=a;
a=temp;
}
}
if(b>a && b>c)
{
temp=c;
c=b;
b=temp;
}
cout<<a<<','<<b<<','<<c;
}