C言語で次のプログラムを作りたいです。
2つの分数同士の足し算をし、その結果を分数で表示するプログラムで、分子、分母共に最大値が10で、最小値は分母が2、分子が1として、それらの数値をランダムに発生させます。計算結果は、分子と分母がきちんと約分されていて、分子が分母の数で割り切れる場合は、整数として表示させます。
例えば
1/2 + 1/3 = 5/6 ふつう
5/6 + 2/3 = 1.1/2 帯分数
3/8 + 1/8 = 1/2 約分
1/2 + 1/2 = 1 整数
全くわかりませんでしたが一応自分でも次のように考えました。
C
1#include <stdio.h> 2#include <stdlib.h> 3#include <time.h> 4 5int gcd(int,int); 6 7int main(void){ 8 int m,n,i,j,t; 9 double o,p,s; 10 srand((unsigned)time(NULL)); 11 m = rand() % 9 + 2; 12 n = rand() % 9 + 2; 13 i = rand() % 10 + 1; 14 j = rand() % 10 + 1; 15 o = i / m; 16 p = j / n; 17 if((o+p)>=1){ 18 t = (o+p) / gcd(m,n); 19 s = (o+p) - t; 20 printf("%d/%d + %d/%d =%d.%f\n",i,m,j,n,t,s); 21 }else{ 22 printf("%d/%d + %d/%d = %f\n",i,m,j,n,o+p); 23 } 24 return 0; 25} 26 27int gcd(int m,int n){ 28 if(m%n==0){ 29 return n; 30 }else{ 31 return gcd(n,m%n); 32 } 33}
最近C言語を勉強し始めたものです。
2行目から4行目でかいたプログラムにする方法を教えて欲しいです。
ご回答よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー