编程对分子和分母进行约分。求分子和分母的最大公约数要用过程实现。

编程对分子和分母进行约分。求分子和分母的最大公约数要用过程实现。,第1张

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:编写一个给一个分数约分的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10083005.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存