2016-11-14 3 views
0
#include <iostream> 

using namespace std; 

int main() 
{ int a,b,c,Highest; 
    cout<<"Enter three numbers:"; 
    cin>>a>>b>>c; 
     Highest=(a>b&&a>c?a:b>c?b:c); 
     cout<<"Highest is:"<<Highest; 

    return 0; 
} 

Je sais comment trouver plus de 3 numéros en utilisant operator.BUt conditionnelle Comment trouver le plus élevé de 4 numéros en utilisant l'opérateur conditionnel dans c + ??? quelqu'un peut m'aider?le plus élevé de 4 numéros par operater conditionnel

+3

Utilisation de l'opérateur ternaire pour cela rendra le code illisible, mais si vous devez l'utiliser (dans le cadre de votre mission), utilisez-en davantage. –

+0

vous voulez dire quelque chose de moche comme: a> b && a> c && a> d? A: b> c && b> d? B: c> d? C: d bons dieux! – Djee

+1

'std :: max (a, std :: max (b, std :: max (c, d)));' – Arunmu

Répondre

0

Placez-les dans un vecteur et utiliser std::max_element:

std::vector<int> vec; 
int tmp; 
for(int i = 0; i < 3; ++i) 
{ 
    std::cin >> tmp; 
    vec.push_back(tmp); 
} 
int max = *std::max_element(vec.begin(), vec.end()); 
std::cout << max << std::endl; 
+4

Ou en C++ 11: 'std :: max ({a, b, c, d})' – Persixty

+0

@DanAllen Bon de savoir que nous avons ceci :) – Arunmu

0
Highest=(a>b&&a>c&&a>d?a:b>c&&b>d?b:c>d&c:d); 

Ce code est assez illisible afin de mieux pour le développer en utilisant un ensemble de clauses conséquentes if. Le code ci-dessous fonctionnera pour n'importe quel nombre d'éléments, il suffit de remplacer SIZE avec le nombre d'éléments souhaité.

-3

#include <iostream> 

using namespace std; 

#define SIZE 4 

int GetMax(int[], int, int, int); 

int main() 
{ 

    int a[SIZE]; 
    int i=0; 

    while(i < SIZE) 
    { 
     cout << "Enter input " << i+1 << " : "; 
     cin >> a[i++]; 
    } 

    cout << "Highest = " << GetMax(a, 0, SIZE, a[0]) << endl; 

    return 0; 
} 

int GetMax(int a[], int i, int n, int max) 
{ 
    return (i < n-1) ? GetMax(a, i+1, n, (a[i] > max ? a[i] : max)) : a[i] > max ? a[i] : max; 
} 
+0

Essayez d'entrer -4, -1, -3, - dix. Qu'est-ce qu'il imprime? Que devrait-il imprimer? –

+0

Envisagez également d'utiliser 'return i == 0? max: GetMax (a + 1, i-i, (a [0]> max? a [0]: max); ' –

+0

Fait la correction pour les nombres négatifs. –

1

Pour moi, la question n'est pas grande, comme un moyen quand apprendre comment faire cela.

Je voudrais plutôt demander comment trouver le plus élevé de trois nombres - en utilisant la connaissance de la façon de trouver le plus élevé de deux nombres, et ensuite construire sur cela.

Comme @ Certains-programmeur-dude indiquent cela utilisera les résultats intermédiaires:

int highest = a>b ? a : b; 
    highest = highest>c ? highest : c; 
    highest = highest>d ? highest : d; 

ou si vous voulez le parallélisme:

int hFirstPart = a>b ? a : b; 
int hSecondPart = c>d ? c : d; 
int highest = hFirstPart>hSecondPart? hFirstPart : hSecondPart;