C言語なら俺に聞け(入門篇) Part 29
レス数が900を超えています。1000を超えると表示できなくなるよ。
0901デフォルトの名無しさん
2008/06/11(水) 22:45:38入力のフォーマットが判然としないのは困ったことだが、はっきり出題に示されていなければ
自分で適切と思う方法に勝手に決めて押し返してしまうのも一つのやり方だ。
大抵の場合、scanf() を使うよりも、1回 Enter を叩くたびに一つの入力と決め付けて、
fgets() で入力を拾ってくるのが一番まちがいが起きにくくて簡単な方法である。
あとは実数であるとわかっているなら atof() か strtod() を使えばよい。
さて1問目だが、switch を使えという出題意図が最大の問題である。
通常 switch とは、列挙されたいくつかの処理のうち一つだけを実行するという論理構造である。
するとおそらく、3つの実数を並べる全ての組み合わせ、つまり6通りの表示処理を作って、
3つの大小の判定によって振り分ける、というアルゴリズムを期待していることが考えられる。
あとは論理演算子が 0 か 1 を返すことを利用して、switch に与える整数値を作り出せばよい。
2問目はちょっと難しい。与えられた文字列が過不足なく特定の数値形式を表していることを
解釈する必要があるからだ。しかし、余計な何かを検出したらエラーと断じてよいことに気付けば、
strtod() とstrtol() を使ったあとで、endptr に返される位置以降の文字をチェックするだけで済む。
あとは整数と自然数の切り分けだけである。
レス数が900を超えています。1000を超えると表示できなくなるよ。