【发布时间】:2019-03-17 07:52:43
【问题描述】:
我在调试代码时出现这个错误,问题是打印出最大的分数:
例如:
1/2 5/8 12/9
预期:
12/9
现实:我的代码打印出我输入的所有分数
1/2 5/8 12/9
我只是不知道出了什么问题。我该如何调试?
struct 的概念实在是太令人困惑了。
这是我的代码:
#include <iostream>
#include <cmath>
using namespace std;
struct FractionNumber
{
int Numerator;
int Denominator;
float FractionNumber;
};
void TypeIn(FractionNumber a[] ,int n)
{
for (int i=0; i<n; i++)
{
cout << "Enter Numerator " << i+1 << ": ";
cin >> a[i].Numerator;
cout << "Enter Denominator " << i+1 << ": ";
cin >> a[i].Denominator;
a[i].FractionNumber=a[i].Numerator/a[i].Denominator;
}
}
int FindBiggest(FractionNumber a[], int n)
{
FractionNumber Biggest=a[0];
for (int i=0; i<n; i++)
{
if(a[i].FractionNumber > Biggest.FractionNumber)
{
Biggest.FractionNumber = a[i].FractionNumber;
}
}
return Biggest.FractionNumber;
}
void PrintBiggest(FractionNumber a[], int n)
{
for (int i=0; i<n; i++)
{
if(a[i].FractionNumber = FindBiggest(a,n))
{
cout << "biggest FractionNumber: " << a[i].Numerator << "/" << a[i].Denominator << endl;
}
}
}
int main()
{
int n;
FractionNumber a[100];
cin >> n;
TypeIn(a,n);
PrintBiggest(a,n);
return 0;
}
【问题讨论】:
-
结构名和成员变量名相同。更正一下。
-
您好。我看到了几个问题:(1) 您的 FractionNumber 成员是
float,但 FindBiggest 的返回值是int。 (2) 我不明白 PrintBiggest 中循环的目的(请澄清?)。你可以不用循环。 -
请在此处了解格式化:stackoverflow.com/editing-help 另外请记住您学到的一些英语知识,例如:大写、造句、标点符号…… StackOverflow 不需要完美的英语(否则我自己会很迷茫),但你可以做得更好,不是吗?
-
@seccpur 请解释原因,这并不明显。
-
a[i].FractionNumber = FindBiggest(a,n)应改为a[i].FractionNumber == FindBiggest(a,n)