最近C言語を勉強し始めたC言語初心者です。
C言語を使用して、以下のようなコードを書きたいのですが、どうしたらいいのかさっぱりわかりません。
書きたいコード
・オレンジジュース・ソーダ・コーラを併せて20本で2600円(税別)になるようにする。
・全ての組み合わせを表示する。
※オレンジジュース:1本120円(税別)、ソーダ:1本130円(税別)、コーラ:1本150円(税別)
ヒントだけでも構わないので、どなたかご教授お願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
とりあえず全列挙しても8000通り位なので余裕
c
1const int orange_price = 120, 2 soda_price = 130, 3 cola_price = 150; 4const int target_price = 2600; 5for(int orange = 0; orange <= 20; orange++){ 6 int total_orange_price = orange_price * orange; 7 for(int soda = 0; soda * soda_price + total_orange_price <= target_price; soda++){ 8 int total_price_without_cola = soda * soda_price + total_orange_price; 9 for(int cola = 0; cola * cola_price + total_price_without_cola <= target_price; cola++){ 10 int total = cola * cola_price + total_price_without_cola; 11 if(total == target_price && orange + soda + cola == 20) 12 printf("%d, %d, %d\n", orange, soda, cola); 13 } 14 } 15}
さらに、3つ目のfor
ループはよく考えるとループさせる必要がない
もしくは、連立方程式を解く
120orange + 130soda + 150*cola = 2600
orange+soda+cola = 20
下の式を両辺130倍して
130o+130s+130c = 2600
上の式から引くと
-10o+20*c = 0
整理して
2c = o
なので
c
1for(int c = 0; c <= 6; c++){ 2 int o = c * 2; 3 printf("%d, %d, %d\n", o, 20 - (o+c), c); 4}
投稿2018/08/08 01:08
編集2018/08/08 01:18総合スコア15147
0
単純に算数でこの答えを求める方法を、暗算無しで全部書きましょう。
そのあと、それをそのままコードに書き直せばいいだけです。
投稿2018/08/08 00:43
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
ジュース、0から20のループを作って、
その中でソーダ0から20のループを作る。
ジュース+ソーダが20本を超えたらパス
んで、残りの本数をコーラとして値段をチェック。
という処理を組めばいいですね
投稿2018/08/08 00:38
総合スコア87747
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/08 00:50
2018/08/08 00:56
2018/08/08 01:13
2018/08/08 01:17
2018/08/08 02:37
2018/08/08 02:52
2018/08/08 04:43
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/08 01:16