Этот ответ прямо указывает на достижение цели, т.е. получают наибольшее число. Я не уверен, пробовали ли вы это или нет. Или вы просто играете со структурами, чтобы понять это больше.
В любом случае, давайте углубимся в это и внесем несколько изменений ...
Вы можете проверить разницу между struct
и typedef struct
здесь
typedef struct
{
int Numerator;
int Denominator;
float FractionNumber;
}FractionNumber;
Убедитесь, что знаменатель не равен 0 (нулю) (Такие потоки могут обрабатываться с помощью блоков try-catch, но вы можете прочитать их сами, поскольку это может привести к прекращению выполнения)
cout << "Enter Denominator " << i+1 << ": ";
bool check = false;
do {
cin >> a[i].Denominator;
if (0 == a[i]) {
check = true;
}else{
check = false;
}
} while (check);
Оператор деления должен выдать float
a[i].FractionNumber=static_cast<float>(a[i].Numerator)/static_cast<float>(a[i].Denominator);
Функция FindBiggest не нужна для простого сравнения, которое, как я предполагаю, вы пытаетесь сделать.
PrintBiggest может просто проверить числа Franction для сравнения наибольшего значения и вернуть его индекс
int PrintBiggest(FractionNumber *a, int n) {
int index_of_biggest = 0;
for (int i=0; i<n; i++) {
if(a[i].FractionNumber > a[index_of_biggest].FractionNumber) {
index_of_biggest = i;
}
}
return(index_of_biggest);
}
И, наконец, получите этот индекс, чтобы напечатать ваш самый большой номер
int x = PrintBiggest(a,n);
cout << "Biggest is: " << a[x].Numerator << "/" << a[x].Denominator;