|
分数の割り算を求めるプログラムを作ってみたんですが、うまく作動しません。
どこがいけないのか意見を下さい。
#include <stdio.h>
struct frac_t
{
int numerator; /*分子*/
int denominator; /*分母*/
};
struct frac_t div(struct frac_t,struct frac_t);
void print(struct frac_t);
int gcd(int,int); /*最大公約数を求める*/
int main(void)
{
struct frac_t f1,f2,f3;
scanf("%d/%d",&f1.numerator,&f1.denominator);
scanf("%d/%d",&f2.numerator,&f2.denominator);
f3=div(f1,f2);
print(f3);
printf("\n");
return 0;
}
struct frac_t div(struct frac_t f1,struct frac_t f2)
{
struct frac_t fm;
int div;
fm.numerator=f1.numerator/f2.numerator;
fm.denominator=f1.denominator/f2.denominator;
div=gcd(fm.numerator,fm.denominator);
fm.numerator /=div;
fm.denominator /=div;
return fm;
}
void print(struct frac_t f)
{
if(f.numerator > 0){
if(f.denominator > 0){
printf("%d/%d",f.numerator,f.denominator);
}else{
printf("-%d/%d",f.numerator,-f.denominator);
}
}else if(f.numerator < 0){
if(f.denominator > 0){
printf("-%d/%d",-f.numerator,-f.denominator);
}else{
printf("%d/%d",-f.numerator,-f.denominator);
}
}else{
printf("0");
}
}
int gcd(int m,int n)
{
int r;
do{
r = m % n;
m = n;
n = r;
}while(r!=0);
return m;
}
|