最大和最小的数字不打印

时间:2014-09-24 17:13:35

标签: c++

它适用于最大数量,但不适用于最小数量plz检查此代码中的什么是prblm。当我运行此程序时,它显示最大数量但不显示最小数量。在这种情况下,什么是metter我有些重要的意见。  假设我必须输入数据 10 55 2 44 它显示输出最大值是55 但应该显示结果 最大的不是55 最小的是2是

#include<iostream>
using namespace std;
int main()
{
int a,b,c,d,max,min;
cout<<"enter 1st number:";
cin>>a;
cout<<"enter 2nd number:";
cin>>b;
cout<<"enter 3rd number:";
cin>>c;
cout<<"enter 4th number:";
cin>>d;
if(a>b)
{
if(a>c)
{
if(a>d)
{
cout<<a<<" is greatest";
}
}
}
else if(b>c)
{

if(b>d)
{
cout<<b<<" is greatest";
}
}
else if(c>d)
{

cout<<c<<" is greatest";
}
else
{

cout<<d<<" is greatest";
}
if(a<b)
{

if(a<c)
{

if(a<d)
{

cout<<a<<" is smallest";
}
}
}
else if(b<c)
{

if(b<d)
{

cout<<b <<" is smallest";
}
}

else if(c<d)
{

cout<<c<<" is smallest";
}
else
{

cout<<d<<" is smallest"; 
}
return (0);
}

2 个答案:

答案 0 :(得分:0)

假设a> b,a&gt; c和a

你的第一个if bloc失败了:

if (a>b)  // yes
{
    if (a>c)  // yes 
    {
        if (a>d) // <=== false but no else clause for this one !!
        {
            cout << a << " is greatest";
        }
    }
}

然后,您的代码将跳过所有相关的其他条款,并继续执行以下操作:

if (a<b)  // fails 
{
    if (a<c)
    {
        if (a<d)
        {
            cout << a << " is smallest";
        }

然后它会跳过else子句,然后跳过!你在代码的最后,没有打印任何东西!

答案 1 :(得分:0)

作为替代方案,我会使用更具可扩展性的东西。将所有数字放在std::vector<int>中,然后使用std::max_elementstd::min_element分别查找最大值和最小值。

#include <algorithm>
#include <iostream>
#include <vector>

int main() {
    int a,b,c,d;
    std::cout<<"enter 1st number:";
    std::cin>>a;
    std::cout<<"enter 2nd number:";
    std::cin>>b;
    std::cout<<"enter 3rd number:";
    std::cin>>c;
    std::cout<<"enter 4th number:";
    std::cin>>d;

    std::vector<int> numbers = {a,b,c,d};

    auto largest = std::max_element(begin(numbers), end(numbers));
    std::cout << "max element is: " << *largest << '\n';

    auto smallest = std::min_element(begin(numbers), end(numbers));
    std::cout << "min element is: " << *smallest << '\n';

    return 0;
}

Working example