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

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

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

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

受付中

【C言語】Make10「8115」が解けない(整数型)

izuki_y
izuki_y

総合スコア63

C

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

3回答

-1評価

0クリップ

481閲覧

投稿2022/01/10 06:33

C言語で入力した数字で10が作れるかどうかを確認するMake10作りました。
試しに色々な数字を入れて確認しましたが、「8115」が解けません。
(8÷(1-(1÷5)))=10になるのを期待したんだけどなぁ。

Floatとかdouble使うしかないのでしょうか。

C

#include <stdio.h> typedef int (*Op)(int, int); int add(int a, int b) { return (a + b); } int sub(int a, int b) { return (a - b); } int mul(int a, int b) { return (a * b); } int div(int a, int b) { return b ? (a / b) : 9999; } Op o[] = { add, sub, mul, div }; char* op_str[] = { "+", "-", "×", "÷" }; int main() { int num[4] = { 0 }; int a, b, c, d; // オペランド int i, j, k; // 演算子 int n; // 標準入力(エラーチェックなし) char str[256]; printf("4桁の数字を入力してください。\n"); scanf_s("%s", str,256); printf("入力値は「%s」です。\n", str); a = str[0] - '0'; b = str[1] - '0'; c = str[2] - '0'; d = str[3] - '0'; for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) { for (k = 0; k < 4; k++) { // (a+b)+(c+d) if (o[j](o[i](a, b), o[k](c, d)) == 10) { printf("(%d %s %d) %s (%d %s %d)\n", a, op_str[i], b, op_str[j], c, op_str[k], d); } // {(a+b)+c}+d if(o[k](o[j](o[i](a, b), c),d) == 10){ printf("{(%d %s %d) %s %d} %s %d\n", a, op_str[i], b, op_str[j], c, op_str[k], d); } // a+{b+(c+d)} if (o[i](a, o[j](b, o[k](c, d))) == 10) { printf("%d %s {%d %s (%d %s %d)}\n", a, op_str[i], b, op_str[j], c, op_str[k], d); } // {a+(b+c)}+d if(o[k](o[i](a, o[j](b, c)), d) == 10){ printf("{%d %s (%d %s %d)} %s %d\n", a, op_str[i], b, op_str[j], c, op_str[k], d); } // a+{(b+c)+d} if (o[i](a, o[k](o[j](b, c), d)) == 10) { printf("%d %s {(%d %s %d) %s %d}\n", a, op_str[i], b, op_str[j], c, op_str[k], d); } } } } }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

kazuma-s

2022/01/10 07:58

4桁の数字を入力してください。2345 入力値は「2345」です。 {2 + (3 ÷ 4)} × 5 {2 - (3 ÷ 4)} × 5 {(2 × 3) - 4} × 5 2 × {(3 ÷ 4) + 5} 分数を使わないとだめです。
thkana

2022/01/10 08:04

その質問の場合だけに限定するなら固定小数点というのも考えますが、一般に大丈夫かというと私の手に余る...
episteme

2022/01/10 08:17

struct rational { int num, den; /* 分子,分母 */ }; を定義し、こいつの四則演算をこしらえれば。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

C

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