前提・実現したいこと
C言語です
適当な数字を配列に格納し、その数字が50以上だったらA、50未満だったらBをプリントする、という風にしたい場合?に何を入れればいいかわかりません。
該当のソースコード
C言語
1#include<stdio.h> 2 3int main(void) 4{ 5 int score[30]; 6 int score_count; 7 int score_point; 8 int i; 9 10 score_count=0; 11 while(1){ 12 scanf("%d",&score_point); 13 if(score_point==0){ 14 break; 15 } 16 score[score_count]=score_point; 17 score_count++; 18 } 19 20 for(i=0; i<score_count; i++){ 21 printf("score[%d]...%d\n",i,score[i]); 22 if (50<=?){ 23 printf("A\n"); 24 }else if(50>?){ 25 printf("B\n"); 26 } 27 } 28 return 0; 29} 30
試したこと
score[i]やscore_pointを入れてみましたが、できませんでした。
日本語の問題でしょうか。
「その数字」とは何でしょう?
> できませんでした
どうなるはずがどうなって「できなかった」と判断されたのでしょうか。
その数字、は適当に配列に格納した数字です。
できませんでした、というのは50以上でも以下でも結果がAになってしまった、という事です。
[2021/11/02 09:12]の質問編集を読んで:
回答をいただいた上で編集したようですが、そもそも提示のコードはコンパイルエラーが出る未完成品です。
> berak;
"berak"ではありません。"break"です。
> print("B\n");
"print"ではありません。"printf"のはずです。ちゃんとコンパイルして実行して試したのでしょうか。
良く見るとfor文で使っている変数iの定義もない。質問用に転載してミスったようですが、問題が起きているコードとは違う、コンパイルエラーも起きるコードでやり取りしても時間が無駄になります。
プログラムを打ち込んだ物をコピペ出来なかったのでここに投稿する時は全部手書きでやってました…なので実際に実行する時はエラーも出てないので合っています……。
記載ミスすみません…直します。
iの定義も書き忘れていましたが、実際には書いてます…
手元にエディターで書いたC言語ソースファイルがあるのでしょう? それを手元の開発環境で実行して結果が分かるのではないのですか?
実行してもエラーが出ないためよく分かりません…C言語は始めたてでちゃんと分かってなくて…すみません、
コピペできない状況というのが分かりませんが、(やり方が分からないのか、何らかのコピーガードがあるのか)
コピー&ペーストの仕方:
1. 何らかのテキストエディターでC言語ソースファイルを開く。
2. 表示されている内容すべてを選択。(ショートカットキー「CTRL+A」でできる場合もある)
3. 選択されている内容をクリップボードへコピー。(大抵の場合、ショートカットキーCTRL+C)
4. 3.で選択した内容をペースト。(大抵の場合、ショートカットキー CTRL+V)
コピペのやり方は分かっているのですが、何故か出来なくて…ご丁寧にありがとうございます!次回以降試してみます。
今回は恐らく全部修正できてると思います…
まだまちがいあったらすみません…
プリントで配られた課題だからコピペできないんだと思います。
どう見ても穴埋め問題ですから。
> まだまちがいあったらすみません…
こういうのは正直、回答する意欲を削ぐのでやめた方がいいです。(私は削げました)
すみません、穴埋め問題でなく自分で作った問題ですのでそう言われましても…という感じです。
自分で作れるわけがない。
ここのサイトで質問するのが初めてだったので申し訳ないです。以後気をつけます。
なぜ作れるわけがないとおっしゃるのでしょうか…?
作れる人はこんなことで悩まないから。
for の前に while の中身を書くところでつまずく。
先生から頂いたスライドを見ながら試行錯誤して作っており、C言語を学ぶのは数週間目なので分からないことの方が沢山です。その中で調べながらやっておりますので、【作れる人】ではありません。まだ初心者で分からないため質問させていただいています。また、質問のところにも初心者マークを付けさせていただいています。
だから作れるわけがないと言ったんだけど。
for,whileどちらか、もしくはどちらも使用するとの事だったので両方使用しています。
作れない人ならばこれが作れるわけが無い
ということを仰りたいようですが、参考資料があります。それを見ながら作っておりますので、作れる部分があり、作れない部分は質問させていただいているのです。
一応指摘しておきますと、
> まだまちがいあったらすみません…
間違いまだあります。?の部分を直してもコンパイル通りません。中カッコが足りない。epistemeさんにいただいた回答から解決していってください。
「作る」ではなく「書き写す」と言うならわかる。
だから「作る能力のない人がプリントを見ながら書き写した」と言ったまで。
プリントではなくスライドだと言うなら、そんなものどっちでも同じ。
dodox86さん、ありがとうございます。確かにカッコが足りませんでした。付け足してきます
確かにまだ不勉強ですし、分からないことが沢山ありますので、作る、ではなく書き写す、の方が仰りたいことは伝わります。しかし書き写すでは無く、私自身これを書く際に「参考に」して書いたため、そのような書き方にしました。
おそらく他の方にも通知がいってしまいますし、質問の意図とは反しており解決しないためこれ以上の返信は控えさせていただきます。
ここは宿題代行サイトではない。
反論は無用。
https://teratail.com/help/avoid-asking
> 何かを作りたいのでコードを書いてほしい、学校の課題を解いてほしい等の質問は、具体的にプログラミングで困っている質問ではないと考え、推奨していません。
うーん、ちょっとズレてるなと思うので返信します、何かを作りたい、課題を解いて欲しい、では無く、「課題を作るにあたって1部分からないプログラミングがあるのでそれをどうするか知りたい」はプログラミングで困ってる質問では無いのでしょうか?コードを書いて欲しい、課題を解いて欲しい、という意図は一切書いていないと思うのですが。
課題を解いてほしいわけではないならもう既存の回答で解決してるはず。
穴埋め問題の穴の中身を教えてほしいという質問のどこが課題代行でないのか理解できない。
いや、それ以前に while の中が理解できていれば間違えるはずがない。
通知がいくので反論は無用。
> score[i]やscore_pointを入れてみましたが、できませんでした。
「できませんでした」を説明してください。期待する結果と実際の結果を。
入力した数字が50以上だったらA、50未満だったらBをプリントする、ということをしたいのですが、score[i]やscore_pointをいれてもAしか出力されませんでした。
> score[i]やscore_pointをいれてもAしか出力されませんでした。
...おかしいな、僕とこでは score[i]でちゃんと動いてくれましたよ?
質問に示したコードと異なってはいませんか?
---実行結果
10
20
50
60
0 ←ここまで入力
score[0]...10
B
score[1]...20
B
score[2]...50
A
score[3]...60
A
言葉で『どのようにした』と書くよりも、コードを載せた方が無難ですよ。
場合によっては質問者と回答者がそれぞれ違う意味で取っている可能性があるので。
実際に試した入力と「できなかった」という出力、「どうなって欲しかった」かを示す出力を質問に追記してはどうでしょうか
epistemeさん
ほんとうですか!?もう一度やり直してみます。ありがとうございます。
BeatStarさん、WoodenHamletさん
まとめてのお返事ですみません。分かりました!もう一度確認をしてみてから記載します。
epistemeさん もう一度やり直してみたところ、正しく実行することができました。長々とお時間いただいてしまってすみません。
何回書き直して実行しても治らなかったのですが、おそらく修正してくださった段階でできるようになったのかなと思います。
... コンパイルしてない、とか。
いつも実行するときと同じように今回もやっていたので、コンパイルはできていると思います…
> ?に何を入れればいいか
という課題点に関して直接的な回答を示したというのに,無視で終了にゃん?
fanaさん いまいち理解ができなかったので後でもう一度読み直してから返信しようと思っていたら返信するのを忘れてしまっていました…申し訳ないです。
回答2件
あなたの回答
tips
プレビュー