Function gcd(ByVal a1 As Integer, ByVal b1 As Integer)
Dim c As Integer
Do
c = a1 Mod b1: a1 = b1: b1 = c
Loop Until b1 = 0
gcd = a1
End Function
Private Sub Command2_Click()
Text1 = "": Text2 = "": Text3 = "": Text4 = ""
Text1SetFocus
End Sub
这段代码存在一些语法错误和逻辑问题。以下是一些需要修正的地方:
1 在class定义中,应该在类名后面加上大括号,而不是分号。
2 在构造函数中,你没有创建一个对象来存储输入的参数值。应该将对象的名称命名为p,并使用new运算符来创建它。
3 yuefen()函数应该在Add()函数之前调用,否则输出的结果不准确。
4 Add()函数的公式不正确。应该是 q = ad+bc, w = bd。
5 Add()函数中的变量k没有用到,可以删除。
6 在yuefen()函数中,有两个for循环的条件判断不正确。应该将第一个for循环的w改为d,第二个for循环的q改为c。
修改后的代码如下所示:
```
#include<iostream>
using namespace std;
class Fraction {
int a;
int b;
int c;
int d;
int q;
int w;
public:
Fraction(int x, int y, int m, int n) {
a = x;
b = y;
c = m;
d = n;
if (b == 0 || d == 0)
cout << "输入错误" << endl;
}
void yuefen();
void Add();
};
void Fraction::yuefen() {
int i, j;
if (q > w) {
for (i = 2; i <= w; i++) {
if (q%i == 0 && w%i == 0) {
j = i;
q = q / j;
w = w / j;
i = 2;
}
}
}
if (q < w) {
for (i = 2; i <= q; i++) {
if (c%i == 0 && d%i == 0) {
j = i;
c = c / j;
d = d / j;
i = 2;
}
}
}
cout << q << "/" << w << endl;
}
void Fraction::Add() {
q = ad + bc;
w = bd;
}
int main() {
int f, s, t, l;
cin >> f >> s >> t >> l;
Fraction p = new Fraction(f, s, t, l);
p->Add();
p->yuefen();
return 0;
}
```
请注意,以上代码仅解决了语法问题,并没有对程序进行完整的功能测试。如果还有其他功能问题,可能需要进一步修改。
不能用repeat
如果给的分数是最简的
一楼的程序将输出错误答案
t:=a mod b;
while t<>0 do
begin
a:=b;
b:=t;
t:=a mod b;
end;
这个才对
以上就是关于编程对分子和分母进行约分。求分子和分母的最大公约数要用过程实现。全部的内容,包括:编程对分子和分母进行约分。求分子和分母的最大公约数要用过程实现。、c++中输入两个分数,经行相加约分输出、pascal:编写一个给一个分数约分的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)