OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

-1を使う???

  • すぐに回答を!
  • 質問No.205935
  • 閲覧数86
  • ありがとう数1
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 25% (39/151)

 私は今C言語の学習をしています。しかし以下の問いのプログラムがなかなか出来ません・・・。どうか助けてください。お願いしますm(__)m
【問】while文とif文を使う問題
(1)キーボードから各教科のテストの点数を入力し、その合計と平均点を出力しなさい。ただし、入力データの終わりには-1を使うようにして、何科目でも対応できるようにすること。
(2)(1)と同様にキーボードから各教科のテストの点数を入力し、80~100までは優、65~79までは良、50~64までは可、0~49までは不可とし、それぞれの各科目数を出力しなさい。
(3)(1)と同様にキーボードから各教科のテストの点数を入力し、最高点と最低点を出力しなさい。


私は(1)に対してまず、科目数が決められている場合の合計と平均を求めるプログラムを作りました。
そのあと、それを何科目でも対応できるようにfor文を使い書き換えました。
そしてif文をつかって-1が入力されたら、breakとしました。しかしそれではwhile文をまったく使っていないのです・・・。どうしたらいいのでしょう?
何科目にでも対応させるというのは・・・?
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.3
レベル6

ベストアンサー率 21% (3/14)

forとwhileは両方ともループを構成するもので、基本的には簡単に書き換えられます。
構文はもうすでにご存知だと思いますが一応。
for(初期設定;条件式;再設定)
while(条件式)
例)
<無限ループ>
for(;;){}
while(1){}

<iを0→9>
for(i=0;i<=9;i++){}
while(i<=9){i++;} ※注)iの初期化が必要

<inputが-1で無い間>
for(;input!=-1;){}
while(input!=-1){}

こんな感じです。
for文で出来ているなら書き換え方が分かれば簡単だと思うので、頑張ってください^^
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル10

ベストアンサー率 17% (31/179)

とりあえず for で作ったループを while で書き直せばいいんじゃないかな? forとwhileとdo~whileは繰り返し処理のところ を見直せばよいでしょう。 何科目でもってのは点数を入れさせるまえに 科目数を入力させてって方法じゃだめなのかな? ...続きを読む
とりあえず for で作ったループを
while で書き直せばいいんじゃないかな?

forとwhileとdo~whileは繰り返し処理のところ
を見直せばよいでしょう。


何科目でもってのは点数を入れさせるまえに
科目数を入力させてって方法じゃだめなのかな?
お礼コメント
matsumai

お礼率 25% (39/151)

どうもありがとうございます。
でも問のはじめにwhile文とfor文を使う問題というのがちょっと引っかかります・・・
投稿日時 - 2002-01-26 17:47:07
  • 回答No.2
レベル10

ベストアンサー率 17% (31/179)

while と if を使う問題ということですが、 if は条件の判断に使うので必然的に必要となりますね。 while を使うというのは繰り返し処理の記述に for は使わずに while を使いなさい、(つまり、while文の使い方の練習をしなさい)って事なんじゃないかな? 繰り返しは for文 でも while文でも同じ事ができてしまいます。 多分、すでに for文を使う課題はやってい ...続きを読む
while と if を使う問題ということですが、
if は条件の判断に使うので必然的に必要となりますね。

while を使うというのは繰り返し処理の記述に for は使わずに while を使いなさい、(つまり、while文の使い方の練習をしなさい)って事なんじゃないかな?

繰り返しは for文 でも while文でも同じ事ができてしまいます。
多分、すでに for文を使う課題はやっていて、
つい for文で書いてしまいがちなので、
あえて while文を使ってそちらの使い方も覚えましょう
という意味で while文を使うように指定しているんだと
おもいます。


(1)について
先ほどの科目数を入れるというのは忘れてください。
一人の人間が複数の科目をうけたときに全科目の合計と
平均を出力すると読み取りました。

よって3科目受けたときは
1科目めの点数、
2科目めの点数、
3科目めの点数、
-1

10科目受けたら
1科目めの点数

10科目めの点数
-1

とすると何科目で対応できたことになりす。

-1がいつ入力されるかわからないので
matsumaiさんは forで無限ループを作って
break で抜けるように作ったんだと思うんですが、
このループを for文ではなく while文で書けば
よいのではないでしょうか?
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ