ホーム » 「入出力リダイレクト」タグがついた投稿

タグアーカイブ: 入出力リダイレクト

2018年12月
« 11月    
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

最近の投稿(電子情報)

アーカイブ

カテゴリー

入出力と変数・レポート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 を起動し、「ファイル-インポート」より、「テキストファイル」を選び、「区切り文字」-「スペース区切り」でデータを取り込む。

あとは、取り込まれたデータ範囲を選択し、「挿入」-「グラフ」で好きなグラフ形式を選ぶ。