平方根の計算とファイルへの出力

01	/****************************/
02	/* 平方根の計算             */
03	/*      coded by Y.Suganuma */
04	/****************************/
05	#include <stdio.h>
06	#include <math.h>
07	
08	int main()
09	{
10	/*
11	     ファイル名の入力
12	*/
13		char f_name[50];
14		printf("出力ファイル名は? ");
15		scanf("%s", f_name);
16	/*
17	     平方根の計算
18	*/
19		double data = 0.0, x[100], y[100];
20		int i1;
21		for (i1 = 0; i1 < 100; i1++) {
22			data  += 1.0;
23			x[i1]  = data;
24			y[i1]  = sqrt(data);
25		}
26	/*
27	     出力
28	*/
29		FILE *out = fopen(f_name, "w");
30	
31		for (i1 = 0; i1 < 100; i1++)
32			fprintf(out, "%f %f\n", x[i1], y[i1]);
33	
34		return 0;
35	}
		
6 行目

  24 行目において,平方根を計算する関数 sqrt を使用しているため,このヘッダファイルが必要になります.同様に,三角関数,対数等,数学関係の関数を使用するときはこのヘッダファイルが必要になります.

13 行目

  ファイル名は,一般に,文字列です.ファイル名を入力するために,配列変数 f_name の宣言をしています.この配列変数には,49 文字以下の文字列を記憶できます.なぜなら,文字列の場合,文字列の最後に文字列の最後であることを示す NULL 文字「\0」が付加されるため,この NULL 文字も文字数として数える必要があるからです.

15 行目

  ファイル名を入力しています.「%s」を使用すること,及び,変数の前に「&」が付かないことに注意して下さい.

19 行目

  平方根を計算する値は 1 から 100 までですので,変数 data や x に対する型宣言は int で構わないように見えますが,関数 sqrt に渡してやるデータ( 27 行目のカッコ内)は,必ず double である必要があります.このように,各関数に渡してやるデータは,その関数によって型が決まっています.必ず,定められた型を使用して下さい.

23,24 行目

  変数 data の値を x[i1] に保存し,かつ,その値に対する平方根を計算し,配列変数 y[i1] に保存しています.

31,32 行目

  if 文と同じように,for 文で繰り返す文が 1 文だけのときは,「{」と「}」を省略できます.

  以下に示すのは,上と同じプログラムを new 演算子を使用して書いた例です.

/****************************/
/* 平方根の計算             */
/*      coded by Y.Suganuma */
/****************************/
#include <stdio.h>
#include <math.h>

int main()
{
/*
     ファイル名の入力
*/
	char *f_name = new char [50];
	printf("出力ファイル名は? ");
	scanf("%s", f_name);
/*
     平方根の計算
*/
	double data = 0.0;
	double *x   = new double [100];
	double *y   = new double [100];

	for (int i1 = 0; i1 < 100; i1++) {
		data  += 1.0;
		x[i1]  = data;
		y[i1]  = sqrt(data);
	}
/*
     出力
*/
	FILE *out = fopen(f_name, "w");

	for (int i1 = 0; i1 < 100; i1++)
		fprintf(out, "%f %f\n", x[i1], y[i1]);

	return 0;
}