ホーム » 「入出力リダイレクト」タグがついた投稿
タグアーカイブ: 入出力リダイレクト
入出力と変数・レポートNo.2
以下のような、位相が 0°,15°,30°,45° ずれた sin(x) のグラフを描くためのプログラムを作りたい。
Excel で式入力すりゃいいじゃん…というのはナシ。
0 =A1+15 =B1+15 … =A1+5 =sin((A2+B1)/180*3.141592) =sin((A2+C1)/180*3.141592) …
// 以下のプログラムは、初心者なら書きそうなボケが沢山入ってます。 // 正しく直してください。 #include <stdio.h> #define PI = 3.1415926535 ; int th ; void phase( int x ) { printf( "%d" , x ) ; // 位相を0度から45度まで15度ずつ変化させる for( th = 0 ; th <= 45 ; th += 15 ) { printf( " %d" , sin( (x + th) / 180 * PI ) ) ; } printf( "¥n" ) ; } int main() { // 角度を 0..360度 の範囲で表示 for( th = 0 ; th != 360 ; th += 5 ) { phase( th ) ; } return 0 ; }
このプログラムを正しく修正し、Excel に値を取り込んで、上図に示すようなグラフにしてください。
レポートでは、プログラムリスト、プログラムの説明、実行結果、感想・考察を記載し提出してください。
入出力リダイレクト
プログラムの動作を確認する場合、指定された値を使って計算したり、その結果を他のプログラムで使いたい場合が多い。そこで、入出リダイレクトについて説明する。
入力リダイレクト
以下に上げるような Excel のデータで平均を計算してみよう。
A6 に =AVERAGE(A1:A5) を入力…
というのは、ナシ。Visual Basic で組むのもナシ。(^_^;
Excelで、「ファイル-名前をつけて保存」、「ファイル形式」に「スペース区切りテキスト(.prn)」で保存する。
// 入力値の平均を求める
// ファイルは、Z:¥foo¥bar¥avg.c にあるとする。
#include <stdio.h>
int main() {
int count = 0 , sum = 0 ;
int x ;
while( scanf( "%d" , &x ) == 1 ) {
count++ ;
sum += x ;
}
printf( "%lf¥n" , sum / count ) ; // この行は間違い。修正せよ。
return 0 ;
}
このプログラムを普通に実行したら、キーボードから 83,95,92,95,77 と毎回入力しなければならない。めんどくさくない?
Excel の空白区切りのデータを読み込む
先程の Excel で保存したファイルを同じディレクトリにコピーする。(Z:¥foo¥bar¥avg.prnとする)
コンパイラで、avg.c をコンパイルし、avg.exe ができていることを確認し、 cmd.exe を起動 Z:¥> cd Z:¥foo¥bar Z:¥foo¥bar> avg.exe < avg.prn
このように、プログラムを起動する時に、通常はキーボードから入力するプログラムに対し、起動時に “< ファイル名” を付けて起動し、ファイル入力に切り替えることを、入力リダイレクトと言う。
出力リダイレクトとグラフ化
前回の授業での sin(x) のプログラムの実行結果を、Excel で確認してみよう。
// sin の値を出力 // ファイルは、Z:¥foo¥bar¥sin.c にあるとする。 #include <stdio.h> #include <math.h> int main() { double th , y ; for( th = 0.0 ; th <= 360.0 ; th += 5.0 ) { y = sin( th / 180.0 * 3.1415926535 ) ; printf( "%lf %lf¥n" , th , y ) ; } return 0 ; }
プログラムを実行する時に、
コンパイラで sin.c をコンパイルし、sin.exe ができていることを確認し cmd.exe を起動 Z:¥> cd Z:¥foo¥bar プログラムのディレクトリに移動 Z:¥foo¥bar> sin.exe > sin.csv プログラムを起動し出力を sin.csv に保存
このように、プログラムを起動する時に、通常は結果を画面に出力するプログラムに対し、起動時に “> ファイル名” を付けて起動し、結果をファイル出力に切り替えることを、出力リダイレクトと言う。
Excelにインポートしてグラフ化
Excel を起動し、「ファイル-インポート」より、「テキストファイル」を選び、「区切り文字」-「スペース区切り」でデータを取り込む。
あとは、取り込まれたデータ範囲を選択し、「挿入」-「グラフ」で好きなグラフ形式を選ぶ。