- 締切済み
課題で悩んでます
nclude <stdio.h> void main(){ int okane; float kion; printf("今日のお金は?\n"); scanf("%d",&okane); printf("今日の気温は?\n"); scanf("%f",&kion); if( okane >=700&&kion>=30.0 ){ printf("冷やし中華を食べよう\n"); } if( okane >=700&&kion<30.0 ){ printf("ラーメンを食べよう\n"); } if( okane <=700){ printf("バイトしろ"); } } この文で論理演算子を抜いてifelse文に書き換えろという課題が出たのですが分からないので全文教えて下さい
- みんなの回答 (8)
- 専門家の回答
みんなの回答
- yama5140
- ベストアンサー率54% (136/250)
(このまま、閉められたらマズイ・・?) >もっと詳しく教えて下さい(#1 さんへの「お礼」) 例えば、 699円で気温が30℃のときは、 バイトしろ 700円で気温が30℃のときは、 冷やし中華を食べよう バイトしろ 700円で気温が25℃のときは、 ラーメンを食べよう バイトしろ 701円で気温が30℃のときは、 冷やし中華を食べよう ですよね。 整理すると、700円の時は、「・・食べよう」と「バイトしろ」と表示します。 >= 700 <= 700 双方に = があるので、金額での分岐に else は使えません。 気温については、>= 30.0 と < 30.0 で、2つに分岐できるので else を使えます。 if( okane >= 700 ){ if( kion >= 30.0 ) printf( "冷やし中華を食べよう\n" ); else printf( "ラーメンを食べよう\n" ); } if( okane <= 700 ) printf( "バイトしろ" );
- 和泉 博(@hiroshi09s)
- ベストアンサー率54% (59/109)
あなたの回答↓は、if~else 文の使い方がまったくなっていません。初歩的なプログラミング以前の問題です。 #include <stdio.h> void main(){ int okane; float kion; printf("今日のお金は?\n"); scanf("%d",&okane); printf("今日の気温は?\n"); scanf("%f",&kion); if( okane >=700) }elseif{( kion>30.0) //←if()文書式が間違ってます printf("冷やし中華を食べよう\n"); if( okane >=700) }elseif{(kion<30.0 ) //←if()文書式が間違ってます printf("ラーメンを食べよう\n"); }else{( okane <=700) //←if()文書式が間違ってます printf("バイトしろ"); } 出題は、if()文の流れを把握しているかどうかを問うものです。 回答は、例題プログラムを良く読み、どのような状況においてバイトしなくてはならないのか、どのような状況のときにラーメン等を食べることが出来るのかを把握することが求められています。 結論は、お金700円を持ち合わせていないならバイトしなければなりませんが、700円以上を持ち合わせていたならばラーメン等を食べることになります。それゆえ、プログラムは所持金700円が最初に来て、気温はその次となります。 /* 回答プログラム */ #include <stdio.h> int main(void) { int okane; float kion; printf("今日のお金は?\n"); scanf("%d",&okane); printf("今日の気温は?\n"); scanf("%f",&kion); if(okane<700) { //出題があいまいです printf("バイトしろ\n"); } else if(kion>=30.0 ){ printf("冷やし中華を食べよう\n"); } else { printf("ラーメンを食べよう\n"); } return 0; }
- hidebun
- ベストアンサー率50% (92/181)
ふむふむ、700円ちょうどの時に挙動が異なってしまうわけですね。>#2さんのプログラム そこがこのプログラムの引っ掛けだったのか。。。 質問者さんは、#2さんのプログラムを参考に、700円ちょうどの時に気をつけて、課題、頑張って下さい。 それでもわからなければ、 if(yaruki == 0) { printf("諦めろ\n"); } ということで。
- Tacosan
- ベストアンサー率23% (3656/15482)
ダウト>#2. そのプログラムは, 与えられたプログラムとは異なる挙動を示します. つまり「書き換えた」結果とは言えません.
- yumeno_kira
- ベストアンサー率72% (8/11)
書いてみたら、こうなったということですが。 まず、構文的にむちゃくちゃです。 > if( okane >=700) > }elseif{( kion>30.0) > printf("冷やし中華を食べよう\n"); > if( okane >=700) > }elseif{(kion<30.0 ) > printf("ラーメンを食べよう\n"); > }else{( okane <=700) > printf("バイトしろ"); if (式) 文; else 文; という形になっていますか? どうも、ただ単に、 && を elseif という文字に(括弧も付け足して)変換してみただけのようですが、そもそも if(a && b) …… → a も b も両方満足したときに…… if(a) else if(b) …… → a じゃ「なくて」、かつ、b のときに…… なので、(正しい構文になるように)単純に置き換えたとしても、同じ意味にはなりません。
- kmee
- ベストアンサー率55% (1857/3366)
- anubs
- ベストアンサー率72% (8/11)
・・・・せめてどうしてこうなるかよ~く考えるように(現役PGより) include <stdio.h> void main(){ int okane; float kion; printf("今日のお金は?\n"); scanf("%d",&okane); printf("今日の気温は?\n"); scanf("%f",&kion); if( okane >=700){ if(kion >= 30.0) printf("冷やし中華を食べよう\n"); else printf("ラーメンを食べよう\n"); } else{ printf("バイトしろ"); } }
- anubs
- ベストアンサー率72% (8/11)
>> if( okane >=700&&kion<30.0 ){ >> printf("ラーメンを食べよう\n"); >> } >> if( okane <=700){ >> printf("バイトしろ"); >> } okaneに入力された数字が700以上で かつkionが30.0以上なら「ラーメンを食べる」 ということは 上記に『当てはまらなければ』 すべて『バイトしろ』なんです。 あとはif-elase文の開設を調べれば おのずと答えは出るはずですよ。
お礼
もっと詳しく教えて下さい
補足
#include <stdio.h> void main(){ int okane; float kion; printf("今日のお金は?\n"); scanf("%d",&okane); printf("今日の気温は?\n"); scanf("%f",&kion); if( okane >=700) }elseif{( kion>30.0) printf("冷やし中華を食べよう\n"); if( okane >=700) }elseif{(kion<30.0 ) printf("ラーメンを食べよう\n"); }else{( okane <=700) printf("バイトしろ"); } このようにやってみたのですがエラーがでたので訂正してください