概ね方位不定だが多分割と偏っている
スポンサーサイト
--年--月--日 (--) | 編集 |
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


C 例題5 データの終わりのあるプログラム
2006年07月23日 (日) | 編集 |
前回はEOF、^Zで入力を終えるプログラムを作ったが、今回は決められた数値で入力を終えるプログラムを作ってみる。


ううむ面倒そうだな畜生め。だがやるしかねー。


勝利条件:
「整数データを入力していき、-9999で入力を止め、合計と平均を表示するプログラムを作れや」

攻略方法:
例によって合計、平均を出す為に入力された数値dat、その合計sum、平均を求める為の入力された回数n、を整数型で宣言する。

eof2test.jpg

例によって合計値sum、回数nを0で初期化しておこう。

でまあ、次がイマイチ分からんのだが、特定の数値の入力で終わらせるようなプログラムの場合

scanf("%d",&dat);
while(dat!=-9999){
中略
scanf("%d",&dat);
}

上のようにwhileの前にscanfが入り、ついでにwhileの中でもscanfを記述する、という形式になる。これを2度読みというらしい。

なんでこんな書き方するのかというと、scanf("%d",&dat)が返す値はキーボードからscanfの引数に対し、正常に入力できたデータの個数であり、入力されたデータの値ではないので、

while(scanf("%d",&dat)!=-9999)

と書いても意味が無いからだそうだ。

うむ、何言ってるのかさっぱり意味分からん。
分からんので例によってそういうことにしておいて先に進もう。
とりあえず今は特定の数値でデータの終わりを表現するようなプログラムでは2度読みを行うと覚えておけばいい。後のことは後回しだ。

eof2test2.jpg

これをよしとするなら後は^Zの時と同様、合計と平均を出力するのみ。

eof2test3.jpg
こんな感じ

では実際に動かしてみよう

eof2test4.jpg


何故毎回毎回凡ミスが絶えないのか。頼むからネタだと言ってくれ俺。
ううむやはり雑な人間ってプログラムには向いてないんじゃねー?
つってもそんなん自分の責任だし逃げ道にも出来ないが。

適当に修正して実行。

eof2test5.jpg
今度はOK

まとめよう

決められた値で入力を止めるプログラムではscanfの2度読みを行う
値部分の指定はwhile(変数!=値)という記述になる
n++;とn=n+1は同じ意味っぽい


以上。
ま、少しはミスが減っているのかね…
スポンサーサイト

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。