старшее из 4 чисел по условному оператору

 #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;
}

Я знаю, как найти наибольшее из 3 чисел с помощью условного оператора. Но как узнать наибольшее из 4 чисел с помощью условного оператора в c + ???
кто-нибудь может мне помочь ??

0

Решение

Для меня вопрос не велик, как способ узнать, как это сделать.

Вместо этого я бы спросил, как найти старшее из трех чисел, используя знания о том, как найти старшее из двух чисел, а затем опираться на это.

Как указывает @ Some-programmer-dude, для этого будут использованы промежуточные результаты:

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

или если вы хотите параллелизма:

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

Другие решения

Поместите их в вектор и используйте 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;
0

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

Этот код довольно нечитабелен, поэтому лучше расширить его, используя набор последовательных if статьи.

0

Ниже код будет работать для любого количества элементов, просто замените размер на желаемое количество элементов.

#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;
}
-3
По вопросам рекламы [email protected]