質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

1回答

716閲覧

c言語分数の約分について

j.m.bts

総合スコア22

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2022/06/24 03:24

編集2022/06/25 02:04

C

1コード 2#include <stdio.h> 3#include <stdlib.h> 4 5typedef struct { 6 int b; 7 int a; 8} frac_t; 9 10int gcd(int x, int y) { 11 while (y != 0) { 12 int t = x % y; x = y; y = t; 13 } 14 return x; 15} 16 17frac_t frac_reduce(frac_t x) { 18 int d = gcd(abs(x.b), x.a); 19 x.b = x.b / d; 20 x.a = x.a / d; 21 return x; 22} 23 24frac_t frac_inv(frac_t x){ 25 if(x.b<=0){ 26 printf("%d/%d",x.a*(-1),x.b*(-1)); 27 }else{ 28 printf("%d/%d",x.a,x.b); 29 } 30} 31 32frac_t frac_mul(frac_t x,frac_t y){ 33 frac_t ret; 34 ret.a=x.a*y.a; 35 ret.b=x.b*y.b; 36 printf("%d/%d",ret.b,ret.a); 37 return frac_reduce(ret); 38} 39 40frac_t frac_div(frac_t x,frac_t y){ 41 frac_t ret; 42 ret.a=x.a*y.b; 43 ret.b=x.b*y.a; 44 printf("%d/%d",ret.b,ret.a); 45 return frac_reduce(ret); 46} 47 48int main(void) { 49 frac_t x = { -7, 12 }; 50 frac_t y = { 1 , 4 }; 51 frac_inv(x); 52 printf("\n"); 53 frac_mul(x,y); 54 printf("\n"); 55 frac_div(x,y); 56 printf("\n"); 57 return 0; 58}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

int32_t

2022/06/24 03:38 編集

コードを ```c と ``` で囲ってください。現在、コード 中の * が欠落して表示されていないようです。
int32_t

2022/06/24 03:58

原因はわかりましたが、質問を放置する方のようですので回答を書くのは遠慮しておきます。
j.m.bts

2022/06/24 04:59

すいません。今後は質問を放置しないように気を付けるので回答お願いできないでしょうか?
int32_t

2022/06/24 06:01

まずは最初のコメントに書いたように * が消えないように質問を編集してください。
BeatStar

2022/06/24 06:34 編集

失礼ですが、他人に頼むなら自分もちゃんとやったほうがいいですよ。 へりくだっている人と横柄な人、どちらをサポートしたいと思いますか? 回答者はあくまで質問者と同じ単なるユーザです。たまたま回答するだけです。 回答する義務もないし義理もありません。 それなのに他のユーザが指摘したことを直そうともせずに一方的に「回答してください」とするのは人によっては横柄に見えます。「御託はいいからつべこべ言わずに答えだけ寄越せ」に見えてしまいます。他のユーザの指摘を受けて改善しようとするならへりくだっている人に見えるので回答しやすいです。 まずは他人にものを頼む態度とは何か考えてみてください。 仮にここで答えだけもらって仕事を得たとしても職場で人間関係で悩むことになり、孤立し、面倒なこと(仕事をやめるとか)になりかねませんよ。 ここで治したほうが身のためかもしれません。…まあお節介がすぎましたね。
BeatStar

2022/06/24 06:32

質問は編集できるので編集してください。お願いします。
tatsu99

2022/06/24 06:54

ソースのアップ方法 以下のようにすると、きちんとソースが表示されます。 </>をクリックします。 ```ここに言語を入力 コード ``` と表示されるので ```① ② ``` ①の箇所にCと入力し ②の箇所にソースをコピペして貼り付けます。 そうすると、きちんと表示されます。 質問は編集可能です。(ソースは再度アップ可能です) 上記のようにして、正しい方法でソースをアップし直してください。
j.m.bts

2022/06/25 02:09

ご指摘ありがとうございます。
BeatStar

2022/06/25 07:25

…自分さえ良ければいいんですか? teratailは「ナレッジサービス」を目的としています。 似たような問題に直面して、検索してこのページにたどり着いた人が「なるほど」となるのでしょうか? 質問文も意図的に削除されているだけなのでなにが問題かすらわかりません。
int32_t

2022/06/25 08:12

コード以外なにもない意図不明の質問になってしまったので低評価します。編集前のほうがマシでした。
guest

回答1

0

ベストアンサー

以下のようにしてください。//addのコメントをつけました。

C

1#include <stdio.h> 2#include <stdlib.h> 3 4typedef struct { 5 int b; 6 int a; 7} frac_t; 8 9int gcd(int x, int y) { 10 while (y != 0) { 11 int t = x % y; x = y; y = t; 12 } 13 return x; 14} 15 16frac_t frac_reduce(frac_t x) { 17 int d = gcd(abs(x.b), x.a); 18 x.b = x.b / d; 19 x.a = x.a / d; 20 return x; 21} 22 23frac_t frac_inv(frac_t x){ 24 if(x.b<=0){ 25 printf("%d/%d",x.a*(-1),x.b*(-1)); 26 }else{ 27 printf("%d/%d",x.a,x.b); 28 } 29} 30 31frac_t frac_mul(frac_t x,frac_t y){ 32 frac_t ret; 33 ret.a=x.a*y.a; 34 ret.b=x.b*y.b; 35 ret = frac_reduce(ret); //add 36 printf("%d/%d",ret.b,ret.a); 37 return frac_reduce(ret); 38} 39 40frac_t frac_div(frac_t x,frac_t y){ 41 frac_t ret; 42 ret.a=x.a*y.b; 43 ret.b=x.b*y.a; 44 ret = frac_reduce(ret); //add 45 printf("%d/%d",ret.b,ret.a); 46 return frac_reduce(ret); 47} 48 49int main(void) { 50 frac_t x = { -7, 12 }; 51 frac_t y = { 1 , 4 }; 52 frac_inv(x); 53 printf("\n"); 54 frac_mul(x,y); 55 printf("\n"); 56 frac_div(x,y); 57 printf("\n"); 58 return 0; 59} 60

実行結果
-12/7
-7/48
-7/3

投稿2022/06/25 02:11

tatsu99

総合スコア5438

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

j.m.bts

2022/06/25 02:14

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問