FC2ブログ
 
■カテゴリー
■最近の記事
■最近のコメント
■月別アーカイブ
■リンク
■QRコード

QRコード

活動日誌のようなもの
●企画書の進行具合の確認……と思ったが、割とバラバラでぐだぐだに。次週に持ち越し

●演習。『九九の表を表示せよ』と『入力した整数の階乗を表示せよ』という問題。どちらもforループのみで何とかなる。

以下、解答のヒント(というかアルゴリズム)。面倒なので、九九の表のみ。
九九



改行するポイントが分かりにくそうだったので補足すると、こういう表を作るときは、1行作ったら改行するようにループを仕込めば良い。知ってしまえば大したこと無い。たぶん慣れ。

ちなみに次回の内容は未定。4年次の卒業アルバム用の写真撮影になるかもしれない。

by 岸部


以下、読まなくてもよい追記。しかも長い。





今回のサークルでfloat型の変数の桁数を指定できるということにかんして、もうちょっと掘り下げて書いてみる。なんとなく説明不足かもしれないと不安になったので書いてみただけで、深い意味は無い。

以下、プログラムソースは斜め文字、プログラムを実行したときに表示される内容は青い文字で表現する。



printf("%3.5lf", &ho);

という記述がプログラム中にあったとする。これは『hoという変数を3桁+小数点以下5桁まで表示』という意味になる。つまり、ho = 1.2345 ならば

__1.234

と表示され、ho = 1234.56 ならば

234.56

と表示される。ちなみに“_”はスペースのつもり。


さて、『こうするとスペースを作ることでエクセルにデータを移しやすくなる』ともいったのだけれど、何のことだかピンとこないかもしれない。

前述の記述なら、表示される変数は1つだけ。しかし、大量のデータを必要とするときは、変数が何度も、大量に表示される。例えば。

for (i = 1; i <= 4; i++){
printf("%lf %lf\n", &ho, &mo);
   ~
    変数に関する処理
     ~
}


というプログラムの場合、変数hoとmoがそれぞれ4回表示されることになる。もしも、計算結果でhoとmoの桁数が合ってない場合、次のように表示されてしまう。

200.05_3456.5
400.10_10000.6
3000.10_56000.6
21356.45_21678.4


この場合、どこで区切って良いのか非常に分かりにくい。そこで、次のように書き換える。

for (i = 1; i <= 4; i++){
printf("%6.4lf %7.2lf\n", &ho, &mo);
   ~
    変数に関する処理
     ~
}


すると、次のように表示される。


___200.05_____3456.5
___400.10____10000.6
__3000.10____56000.6
_21356.45____21678.4


(_はスペースのつもり)というわけで、データが分かりやすくなる。たった4行だから大したこと無いけれど、数千行のデータの場合は非常に厄介になる。なので、『取りそうな最大桁数+ちょっと』と桁数を指定してやるとスペースが勝手に開いてくれるので、覚えておくと役に立つかもしれない。


更に追記すると。

for (i = 1; i <= 4; i++){
printf("%-6.4lf %-7.2lf\n", &ho, &mo);
   ~
    変数に関する処理
     ~
}


というように、マイナスをつけると。


200.05___3456.5_____
400.10___10000.6____
3000.10__56000.6____
21356.45_21678.4____


と、左詰に表示される。
スポンサーサイト



活動報告 | 20:17:51 | Trackback(0) | Comments(0)
コメントの投稿

管理者にだけ表示を許可する