2015-08-30 37 views
1
#include <iostream> 
using namespace std; 
int main() 
{ 
    int num1,num2,num3,num4; 
    int x; 
    int y; 
    cin>>num1>>num2>>num3>>num4; 
    if (num1 > num2) 

    { 
     x=num1; 
    } 
    else 
     {x = num2; 
     } 
    if(num3>num4) 
     {y = num3; 
     } 
    else 
    { 
     y= num4; 
    } 
    if (x>y) 
    {cout<<"the largest number is:"<<x; 

    } 
    else 
    { 
     cout<<"the largest number is :"<<y; 
    } 
    return 0; 
} 

这是我的代码,用于打印4个数字中的最大数字。 问题是我被要求优化或压缩解决方案。 我试过,但无法找到另一种方式来写这样program.Can任何一个可以帮助我优化的解决方案,使之更好.. 忽略语法错误..打印4个数字中的最大数字优化

+0

要压缩源代码,把所有4个值中的阵列。然后在for循环中检查当前冠军对抗当前元素。保持较高者。 4轮后退出并输出赢家。实际上你可以做任何其他变量。如果(num [i]> num [0])num [0] = num [i]。然后在循环cout << num [0]; – WDS

+0

提示:使用'std :: vector '来存储数字并查找循环中最大的数字。 –

回答

4
#include<iostream> 

using namespace std; 

int main() { 
    int x, m; 
    cin >> x; 
    m = x; 
    for (int i = 0; i < 3; ++i) { 
     cin >> x; 
     m = m > x ? m : x; 
    } 

    cout << "The largest number is: " << m << endl; 
    return 0; 
} 

使用循环。

+1

我建议不要使用'max'作为变量名。这影响了许多代码读者期望看到的STL'max'函数(http://en.cppreference.com/w/cpp/algorithm/max)。你仍然可以使用它作为'std :: max',但我认为它仍然是不好的风格。 +1用于将I/O放入循环中,以便在阅读时即时处理数据。 –

+0

@PeterCordes通常我不使用'using namespace std;',所以我没有想过它 – EvgeniyZh

+0

即使没有'使用命名空间标准',我仍然建议不要使用'max'或'min'作为var名称。虽然我不确定当前的C++风格指南有什么不足之处,我通常看C,而不是C++。 –

1

一种方法是将值存储在一个数组并遍历它:

int num[4];  
cin >> num[0] >> num[1] >> num[2] >> num[3]; 

int max = num[0]; 
for (int i = 1; i < 4; ++i) { 
    if (num[i] > max) { 
     max = num[i]; 
    } 
} 
cout << "The largest number is:" << max << endl; 
+0

有没有其他方法,如果我不允许使用数组 –

+1

@HassaanElahi这是一个要求,你应该已经放在这个问题 - 没有通知用户他们的工具是有限的,他们将达到最有效的。 – jaggedSpire

5

可能是如此简单:

int max = std::max(std::max(num1, num2), std::max(num3, num4)); 
+0

您正在使用max作为变量名称和函数调用。 C++如何区分这两个最大值? –

+0

@MoizSajid该函数在'std'命名空间中,该变量不是。 – molbdnilo

0

试试这个:))在这种情况下我不使用std库。只需使用下面的if-else语句即可。如果(a> b)则返回一个else b。 其他情况下,我们可以创建一个数组并向用户请求输入。首先我们将这个数组中的第一个元素设置为MAX值。使用循环并检查。如果当前元素大于MAX,那么我们将MAX值更新为当前值。

int maxOfTwoNumber(int a, int b){ return a>b? a : b; } 
int maxOfFourNumber(int a, int b, int c, int d){ 
    return maxOfTwoNumber(maxOfTwoNumber(a, b), maxOfTwoNumber(c, d)); 
} 
+0

为什么不使用'std :: max'? – Jarod42

+0

在这种情况下,我不使用std库:) –

1

由于C++ 11,可以直接做

const int biggest = std::max({num1, num2, num3, num4});