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

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

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

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

Q&A

解決済

2回答

1219閲覧

思い通りにいきません。。。

_sfgh3k

総合スコア18

C

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

0グッド

0クリップ

投稿2018/01/03 14:11

C
5000円札を1000円札,500円玉,100円玉の 3 種類でくずすときに, くずし方のすべての組み合わせおよび組み合わせの個数を求めて 表示するプログラムを for 文の多重ループを使って作成せよ.
というプログラムで、

#include <stdio.h>
int main(void)
{
int i,j,k,l;
int a,b,c,d;
j=0;
k=0;
a=1000;
b=500;
c=100;
d=0;
int count;
count=0;
for(i=5;i>=0;i--)
{
d=5000-a*i;
if(d>0)
{

for(j=0;j<=d%b;j++) { d=d-b*j; if(d>0) { k=d%c; printf("\n1000円が%d枚,500円が%d個,100円が %d個",i,j,k); } else printf("\n1000円が%d枚,500円が%d個,100円が %d個",i,j,k); count++; } } if(i==5)printf("\n1000円が%d枚,500円が%d個,100円が %d個",i,j,k); count++; } printf("\n総数は%d通り",count); return 0;

}

という感じにしたのですがうまくいきません、、、

どこを見直せばよいですか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

okrtさんにプラスしていくつか見つけたのでコメントしようと思いましたが、量が多いので別で回答します。

必須:
if(i==5)printf("\n1000円が%d枚,500円が%d個,100円が %d個",i,j,k);とその2行下のcount++;は不要です。
1個目のif(d>0)は不要です。
d=d-b*j;int e=d-b*j;、その下のif(d>0)if(e>0)k=d%c;k=e/c;
(多分この3つ目が一番大きな問題なのではないかと思います。)

推奨:
k=e/c;はeが0でも問題ないので(被除数が0の場合、商は0なので)、
2個目のif(d>0)も削除できます。

if(d>0){ k=d%c; printf("\n1000円が%d枚,500円が%d個,100円が %d個",i,j,k); } else printf("\n1000円が%d枚,500円が%d個,100円が %d個",i,j,k);

k=d%c; printf("\n1000円が%d枚,500円が%d個,100円が %d個",i,j,k);

投稿2018/01/03 15:57

moredeep

総合スコア1507

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

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

_sfgh3k

2018/01/03 17:12

おっしゃる通りでした。 もやもやがすっきりしました! ありがとうございました。
guest

0

C

1j<=d%b

C

1k=d%c

は、それぞれ

C

1j<=d/b

C

1k=d/c

ですかね。
あと、printfcount++が1対1に対応してない場所がありそうな気がします。

投稿2018/01/03 14:30

okrt

総合スコア366

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

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

okrt

2018/01/03 14:40

また、質問のコードが読みにくいので ```C #include <stdio.h> (途中省略) return 0; } ``` という形にしてみて下さい。
_sfgh3k

2018/01/03 15:06

ありがとうございます! 先ほどよりも答えに近づくことができました。 質問の仕方も気を付けます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問