#4
by かずま » 7年前
mac さんが書きました:c言語で、4つの自然数a1,a2,b1,b2を入力し、2つの分数 a1/b1,a2/b2 の四則演算を行い、それぞれの式と値を出力するプログラムを作成せよ。という問題についてです。
ヤフー知恵袋との関係を教えてください。
コード:
#include <stdio.h>
int gcd(int a, int b)
{
int r, neg = 0;
if (a < 0) a = -a;
if (b < 0) b = -b, neg = 1;
while (b > 0)
r = a % b, a = b, b = r;
return neg ? -a : a;
}
int main(void)
{
int a1, a2, b1, b2;
int com, sum1, sum2, diff1, diff2, prod1, prod2, quot1, quot2;
printf("4つの自然数を入力せよ\n");
printf("a1 = "); scanf("%d", &a1);
printf("a2 = "); scanf("%d", &a2);
printf("b1 = "); scanf("%d", &b1);
printf("b2 = "); scanf("%d", &b2);
sum1 = a1 * b2 + a2 * b1, sum2 = b1 * b2;
com = gcd(sum1, sum2);
sum1 /= com, sum2 /= com;
diff1 = a1 * b2 - a2 * b1, diff2 = b1 * b2;
com = gcd(diff1, diff2);
diff1 /= com, diff2 /= com;
prod1 = a1 * a2, prod2 = b1 * b2;
com = gcd(prod1, prod2);
prod1 /= com, prod2 /= com;
quot1 = a1 * b2, quot2 = b1 * a2;
com = gcd(quot1, quot2);
quot1 /= com, quot2 /= com;
printf(" %d/%d + %d/%d = %d/%d\n", a1, b1, a2, b2, sum1, sum2);
printf(" %d/%d - %d/%d = %d/%d\n", a1, b1, a2, b2, diff1, diff2);
printf(" %d/%d * %d/%d = %d/%d\n", a1, b1, a2, b2, prod1, prod2);
printf(" %d/%d / %d/%d = %d/%d\n", a1, b1, a2, b2, quot1, quot2);
return 0;
}
実行結果
コード:
4つの自然数を入力せよ
a1 = 3
a2 = 4
b1 = 5
b2 = 6
3/5 + 4/6 = 19/15
3/5 - 4/6 = -1/15
3/5 * 4/6 = 2/5
3/5 / 4/6 = 9/10
[quote="mac" id=3,19385,146540]c言語で、4つの自然数a1,a2,b1,b2を入力し、2つの分数 a1/b1,a2/b2 の四則演算を行い、それぞれの式と値を出力するプログラムを作成せよ。という問題についてです。[/quote]
[url=https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14173698754]ヤフー知恵袋[/url]との関係を教えてください。
[code=c]
#include <stdio.h>
int gcd(int a, int b)
{
int r, neg = 0;
if (a < 0) a = -a;
if (b < 0) b = -b, neg = 1;
while (b > 0)
r = a % b, a = b, b = r;
return neg ? -a : a;
}
int main(void)
{
int a1, a2, b1, b2;
int com, sum1, sum2, diff1, diff2, prod1, prod2, quot1, quot2;
printf("4つの自然数を入力せよ\n");
printf("a1 = "); scanf("%d", &a1);
printf("a2 = "); scanf("%d", &a2);
printf("b1 = "); scanf("%d", &b1);
printf("b2 = "); scanf("%d", &b2);
sum1 = a1 * b2 + a2 * b1, sum2 = b1 * b2;
com = gcd(sum1, sum2);
sum1 /= com, sum2 /= com;
diff1 = a1 * b2 - a2 * b1, diff2 = b1 * b2;
com = gcd(diff1, diff2);
diff1 /= com, diff2 /= com;
prod1 = a1 * a2, prod2 = b1 * b2;
com = gcd(prod1, prod2);
prod1 /= com, prod2 /= com;
quot1 = a1 * b2, quot2 = b1 * a2;
com = gcd(quot1, quot2);
quot1 /= com, quot2 /= com;
printf(" %d/%d + %d/%d = %d/%d\n", a1, b1, a2, b2, sum1, sum2);
printf(" %d/%d - %d/%d = %d/%d\n", a1, b1, a2, b2, diff1, diff2);
printf(" %d/%d * %d/%d = %d/%d\n", a1, b1, a2, b2, prod1, prod2);
printf(" %d/%d / %d/%d = %d/%d\n", a1, b1, a2, b2, quot1, quot2);
return 0;
}
[/code]
実行結果
[code=c]
4つの自然数を入力せよ
a1 = 3
a2 = 4
b1 = 5
b2 = 6
3/5 + 4/6 = 19/15
3/5 - 4/6 = -1/15
3/5 * 4/6 = 2/5
3/5 / 4/6 = 9/10
[/code]