【发布时间】:2015-11-29 09:13:07
【问题描述】:
我编写了一个代码,它接受 3 个整数(整数、分子和分母)的输入并将它们显示为“a{b/c}” 我已经定义/声明了一个类(分数),其中包含这 3 个单独的整数变量以及读取和打印它们的函数。 为了存储这些不同的输出中的几个,我创建了一个定义的类类型的动态数组。 我想将所有值加在一起,例如 fract[0].a + frac[1].a .. etc 用于整数部分,并找到小数部分的总和,然后显示。
对于类声明,我包含了一个友元函数:
friend fraction operator +(fraction, fraction);
我还声明了 2 个分数类型的动态数组
fraction* fracarry = new fraction[x];
fraction* fractot = new fraction[1];
fracarry 存储输入的分数,fractot 初始化为:
numerator = 0;
denominator = 1;
integral = 0;
友元函数定义如下:
fraction operator+(fraction, fraction)
{
for(int i = 0; i < x; i++)
{
fractot[0].denominator += fracarry[i].denominator*fractot[0].denominator;
fractot[0].integral += fracarry[i].integral;
fractot[0].numerator += ((fracarry[i].numerator*fractot[0].denominator) + (fractot[0].numerator*fracarry[i].denominator));
}
return fractot[0];
}
其中 x 是来自用户的输入,表示将输入多少个分数。
主要功能是:
cout << " Please input how many fractions you will be inputting: " << endl;
cin >> x;
fraction *fracarry = new fraction[x];
fraction *fractot = new fraction[1];
fracarry[0].read();
fractot[0] = fractot[0] + fracarry[0];
fractot[0].print2();
我不确定是否应该在函数定义或主函数中添加循环。它符合要求并且读取/打印功能可以工作,但我无法让它显示 fractot.print2() 作为存储在 fracarry 中的值的最终总和
我不想要确切的代码,只想要任何关于我可能出错/查找什么的提示,或者任何可能有帮助的教程等
谢谢!
**编辑 这是同一个问题,但我试图减少不相关的代码/使其更符合要求!
【问题讨论】:
-
注意: += 不是 =+ 。我现在没有时间阅读所有内容。
-
请发帖Minimal, Complete, and Verifiable example。您有很多与核心问题无关的代码。
-
这段代码有太多错误。尝试一次解决一个问题。
-
如果您养成以有意义的方式布局代码的习惯,例如“=+”而不是“+=”,您将更容易发现错别字。使用一致的缩进样式,不要随意放置空行。
-
@RSahu 谢谢,我知道很多我只是不确定问题出在打印功能还是朋友功能上,但会再次发布
标签: c++ class dynamic-arrays friend-function