分数の足し算をさせるプログラムが分かりません。
C言語の問題で分数の足し算までは一応できるんですが、答えがでたときに整数で出すやり方と約分して表す方法が分かりません。
どなたか知恵を貸してくれませんか?
ユーザから4つの整数を入力し、はじめに入力された2個の整数と後に入力された2個の整数を分数と考え、その分数の和を表示するプログラムを作成せよ。
例えば、「3」「4」「5」「6」と入力されたときは、3/4 + 5/6を計算する。
そのプログラム内では分数の和を計算する関数を作成する。
さらに、
約分を行う関数を 再帰呼び出しを利用して作成する。
void yakubun(int *a1, int *a2)
例えば、以下の場合1/2と表示される。
int i=10,j=20;
yakubun(&i,&j);
printf(“%d / %d”, i, j);
ちなみにここまでできました↓
#include<stdio.h>
void bunsu_tasizan(int a1,int a2,int b1,int b2, int *c1,int *c2 )
{
*c1=(a1*b2)+(b1*a2);
*c2=(a2*b2);
}
int main()
{
int x1,x2,y1,y2,z1,z2;
printf("整数を入力してください");
scanf("%d",&x1);
scanf("%d",&x2);
scanf("%d",&y1);
scanf("%d",&y2);
if(x2==0||y2==0||x2==0&&y2==0)
printf("0以外を入力してください");
else{
bunsu_tasizan(x1,x2,y1,y2,&z1,&z2);
printf("%d/%d",z1,z2);}
return (0);
}
No.5ベストアンサー
- 回答日時:
#4 です.
> 再帰はどのように使えばいいのでしょうか?
#4 に挙げた URL の英語版には,再帰版と非再帰 (繰り返し) 版の
擬似コードがあります.
Euclidean algorithm (Wikipedia)
http://en.wikipedia.org/wiki/Euclidean_algorithm
→ Using recursion (再帰版擬似コード)
→ Using iteration (繰り返し版擬似コード)
Cで書けば,
// mとnの最大公約数 (GCD) を求める.
unsigned gcd(unsigned m, unsigned n)
{
return (n == 0) ? m : gcd(n, m % n);
}
たったこんだけ.
No.4
- 回答日時:
> 約分を行う関数を 再帰呼び出しを利用して作成する。
#1 さんのおっしゃるように,最大公約数を再帰関数で求めるということじゃないのかなぁ.
ユークリッドの互除法なら,再帰でも非再帰でも簡単に最大公約数が求められますが.
ユークリッドの互除法 (Wikipedia)
http://ja.wikipedia.org/wiki/%E3%83%A6%E3%83%BC% …
No.3
- 回答日時:
再帰関数が分からないのでしょうか、それとも約分のロジックですか?
約分なら 分子・分母双方の共通因子で除算すれば良いですよね
ということは 2以上で分母の1/2まで調べれば良いということになります
これらの因数で除算した場合の剰余がともに0になればこの因数で約分できることになります
分母/2から2へ遷移していくか逆に 2から分母/2は趣味の問題でしょう
分母/2から2へ遷移したほうが再帰回数は少なくなるでしょうけど
No.2
- 回答日時:
>例えば、「3」「4」「5」「6」と入力されたときは、3/4 + 5/6を計算する。
で、その結果がどう出れば良いんでしょうか?
>答えがでたときに整数で出すやり方と約分して表す方法が分かりません。
↑とありますが、約分はわかりますが、整数で出すというのは??
3/4 + 5/6 = (9+10)/12 = 19/12
19/12と出れば問題ないんでしょうか?
>例えば、以下の場合1/2と表示される。
>int i=10,j=20;
>yakubun(&i,&j);
>printf(“%d / %d”, i, j);
とあるので、見ればわかるでしょと言われてもしょうがないんですが、
整数で・・・というのがわからなかったので...
No.1
- 回答日時:
> 約分を行う関数を 再帰呼び出しを利用して作成する。
この関数の中で、分母・分子の最大公約数を求めればよいと思います。
最大公約数を求める際、再帰呼び出しが使えます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
分数を表示するプログラム(長文です)
C言語・C++・C#
-
既約分数の表示プログラム
C言語・C++・C#
-
分数の計算のプログラミングです。
Visual Basic(VBA)
-
-
4
2つ分数の四則演算を行うプログラム
C言語・C++・C#
-
5
C言語を実行すると-infが出てきて困っています。
C言語・C++・C#
-
6
e^(x^2)の積分に関して
数学
-
7
char str[256]の256の意味は?
C言語・C++・C#
-
8
入力した文字列から母音だけを出力するプログラム
C言語・C++・C#
-
9
数字の位ごとの値を表示するプログラム
C言語・C++・C#
-
10
複数の変数を宣言する時、同時に初期化?できないでしょうか?
Java
-
11
至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分
C言語・C++・C#
-
12
至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報