您的位置:首页 > 编程语言 > C语言/C++

Rational Number.c

2016-03-02 21:29 447 查看
3.12 Homework from the text book’s exercise in page 595.

This is the first code I programmed at the spring term and I had experienced many bugs when I did this one. I have to admit that my skill of coding is very awful now. So I will try my best to learn it in the coming period of time. OK, that’s all, cheer up for my first code and my first blog post.

The code is below.

/* rational.c -- exercise 5*/
#include <stdio.h>

typedef struct rationalT
{
int num;
int den;
}rationalT;

rationalT CreateRational(int num, int den);
rationalT AddRational(rationalT r1, rationalT r2);
rationalT MultiplyRational(rationalT r1, rationalT r2);
rationalT GetRational(rationalT r);
rationalT PrintRational(rationalT r);
rationalT Reduction(rationalT r);

int main()
{
int num, den;
rationalT r,r1,r2;
//r = CreateRational(num, den);
r1 = GetRational(r1);
r2 = GetRational(r2);
//r = MultiplyRational(r1,r2);
//r = AddRational(r1,r2);
PrintRational(r);
}

rationalT CreateRational(int num, int den)
{
rationalT r;
r.num = num;
r.den = den;
return r;
}

rationalT AddRational(rationalT r1, rationalT r2)
{
rationalT r;
r.num = r1.num * r2.den + r2.num * r1.den;
r.den = r1.den * r2.den;
return Reduction(r);
}

rationalT MultiplyRational(rationalT r1, rationalT r2)
{
rationalT r;
r.num = r1.num * r2.num;
r.den = r1.den * r2.den;
return Reduction(r);
}

rationalT GetRational(rationalT r)
{
scanf("%d/%d",&r.num, &r.den);
return r;
}

rationalT PrintRational(rationalT r)
{
printf("%d/%d\n", r.num, r.den);
}

rationalT Reduction(rationalT r)
{
int c=1, gcd, t1, t2;
t1 = r.num;
t2 = r.den;
while(c != 0){
if(t1 < t2){
c = t2 % t1;
t2 = t1;
t1 = c;
gcd = t2;
}else{
c = t1 % t2;
t1 = t2;
t2 = c;
gcd = t1;
}
}
r.num /= gcd;
r.den /= gcd;
return r;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 rational