#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 + ???
кто-нибудь может мне помочь ??
Для меня вопрос не велик, как способ узнать, как это сделать.
Вместо этого я бы спросил, как найти старшее из трех чисел, используя знания о том, как найти старшее из двух чисел, а затем опираться на это.
Как указывает @ 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;
Поместите их в вектор и используйте 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;
Highest=(a>b&&a>c&&a>d?a:b>c&&b>d?b:c>d&c:d);
Этот код довольно нечитабелен, поэтому лучше расширить его, используя набор последовательных if
статьи.
Ниже код будет работать для любого количества элементов, просто замените размер на желаемое количество элементов.
#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;
}