back 2000/1/24

C言語 - 配列

この Web page の利用方法は,
ここ...最低限のプログラム実行例... (Unix or Linux を利用している人)
ここ...最低限のプログラム実行例... (Windows 版 Visual C++ を利用している人)
で確認しよう!!
もくじ

4.0 1次元配列
4.1 2次元配列
4.2 ちょっと実用的(風な)プログラムの例

この Web Page を作るに際し,下記の文献を参考にしました。
サイエンス社 NSライブラリ(4) ザ・C [第2版] -ANSI C 準拠- 戸川隼人 1997年



4.0 1次元配列

V-CUnix
#include <stdio.h>
#include <math.h>
#define N 100
main(){
	int f,i,n;
	int m[N+1],mm;
	double a[N+1],aa;
	double s,mean,max;

	/* input */
	n=0;
	do{
		n=n+1;
		printf("Input a Number (minus ... END)?  a[%d]=  ", n);
		scanf("%lf", &a[n]);
		m[n]=n;
	}while(a[n]>=0);

	if(n==1){
		printf("Finished ... No Data \n");
		
	}else{

		/* KeISaN */
		printf("%d term(s)\n", n-1);

		/* mean, max */
		s=0.0;
		max=a[1];
		for(i=1; i<n; i=i+1){
			s=s+a[i];
			if(a[i]>max){ max=a[i]; };
		};
		mean=s/(n-1);
		printf("mean=%lf\n", mean);
		printf("max=%lf\n", max);

		/* sort */
		if(n>2){
			do{
				f=0;
				for(i=2; i<n; i=i+1){
					if(a[i-1]>a[i]){
						aa=a[i];
						a[i]=a[i-1];
						a[i-1]=aa;
						mm=m[i];
						m[i]=m[i-1];
						m[i-1]=mm;
						f=1;
					};
				};
			}while(f!=0);
		};
		for(i=1; i<n; i=i+1){
			printf("a[%d]=%lf\n", m[i], a[i]);
		};
	};
}			
prog.
用語の確認
  1. float a[N] ... N個の要素を持つ実数型配列の宣言 0 ... N-1
  2. 平均
  3. 最大値
  4. 並べ替え
  5. 参考:text p.86-97 (プログラム例 4.1 - 4.3)
課題:
  1. いろんな数値を入力してみよう。例,最低でも,100, 120, 80, -1 は試みる事。
  2. このプログラムでは,マイナスの数を打つまで入力しつづけるが, もしも入力回数が100を超えるとおかしくなってしまう。 それを防ぐにはどうしたら良いか検討しよう。(参考:教科書 4.1)
  3. 標準偏差はどうしたら求めることが出来るか検討しよう。(参考:教科書 4.1)
  4. 最小値も求める様に改良しよう。(参考:教科書 4.2)
  5. 並べ替え(sort)は,このプログラムは最適とは言えない。 もっと早い並べ替えプログラムを考えよう。(参考:教科書 4.3)


4.1 2次元配列

V-CUnix

Text pp.98-107
中学校の各学年とクラスの人数について
カレンダー
行列演算,行列式
prog.
課題:
  1. 自分でプログラムを書いてみよう。


4.2 ちょっと実用的(風な)プログラムの例

プログラムとそのコメント
  1. 数当てゲーム(マスターマインド)(2章と同じ) , 改良1(配列使用) , 改良2(任意のサイズ)

注意:
  1. 工事中。
//