| 情報学部 | 菅沼ホーム | 目次 | 索引 | 
int x[3], y[4];
//int x[3] = {1, 2, 3};
//int x[3] {1, 2, 3}; のような初期設定の可能			

int y[2][3] = {{10, 20, 30}, {40, 50, 60}};
//int y[2][3] {{10, 20, 30}, {40, 50, 60}}; も OK			int *x = &y[0][2];

int *u1 = new int [3], *u2 = new int [3], *u3;
// int *u1 = new int [3] {1, 2, 3}; のような初期設定も OK
for (int i1 = 0; i1 < 3; i1++) {
	u1[i1] = i1 + 1;
	u2[i1] = i1 + 1;
}
u3 = u1;			
//    以下のような方法で初期設定も可能
//int ** v1 = new int* [2];
//v1[0] = new int [3] {10, 20, 30};
//v1[1] = new int [3] {40, 50, 60};
v1[0] = new int [3];
v2[0] = new int [3];
for (int i1 = 0; i1 < 3; i1++) {
	v1[0][i1] = 10 * (i1 + 1);
	v2[0][i1] = 10 * (i1 + 1);
}
v1[1] = new int [3];
v2[1] = new int [3];
for (int i1 = 0; i1 < 3; i1++) {
	v1[1][i1] = 10 * (i1 + 4);
	v2[1][i1] = 10 * (i1 + 4);
}
v3 = v1;
			int *x = v1[1];

vector<int> w1, w2; ・・・ w2 = w1;
int u1[] = {1, 2, 3}, u2[] = {1, 2, 3}, u3[], u4[];
u3 = u1;
u4 = u1.clone();
//int u1[] = new int [3];   // 初期設定を行わない場合			

int v1[][] = {{10, 20, 30}, {40, 50, 60}};
int v2[][] = {{10, 20, 30}, {40, 50, 60}};
int v3[][] = v1;   // int v3[][] = v1.clone();
//double v1[][] = new double [2][3];   // 初期設定を行わない場合
//double v1[][] = new double [2][];   // この行以下の 3 行のような形でも可能
//for (int i1 = 0; i1 < 2; i1++)
//	v1[i1] = new double [3];   // 行毎に列数を変えることも可能			
int vp1[] = v1[0]; // v1,v3 の 1 行目 int vp2[] = v1[1]; // v1,v3 の 2 行目 int vp3[] = v1[1].clone();
int x1[] = {10, 20, 30};
int x2[] = {40, 50, 60};
int v1[][] = {x1, x2};			ArrayList <Integer> w1, w2; ・・・ w2 = w1;
let x = new Array(1, 2.3, "abc"); //let x = new Array(); // 要素数は未定,初期設定を行わない //let x = new Array(100); // 要素数が100の配列,初期設定を行わない
let u1 = new Array(1, "abc", 2); let u2 = new Array(1, "abc", 2); let u3 = u1; u3[1] = 4;

let v1 = new Array(2); v1[0] = new Array(10, 20, 30); v1[1] = new Array(40, 50, 60); let v2 = new Array(2); v2[0] = new Array(10, 20, 30); v2[1] = new Array(40, 50, 60); let v3 = v1;

let vp1 = v1[0]; // v1,v3 の 1 行目 let vp2 = v1[1]; // v1,v3 の 2 行目
$x = array(1, 2.3, "abc"); //$x = array(); // 要素数は未定,初期設定を行わない
$u1 = array(1, "abc", 2); $u2 = $u1; $u3 = &$u1;
$v1 = array(2); $v1[0] = array(10, 20, 30); $v1[1] = array(40, 50, 60); $v2 = $v1; $v3 = &$v1;
$v4 = $v1[0]; // $v4 = &$v1[0];
x = Array[1, 2.3, "abc"]; # x = [1, 2.3, "abc"]; でも可 #x = Array.new(); # 初期設定をしない場合 #x = Array.new(3); # サイズを指定しても良い
u1 = Array[1, "abc", 2]; u2 = Array[1, "abc", 2]; u3 = u1; u4 = u1.clone(); u3[1] = 10; u4[0] = 20;

v1 = Array[[10, 20, 30], [40, 50, 60]]; v2 = Array[[10, 20, 30], [40, 50, 60]]; v3 = v1; v4 = v1.clone(); #v1 = Array.new(); # 初期設定をしない場合 #for i1 in (0...2) # v1[i1] = Array.new(); # v1[i1] = Array[1, 2, 3]; # 行毎の初期設定も可

v4 = v1[0]; // v1,v3 の 1 行目 v5 = v1[0].clone();
x = array("i", [1, 2, 3])   # x = array("i")   初期設定を行わない場合
y = [1, "abc", 2]			
u1 = array("i", [1, 2, 3])
u2 = array("i", [1, 2, 3])
u3 = u1
u4 = copy.copy(u1)			
u3[1] = 4 u4[2] = 5

v1 = [array("i", [10, 20, 30]), array("i", [40, 50, 60])]
v2 = [array("i", [10, 20, 30]), array("i", [40, 50, 60])]
v3 = v1
v4 = copy.copy(v1)
v5 = copy.deepcopy(v1)			v1[0][1] = 70 v3[0][2] = 100 v4[1][0] = 200 v5[1][1] = 300 v6 = v1[0] # v1,v3,v4 の 1 行目 v6[0] = 400

int[] u1 = {1, 2, 3}, u2 = {1, 2, 3}, u3;
u3 = u1;
//int[] u1 = new int [] {1, 2, 3};
//int[] u1 = new[] {1, 2, 3};
//int[] u1 = new int [3];   // 初期設定を行わない場合			

01	//int[][] v1 = new int [2][3];  // この記述は許されない
02	int[][] v1 = new int[][] {
03		new int[] {10, 20, 30},
04		new int[] {40, 50, 60}
05	};
06	int[][] v2 = new int [2][];   // この方法でも良い
07	v2[0]      = new int[] {10, 20, 30};
08	v2[1]      = new int[] {40, 50, 60};
09	//int[][] v1 = new int [2][];   // 以下の 3 行でも良い(初期設定を行わない場合)
10	//for (int i1 = 0; i1 < 2; i1++) {
11	//	v1[i1] = new int [3];
12	int[][] v3 = v1;			
int vp1[] = v1[0]; // v1,v3 の 1 行目 int vp2[] = v1[1]; // v1,v3 の 2 行目
int[,] v1 = {{10, 20, 30}, {40, 50, 60}};
//int[,] v1 = new int[,] {{10, 20, 30}, {40, 50, 60}};
//int[,] v1 = new[,] {{10, 20, 30}, {40, 50, 60}};
//int[,] v1 = new int [2,3];  // 初期設定を行わない			
List <int> w1, w2; ・・・ w2 = w1;
Dim u1() As Integer = {1, 2, 3}
Dim u2() As Integer = {1, 2, 3}
Dim u3() As Integer = u1;
'Dim u1(3) As Integer = {1, 2, 3}   ' 配列サイズを指定した初期設定は不可能
'Dim u1(n) As Integer   ' 初期設定なし,n は添え字の最大値			

Dim v1(,) As Integer = {{10, 20, 30}, {40, 50, 60}}
Dim v2(,) As Integer = {{10, 20, 30}, {40, 50, 60}}
Dim v3(,) As Integer = v1
'Dim v1(,) As Integer = New Integer(,) {{10, 20, 30}, {40, 50, 60}}   でも可
'Dim v1(2,3) As Integer = {{10, 20, 30}, {40, 50, 60}}   要素数指定の初期設定は不可
'Dim v1(2,3) As Integer   初期設定は行わない場合			
Dim w1 As New List(Of Integer) Dim w2 As New List(Of Integer) ・・・ w2 = w1;
01	#include <stdio.h>
02	
03	int main()
04	{
05		int m1;   // 人数
06		printf("人数は? ");
07		scanf("%d", &m1);
08		int a1[m1];   // int a1[100]; の方が好ましい
09	//	int a1[m1] = {1, 2, 3}; のような初期設定不可
10	//	int b1[m1];
11	//	b1 = a1;   // このような代入は許されない
12		double mean1 = 0.0;
13		for (int i1 = 0; i1 < m1; i1++) {
14			printf("   %d 番目の人の点数は? ", i1+1);
15			scanf("%d", &a1[i1]);
16			mean1 += a1[i1];
17		}
18		mean1 /= (double)m1;
19		int n1 = 0;
20		for (int i1 = 0; i1 < m1; i1++) {
21			if (a1[i1] >= mean1)
22				n1++;
23		}
24		printf("   平均点( %f )以上は %d 人\n", mean1, n1);
25	
26		return 0;
27	}
				
int a1[3] = {1, 2, 3};
int a1[] = {1, 2, 3};   // 3 は,省略可能					
01	#include <stdio.h>
02	
03	int main()
04	{
05		int m2;   // クラス数
06		printf("クラス数は? ");
07		scanf("%d", &m2);
08		double mean2 = 0.0;   // 全体の平均
09		double c_mean2[m2];   // クラス毎の平均,double c_mean2[10]; の方が好ましい
10		int s_num2 = 0;   // 全体の人数
11		int a2[m2][50];   // int a2[5][50]; の方が好ましい
12	//	int a2[m2][2] = {{1, 2}, {3, 4}, {5, 6}}; のような初期設定不可
13	//	int b2[m2][50];
14	//	b2 = a2;   // このような代入は許されない
15		for (int i1 = 0; i1 < m2; i1++) {
16			int n_m2;   // クラス内の人数
17			printf("   クラス %d の人数は? ", i1+1);
18			scanf("%d", &n_m2);
19			c_mean2[i1] = 0.0;
20			for (int i2 = 0; i2 < n_m2; i2++) {
21				printf("      クラス %d の %d 番目の人の点数は? ", i1+1, i2+1);
22				scanf("%d", &a2[i1][i2]);
23				c_mean2[i1] += a2[i1][i2];
24			}
25			mean2       += c_mean2[i1];
26			s_num2      += n_m2;
27			c_mean2[i1] /= (double)n_m2;   // クラスの平均
28		}
29		mean2 /= (double)s_num2;   // 全体の平均
30		int n2 = 0;
31		for (int i1 = 0; i1 < m2; i1++) {
32			if (c_mean2[i1] >= mean2)
33				n2++;
34		}
35		printf("   平均点( %f )以上のクラスは %d \n", mean2, n2);
36	
37		return 0;
38	}
				
int a2[3][2] = {{1, 2}, {3, 4}, {5, 6}};
int a2[][2] = {{1, 2}, {3, 4}, {5, 6}};   // 3 は,省略可能					int *x = &(a2[0][0]);
01	#include <stdio.h>
02	
03	int main()
04	{
05		int m3;   // 人数
06		printf("人数は? ");
07		scanf("%d", &m3);
08		int *a3 = new int [m3];   // 初期化: int *a3 = new int [3] {1, 2, 3};
09	//	int *b3;
10	//	b3 = a3;   a3 と b3 は同じ配列(a3 を変更すれば b3 も変化)
11		double mean3 = 0.0;
12		for (int i1 = 0; i1 < m3; i1++) {
13			printf("   %d 番目の人の点数は? ", i1+1);
14			scanf("%d", &a3[i1]);
15			mean3 += a3[i1];
16		}
17		mean3 /= (double)m3;
18		int n3 = 0;
19		for (int i1 = 0; i1 < m3; i1++) {
20			if (a3[i1] >= mean3)
21				n3++;
22		}
23		printf("   平均点( %f )以上は %d 人\n", mean3, n3);
24		delete [] a3;
25	
26		return 0;
27	}
				
01	#include <stdio.h>
02	int main()
03	{
04		int m4;   // クラス数
05		printf("クラス数は? ");
06		scanf("%d", &m4);
07		double mean4    = 0.0;   // 全体の平均
08		double *c_mean4 = new double [m4];   // クラス毎の平均
09		int s_num4      = 0;   // 全体の人数
10		int **a4        = new int *[m4];
11		for (int i1 = 0; i1 < m4; i1++) {
12			int n_m4;   // クラス内の人数
13			printf("   クラス %d の人数は? ", i1+1);
14			scanf("%d", &n_m4);
15			a4[i1]      = new int [n_m4];
16			c_mean4[i1] = 0.0;
17			for (int i2 = 0; i2 < n_m4; i2++) {
18				printf("      クラス %d の %d 番目の人の点数は? ", i1+1, i2+1);
19				scanf("%d", &a4[i1][i2]);
20				c_mean4[i1] += a4[i1][i2];
21			}
22			mean4       += c_mean4[i1];
23			c_mean4[i1] /= (double)n_m4;
24			s_num4      += n_m4;
25		}
26		mean4 /= (double)s_num4;
27		int n4 = 0;
28		for (int i1 = 0; i1 < m4; i1++) {
29			if (c_mean4[i1] >= mean4)
30				n4++;
31		}
32		printf("   平均点( %f )以上のクラスは %d \n", mean4, n4);
33	//	int **b4;
34	//	b4 = a4;   a4 と b4 は同じ配列(a4 を変更すれば b4 も変化)
35	//	int *c4;
36	//	c4 = a4[1];   c4 は,a4 の 2 行目と同じ 1 次元配列
37	//	              (a4 の 2 行目を変更すれば c4 も変化)
38		delete [] c_mean4;
39		for (int i1 = 0; i1 < m4; i1++)
40			delete [] a4[i1];
41		delete [] a4;
42	
43		return 0;
44	}
				
01	#include <stdio.h>
02	#include <vector>
03	
04	using namespace std;
05	
06	int main()
07	{
08		printf("ファイル入出力(vector クラス)\n");
09		FILE *in  = fopen("data.txt","r");
10		FILE *out = fopen("out.txt","w");   // fopen(..., "a") は追加
11		double mean5 = 0.0;
12		int x, m5 = 0;
13		vector<int> a5;
14		while (EOF != fscanf(in, "%d", &x)) {
15			a5.push_back(x);
16			mean5 += x;
17			m5++;
18			fprintf(out, "%d %d\n", m5, x);
19		}
20		fclose(in);
21		fclose(out);
22		mean5 /= (double)m5;
23		int n5 = 0;
24		for (int i1 = 0; i1 < m5; i1++) {
25			if (a5[i1] >= mean5)
26				n5++;
27		}
28		printf("   平均点( %f )以上は %d 人\n", mean5, n5);
29	//	vector<int> b5;
30	//	b5 = a5;   a5 と b5 は,要素の値は同じでも別の配列
31	
32		return 0;
33	}
				
01	#include <stdio.h>
02	#include <iostream>
03	#include <map>
04	
05	using namespace std;
06	
07	int main()
08	{
09		printf("map クラス\n");
10		map<string, int> a6;
11		a6.insert(pair<string, int>("suzuki", 40));   // a6["suzuki"] = 40; でも可
12		a6.insert(pair<string, int>("sato", 60));   // a6["sato"] = 60; でも可
13		a6.insert(pair<string, int>("yamada", 70));   // a6["yamada"] = 70; でも可
//	以下のような形で初期設定も OK
//	map<string, int> a6 {{"suzuki", 40}, {"sato", 60}, {"yamada", 70}};
14		map<string, int>::iterator it = a6.find("suzuki");
15		printf("   suzuki さんの得点:%d\n", it->second);
16	//  	上の 2 行の代わりに下に示す 1 行でも可
17	//	printf("   suzuki さんの得点:%d\n", a6["suzuki"]);
18	//	map<string, int> b6;
19	//	b6 = a6;   a6 と b6 は,要素の値は同じでも別の配列
20	
21		return 0;
22	}
				map クラス suzuki さんの得点:40
001	#include <stdio.h>
002	#include <iostream>
003	
004	using namespace std;
005	
006	/**********************/
007	/* クラスMatrixの定義 */
008	/**********************/
009	class Matrix {       /* 2次元行列 */
010			int n;              // 行の数
011			int m;              // 列の数
012			double **mat;       // 行列本体
013		public:
014			Matrix(int, int);   // コンストラクタ(引数あり)
015			Matrix(const Matrix &);   // 初期化のためのコンストラクタ
016			Matrix() {n = 0;}   // コンストラクタ(引数無し)
017			~Matrix()   // デストラクタ
018			{
019				if (n > 0) {
020					for (int i1 = 0; i1 < n; i1++)
021						delete [] mat[i1];
022					delete [] mat;
023				}
024			}
025			Matrix &operator= (const Matrix &);   // =のオーバーロード
026			Matrix operator+ (const Matrix &);          // +のオーバーロード
027			Matrix operator- (const Matrix &);          // -のオーバーロード
028			Matrix operator* (const Matrix &);          // *のオーバーロード
029		friend istream &operator >> (istream &, Matrix &);   // >> のオーバーロード
030		friend ostream &operator << (ostream &, Matrix);     // << のオーバーロード
031	};
032	
033	/*****************************/
034	/*コンストラクタ(引数あり) */
035	/*****************************/
036	Matrix::Matrix(int n1, int m1)
037	{
038		n    = n1;
039		m    = m1;
040		mat  = new double * [n];
041		for (int i1 = 0; i1 < n; i1++)
042			mat[i1] = new double [m];
043	}
044	
045	/********************************/
046	/* 初期化のためのコンストラクタ */
047	/********************************/
048	Matrix::Matrix(const Matrix &A)
049	{
050		n    = A.n;
051		m    = A.m;
052		mat  = new double * [n];
053		for (int i1 = 0; i1 < n; i1++) {
054			mat[i1] = new double [m];
055			for (int i2 = 0; i2 < m; i2++)
056				mat[i1][i2] = A.mat[i1][i2];
057		}
058	}
059	
060	/*******************************/
061	/* =のオーバーロード          */
062	/*      A = B (A.operator=(B)) */
063	/*******************************/
064	Matrix& Matrix::operator= (const Matrix &B)
065	{
066		if (&B != this) {   // 自分自身への代入を防ぐ
067			if (n > 0) {   // 代入する前のメモリを解放
068				for (int i1 = 0; i1 < n; i1++)
069					delete [] mat[i1];
070				delete [] mat;
071			}
072			n        = B.n;
073			m        = B.m;
074			mat  = new double * [n];   // メモリの確保と代入
075			for (int i1 = 0; i1 < n; i1++) {
076				mat[i1] = new double [m];
077				for (int i2 = 0; i2 < m; i2++)
078					mat[i1][i2] = B.mat[i1][i2];
079			}
080		}
081	
082		return *this;
083	}
084	
085	/**********************/
086	/* +のオーバーロード */
087	/**********************/
088	Matrix Matrix::operator + (const Matrix &B)
089	{
090		if (n != B.n || m != B.m) {
091			cout << "***error  invalid data\n";
092			exit(1);
093		}
094	
095		Matrix C(n, m);
096	
097		for (int i1 = 0; i1 < n; i1++) {
098			for (int i2 = 0; i2 < m; i2++)
099				C.mat[i1][i2] = mat[i1][i2] + B.mat[i1][i2];
100		}
101	
102		return C;
103	}
104	
105	/**********************/
106	/* -のオーバーロード */
107	/**********************/
108	Matrix Matrix::operator - (const Matrix &B)
109	{
110		if (n != B.n || m != B.m) {
111			cout << "***error  invalid data\n";
112			exit(1);
113		}
114	
115		Matrix C(n, m);
116	
117		for (int i1 = 0; i1 < n; i1++) {
118			for (int i2 = 0; i2 < m; i2++)
119				C.mat[i1][i2] = mat[i1][i2] - B.mat[i1][i2];
120		}
121	
122		return C;
123	}
124	
125	/**********************/
126	/* *のオーバーロード */
127	/**********************/
128	Matrix Matrix::operator* (const Matrix &B)
129	{
130		if (m != B.n) {
131			cout << "***error  invalid data\n";
132			exit(1);
133		}
134	
135		Matrix C(n, B.m);
136	
137		for (int i1 = 0; i1 < n; i1++) {
138			for (int i2 = 0; i2 < B.m; i2++) {
139				C.mat[i1][i2] = 0.0;
140				for (int i3 = 0; i3 < m; i3++)
141					C.mat[i1][i2] += mat[i1][i3] * B.mat[i3][i2];
142			}
143		}
144	
145		return C;
146	}
147	
148	/********************************/
149	/* 入力( >> のオーバーロード) */
150	/********************************/
151	istream &operator >> (istream &stream, Matrix &A)
152	{
153		printf("*** %d 行 %d 列の行列***\n", A.n, A.m);
154		for (int i1 = 0; i1 < A.n; i1++) {
155			printf("%d 行目のデータ\n", i1+1);
156			for (int i2 = 0; i2 < A.m; i2++) {
157				printf("   %d 列目の値は? ", i2+1);
158				stream >> A.mat[i1][i2];
159			}
160		}
161	
162		return stream;
163	}
164	
165	/********************************/
166	/* 出力( << のオーバーロード) */
167	/********************************/
168	ostream &operator << (ostream &stream, Matrix A)
169	{
170		for (int i1 = 0; i1 < A.n; i1++) {
171			for (int i2 = 0; i2 < A.m; i2++)
172				stream << " " << A.mat[i1][i2];
173			stream << "\n";
174		}
175	
176		return stream;
177	}
178	
179	int main()
180	{
181				//
182				// 行列の計算(演算子のオーバーロード)
183				//
184		int n, m, l, sw;
185		printf("計算方法( 0 : +, 1 : -, 2 : * ) ");
186		cin >> sw;
187		switch (sw) {
188	
189			case 0:       // +
190			{
191				printf("--- A+B ---\n");
192				printf("n 行 m 列の n と m? ");
193				cin >> n >> m;
194				Matrix A(n, m), B(n, m);
195				cout << "Matrix A  ";
196				cin >> A;
197				cout << "Matrix B  ";
198				cin >> B;
199				cout << "Matrix (A+B)\n";
200				cout << A+B;
201				break;
202			}
203	
204			case 1:       // -
205			{
206				printf("--- A-B ---\n");
207				printf("n 行 m 列の n と m? ");
208				cin >> n >> m;
209				Matrix A(n, m), B(n, m);
210				cout << "Matrix A  ";
211				cin >> A;
212				cout << "Matrix B  ";
213				cin >> B;
214				cout << "Matrix (A-B)\n";
215				cout << A-B;
216				break;
217			}
218	
219			case 2:       // *
220			{
221				cout << "--- A*B ---\n";
222				printf("n 行 m 列の n と m( A )? ");
223				cin >> n >> m;
224				printf("行列 B の列数は? ");
225				cin >> l;
226				Matrix A(n, m), B(m, l);
227				cout << "Matrix A  ";
228				cin >> A;
229				cout << "Matrix B  ";
230				cin >> B;
231				cout << "Matrix (A*B)\n";
232				cout << A*B;
233				break;
234			}
235		}
236	
237		return 0;
238	}
				
x + y x - y x * y
A + B A - B A * B
Matrix W;
Matrix W1 = W2;
W1 = W2;
01	import java.io.*;
02	
03	public class Test {
04		public static void main(String args[]) throws IOException
05		{
06			BufferedReader inp = new BufferedReader(new InputStreamReader(System.in));
07			int m3;   // 人数
08			System.out.printf("人数は? ");
09			m3       = Integer.parseInt(inp.readLine());
10			int a3[] = new int [m3];
11	//		int a3[] = {1, 2, 3}; のような初期設定も可
12	//		int b3[];
13	//		b3 = a3;   a3 と b3 は同じ配列(a3 を変更すれば b3 も変化)
14			double mean3 = 0.0;
15			for (int i1 = 0; i1 < m3; i1++) {
16				System.out.printf("   %d 番目の人の点数は? ", i1+1);
17				a3[i1] = Integer.parseInt(inp.readLine());
18				mean3 += a3[i1];
19			}
20			mean3 /= m3;
21			int n3 = 0;
22			for (int i1 = 0; i1 < m3; i1++) {
23				if (a3[i1] >= mean3)
24					n3++;
25			}
26			System.out.printf("   平均点( %f )以上は %d 人\n", mean3, n3);
27		}
28	}
				
01	import java.io.*;
02	
03	public class Test {
04		public static void main(String args[]) throws IOException
05		{
06			BufferedReader inp = new BufferedReader(new InputStreamReader(System.in));
07			int m4;   // クラス数
08			System.out.printf("クラス数は? ");
09			m4               = Integer.parseInt(inp.readLine());
10			double mean4     = 0.0;   // 全体の平均
11			double c_mean4[] = new double [m4];   // クラス毎の平均
12			int s_num4       = 0;   // 全体の人数
13			int a4[][]       = new int [m4][];
14	//		int a4[][]       = new int [2][3]; 列の数が既知の場合
15	//		int a4[][] = {{1, 2, 3}, {4, 5, 6}}; のような初期設定も可
16			for (int i1 = 0; i1 < m4; i1++) {
17				int n_m4;   // クラス内の人数
18				System.out.printf("   クラス %d の人数は? ", i1+1);
19				n_m4        = Integer.parseInt(inp.readLine());
20				a4[i1]      = new int [n_m4];
21				c_mean4[i1] = 0.0;
22				for (int i2 = 0; i2 < n_m4; i2++) {
23					System.out.printf("      クラス %d の %d 番目の人の点数は? ", i1+1, i2+1);
24					a4[i1][i2]   = Integer.parseInt(inp.readLine());
25					c_mean4[i1] += a4[i1][i2];
26				}
27				mean4       += c_mean4[i1];
28				s_num4      += n_m4;
29				c_mean4[i1] /= n_m4;   // クラス毎の平均
30			}
31			mean4 /= s_num4;   // 全体の平均
32			int n4 = 0;
33			for (int i1 = 0; i1 < m4; i1++) {
34				if (c_mean4[i1] >= mean4)
35					n4++;
36			}
37			System.out.printf("   平均点( %f )以上のクラスは %d \n", mean4, n4);
38	//		int b4[][];
39	//		b4 = a4;   a4 と b4 は同じ配列(a4 を変更すれば b4 も変化)
40	//		int c4[];
41	//		c4 = a4[1];   c4 は,a4 の 2 行目と同じ 1 次元配列
42	//	 	             (a4 の 2 行目を変更すれば c4 も変化)
43		}
44	}
				
01	import java.io.*;
02	import java.util.*;
03	
04	public class Test {
05		public static void main(String args[]) throws IOException
06		{
07			System.out.printf("ファイル入力(ArrayList クラス)\n");
08			BufferedReader in = new BufferedReader(new FileReader("data.txt"));
09			PrintStream out   = new PrintStream(new FileOutputStream("out.txt"));
10			double mean5 = 0.0;
11			int m5       = 0;
12			String line;
13			ArrayList <Integer> a5 = new ArrayList <Integer> ();
14			while ((line = in.readLine()) != null) {
15				int x = Integer.parseInt(line);
16				a5.add(new Integer(x));
17				mean5 += x;
18				m5++;
19				out.printf("%d %d\n", m5, x);
20			}
21			in.close();
22			out.close();
23			mean5 /= m5;
24			int n5 = 0;
25			for (int i1 = 0; i1 < m5; i1++) {
26				if (a5.get(i1) >= mean5)
27					n5++;
28			}
29			System.out.printf("   平均点( %f )以上は %d 人\n", mean5, n5);
30	//		ArrayList <Integer> b5;
31	//		b5 = a5;   a5 と b5 は同じ ArrayList(a5 を変更すれば b5 も変化)
32	//		ArrayList <Integer> b5 = new ArrayList <Integer> ();
33	//		for(int i1 = 0; i1 < 3; i1++)
34	//			b5.add(new Integer(i1+1));
35	//		ArrayList <Integer> a5 = new ArrayList <Integer> (b5);
36		}
37	}
				
01	import java.io.*;
02	import java.util.*;
03	
04	public class Test {
05		public static void main(String args[]) throws IOException
06		{
07			System.out.printf("TreeMap クラス\n");
08			TreeMap  a6 = new TreeMap  ();
09			a6.put("suzuki", new Integer(40));
10			a6.put("sato", new Integer(60));
11			a6.put("yamada", new Integer(70));
12			System.out.printf("   suzuki さんの得点:%d\n", a6.get("suzuki"));
13	//		TreeMap  b6;
14	//		b6 = a6;   a6 と b6 は同じ TreeMap(a6 を変更すれば b6 も変化)
15		}
16	}
				   TreeMap クラス suzuki さんの得点:40
30 60 50 40 50 70 90 10 30 20 50 80 90 10 30
1 次元配列 平均点( 46.666666666666664 )以上は 2 人 2 次元配列 平均点( 47.5 )以上のクラスは 2
01	<!DOCTYPE HTML>
02	<HTML>
03	<HEAD>
04		<TITLE>配列</TITLE>
05		<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
06		<SCRIPT TYPE="text/javascript">
07			/****************************/
08			/* 配列に対するプログラム例 */
09			/*      coded by Y.Suganuma */
10			/****************************/
11			function run() {
12					//
13					// データの取得
14					//
15				let str  = document.getElementById("tx").value;
16				let data = str.split("\n");
17					//
18					// 1 次元配列
19					//
20				str += "\n1 次元配列\n";
21				let st3 = data[0].split(" ");   // 1 行目のデータ,点数
22				let a3  = new Array();   // サイズ未定
23	//			let a3 = new Array(100);   // サイズが100
24	//			let a3 = new Array(1, "abc", 3.5);   // 初期設定によって配列確保
25	//			let b3 = a3;   a3 と b3 は同じ配列(a3 を変更すれば b3 も変化)
26				let mean3 = 0.0;
27				for (let i1 = 0; i1 < st3.length; i1++) {
28					a3[i1] = parseInt(st3[i1]);
29					mean3 += a3[i1];
30				}
31				mean3 /= st3.length;
32				let n3 = 0;
33				for (let i1 = 0; i1 < st3.length; i1++) {
34					if (a3[i1] >= mean3)
35						n3++;
36				}
37				str += ("   平均点( " + mean3 + " )以上は " + n3 + " 人\n");
38					//
39					// 2 次元配列
40					//
41				str += "2 次元配列\n";
42				let mean4   = 0.0;   // 全体の平均
43				let s_num4  = 0;   // 全体の人数
44				let c_mean4 = new Array();   // クラス毎の平均
45				let a4      = new Array();
46				let k       = 0;
47				for (let i1 = 0; i1 < data.length-1; i1++) {
48					if (data[i1+1].length > 0) {
49						a4[k]      = new Array();   // a4[k] = {1, 2, 3}; のような初期設定も可
50						c_mean4[k] = 0.0;
51						let st4    = data[i1+1].split(" ");
52						for (let i2 = 0; i2 < st4.length; i2++) {
53							a4[k][i2]   = parseInt(st4[i2]);
54							c_mean4[k] += a4[k][i2];
55						}
56						mean4      += c_mean4[k];
57						s_num4     += st4.length;
58						c_mean4[k] /= st4.length;   // クラス毎の平均
59						k++;
60					}
61				}
62				mean4 /= s_num4;   // 全体の人数
63				let n4 = 0;
64				for (let i1 = 0; i1 < data.length-1; i1++) {
65					if (c_mean4[i1] >= mean4)
66						n4++;
67				}
68				str += ("   平均点( " + mean4 + " )以上のクラスは " + n4 + "\n");
69	//			b4 = a4;   a4 と b4 は同じ配列(a4 を変更すれば b4 も変化)
70	//			c4 = a4[1];   c4 は,a4 の 2 行目と同じ 1 次元配列
71	//			              (a4 の 2 行目を変更すれば c4 も変化)
72					//
73					// 結果の設定
74					//
75				document.getElementById("tx").value = str;
76			}
77		</SCRIPT>
78	</HEAD>
79	<BODY  STYLE="font-size:130%">
80		<P STYLE="text-align:center">
81			<INPUT TYPE="button" VALUE="OK" onClick="run()" STYLE="font-size:90%"><BR><BR>
82			<TEXTAREA TYPE="text" ID="tx" COLS="50" ROWS="10" STYLE="font-size: 100%">
83	30 60 50
84	40 50 70 90 10
85	30 20 50
86	80 90 10 30
87			</TEXTAREA>
88		</P>
89	</BODY>
90	</HTML>
				
01	<!DOCTYPE HTML>
02	<HTML>
03	<HEAD>
04		<TITLE>連想配列</TITLE>
05		<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
06		<LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css">
07	</HEAD>
08	<BODY CLASS="white">
09		<H1 CLASS="center">連想配列</H1>
10		<SCRIPT TYPE="text/javascript">
11			let color = {'red' : '赤', 'blue' : '青'};
12			document.write(color['red'] + "<BR>\n");
13			document.write(color['blue'] + "<BR>\n");
14	//		document.write(color[0] + "<BR>\n");   エラー
15			for (let english in color)
16				document.write("   " + english + " は " + color[english] + " です<BR>\n");
17		</SCRIPT>
18	</BODY>
19	</HTML>
				
01	<?php
02		printf("人数は? ");
03		$m3 = intval(trim(fgets(STDIN)));
04		$a3 = array();
05	//	$a3 = array(1, "abc", 3.5);   // 初期設定も可
06	//	$b3 = $a3;   $a3 と $b3 は値は同じでも別の配列
07		$mean3 = 0.0;
08		for ($i1 = 0; $i1 < $m3; $i1++) {
09			printf("   %d 番目の人の点数は? ", $i1+1);
10			$a3[$i1]= intval(trim(fgets(STDIN)));
11			$mean3 += $a3[$i1];
12		}
13		$mean3 /= $m3;
14		$n3     = 0;
15		for ($i1 = 0; $i1 < $m3; $i1++) {
16			if ($a3[$i1] >= $mean3)
17				$n3++;
18		}
19		printf("   平均点( %f )以上は %d 人\n", $mean3, $n3);
20	?>
				
01	<?php
02		printf("クラス数は? ");
03		$m4      = intval(trim(fgets(STDIN)));   // クラス数
04		$mean4   = 0.0;   // 全体の平均
05		$c_mean4 = array();   // クラス毎の平均
06		$s_num4  = 0;   // 全体の人数
07		$a4      = array();
08		for ($i1 = 0; $i1 < $m4; $i1++) {
09			printf("   クラス %d の人数は? ", $i1+1);
10			$n_m4         = intval(trim(fgets(STDIN)));   // クラス内の人数
11			$a4[$i1]      = array();   // $a4[$i1] = array(1, 2, 3); のような初期設定も可
12			$c_mean4[$i1] = 0.0;
13			for ($i2 = 0; $i2 < $n_m4; $i2++) {
14				printf("      クラス %d の %d 番目の人の点数は? ", $i1+1, $i2+1);
15				$a4[$i1][$i2]  = intval(trim(fgets(STDIN)));
16				$c_mean4[$i1] += $a4[$i1][$i2];
17			}
18			$mean4        += $c_mean4[$i1];
19			$s_num4       += $n_m4;
20			$c_mean4[$i1] /= $n_m4;   // クラス毎の平均
21		}
22		$mean4 /= $s_num4;   // 全体の人数
23		$n4     = 0;
24		for ($i1 = 0; $i1 < $m4; $i1++) {
25			if ($c_mean4[$i1] >= $mean4)
26				$n4++;
27		}
28		printf("   平均点( %f )以上のクラスは %d \n", $mean4, $n4);
29	//	$b4 = $a4;   $a4 と $b4 は値は同じでも別の配列
30	//	$c4 = $a4[1];   // $c4 は $a4 の 2 行目と同じ値だが,別の 1 次元配列
31	?>
				
01	<?php
02		printf("ファイル入出力\n");
03		$in    = fopen("data.txt", "rb");
04		$out   = fopen("out.txt", "wb");
05		$mean5 = 0.0;
06		$m5    = 0;
07		$a5    = array();
08		while ($x = fgets($in)) {
09			$a5[$m5] = intval(trim($x));
10			$mean5  += $a5[$m5];
11			$m5++;
12			fwrite($out, $m5." ".$a5[$m5-1]."\n");
13		}
14		fclose($in);
15		fclose($out);
16		$mean5 /= $m5;
17		$n5     = 0;
18		for ($i1 = 0; $i1 < $m5; $i1++) {
19			if ($a5[$i1] >= $mean5)
20				$n5++;
21		}
22		printf("   平均点( %f )以上は %d 人\n", $mean5, $n5);
23	?>
				
キーの利用 suzuki さんの得点:40
01	<?php
02		printf("キーの利用\n");
03		$a6 = array('suzuki'=>40, 'sato'=>60, 'yamada'=>70);
04		printf("   suzuki さんの得点:%d\n", $a6['suzuki']);
05	?>				
01	printf("人数は? ");
02	m3 = Integer(gets());   # 人数
03	a3 = Array.new();
04	#a3 = Array.new(3);   # サイズを指定しても良い
05	#a3 = Array[1, "abc", 3.5];   # a3 = [1, "abc", 3.5]; でも良い.
06	#b3 = a3;   #a3 と b3 は同じ配列(a3 を変更すれば b3 も変化)
07	mean3 = 0.0;
08	for i1 in (0...m3)
09		printf("   %d 番目の人の点数は? ", i1+1);
10		a3[i1] = Integer(gets());
11		mean3 += a3[i1];
12	end
13	mean3 /= Float(m3);
14	n3     = 0;
15	for i1 in (0...m3)
16		if (a3[i1] >= mean3)
17			n3 += 1;
18		end
19	end
20	printf("   平均点( %f )以上は %d 人\n", mean3, n3);
				
01	printf("クラス数は? ");
02	m4      = Integer(gets());   # クラス数
03	mean4   = 0.0;   # 全体の平均
04	c_mean4 = Array.new();   # クラス毎の平均
05	s_num4  = 0;   # 全体の人数
06	a4      = Array.new();
07	#a4 = Array[[1, 2, 3], [10, 20, 30]];   # 全体の初期設定も可
08	for i1 in (0...m4)
09		printf("   クラス %d の人数は? ", i1+1);
10		n_m4        = Integer(gets());   # クラス内の人数
11		a4[i1]      = Array.new();
12	#	a4[i1] = Array[1, 2, 3];   # 行毎の初期設定も可
13		c_mean4[i1] = 0.0;
14		for i2 in(0...n_m4)
15			printf("      クラス %d の %d 番目の人の点数は? ", i1+1, i2+1);
16			a4[i1][i2]   = Integer(gets());
17			c_mean4[i1] += a4[i1][i2];
18		end
19		mean4       += c_mean4[i1];
20		s_num4      += n_m4;
21		c_mean4[i1] /= Float(n_m4);   # クラス毎の平均
22	end
23	mean4 /= Float(s_num4);   # 全体の平均
24	n4     = 0;
25	for i1 in (0...m4)
26		if (c_mean4[i1] >= mean4)
27			n4 += 1;
28		end
29	end
30	printf("   平均点( %f )以上のクラスは %d \n", mean4, n4);
31	#b4 = a4;   # a4 と b4 は同じ配列(a4 を変更すれば b4 も変化)
32	#c4 = a4[1];   # c4 は,a4 の 2 行目と同じ 1 次元配列
33	#              (a4 の 2 行目を変更すれば c4 も変化)
				
01	printf("ファイル入出力\n");
02	inp   = open("data.txt", "r");
03	out   = open("out.txt", "w");
04	mean5 = 0.0;
05	m5    = 0;
06	a5    = Array.new();
07	while x = inp.gets()
08		a5[m5] = Integer(x);
09		mean5 += a5[m5];
10		m5 += 1;
11		out.printf("%d %d\n", m5, a5[m5-1]);
12	end
13	inp.close();
14	out.close();
15	mean5 /= Float(m5);
16	n5     = 0;
17	for i1 in (0...m5)
18		if (a5[i1] >= mean5)
19			n5 += 1;
20		end
21	end
22	printf("   平均点( %f )以上は %d 人\n", mean5, n5);
				
001			#
002			# 演算子のオーバーロード
003			#
004	class Matrix
005	
006		def initialize(_n, _m)
007			@_n   = _n;
008			@_m   = _m;
009			@_mat = Array.new(@_n);
010			for i1 in (0...@_n)
011				@_mat[i1] = Array.new(@_m);
012			end
013		end
014	
015		def input()
016			printf("*** %d 行 %d 列の行列***\n", @_n, @_m);
017			for i1 in (0...@_n)
018				printf("%d 行目のデータ\n", i1+1);
019				for i2 in (0...@_m)
020					printf("   %d 列目の値は? ", i2+1);
021					@_mat[i1][i2] = Float(gets());
022				end
023			end
024		end
025	
026		def output()
027			for i1 in (0...@_n)
028				for i2 in (0...@_m)
029					printf(" %f", @_mat[i1][i2]);
030				end
031				printf("\n");
032			end
033		end
034	
035		def col()
036			return @_m;
037		end
038	
039		def mat()
040			return @_mat;
041		end
042	
043		def set(i, j, v)
044			@_mat[i][j]  = v;
045		end
046	
047		def +(obj)
048			c = Matrix.new(@_n, @_m);
049			for i1 in (0...@_n)
050				for i2 in (0...@_m)
051					v = @_mat[i1][i2] + (obj.mat)[i1][i2];   # v = @_mat[i1][i2] + obj._mat[i1][i2];
052					c.set(i1, i2, v);   # c._mat[i1][i2] = v;
053				end
054			end
055			return c;
056		end
057	
058		def -(obj)
059			c = Matrix.new(@_n, @_m);
060			for i1 in (0...@_n)
061				for i2 in (0...@_m)
062					v = @_mat[i1][i2] - (obj.mat)[i1][i2];   # v = @_mat[i1][i2] - obj._mat[i1][i2];
063					c.set(i1, i2, v);   # c._mat[i1][i2] = v;
064				end
065			end
066			return c;
067		end
068	
069		def *(obj)
070			m = obj.col();   # m = obj._m;
071			c = Matrix.new(@_n, m);
072			for i1 in (0...@_n)
073				for i2 in (0...m)
074					v = 0.0;
075					for i3 in (0...@_m)
076						v += @_mat[i1][i3] * (obj.mat)[i3][i2];   # v += @_mat[i1][i3] * obj._mat[i3][i2];
077					end
078					c.set(i1, i2, v);   # c._mat[i1][i2] = v;
079				end
080			end
081			return c;
082		end
083	#	attr_reader("_m");   # attr_reader("_m", "_mat");
084	#	attr_accessor("_mat");   # attr_writer("_mat");
085	end
086	
087	printf("計算方法( 0 : +, 1 : -, 2 : * ) ");
088	sw = Integer(gets());   # 計算方法
089	case sw
090		when 0       # +
091			printf("--- A+B ---\n");
092			printf("n 行 m 列の n と m? ");
093			str = gets();
094			x   = str.split(" ");
095			n   = Integer(x[0]);
096			m   = Integer(x[1]);
097			a   = Matrix.new(n, m)
098			b   = Matrix.new(n, m)
099			printf("Matrix A  \n");
100			a.input();
101			printf("Matrix B  \n");
102			b.input();
103			printf("Matrix (A+B)\n");
104			c = a + b;
105			c.output();
106		when 1       # -
107			printf("--- A-B ---\n");
108			printf("n 行 m 列の n と m? ");
109			str = gets();
110			x   = str.split(" ");
111			n   = Integer(x[0]);
112			m   = Integer(x[1]);
113			a   = Matrix.new(n, m)
114			b   = Matrix.new(n, m)
115			printf("Matrix A  \n");
116			a.input();
117			printf("Matrix B  \n");
118			b.input();
119			printf("Matrix (A-B)\n");
120			c = a - b;
121			c.output();
122		when 2       # -
123			printf("--- A*B ---\n");
124			printf("n 行 m 列の n と m( A )? ");
125			str = gets();
126			x   = str.split(" ");
127			n   = Integer(x[0]);
128			m   = Integer(x[1]);
129			a   = Matrix.new(n, m)
130			printf("行列 B の列数は? ");
131			l = Integer(gets());
132			b = Matrix.new(m, l)
133			printf("Matrix A  \n");
134			a.input();
135			printf("Matrix B  \n");
136			b.input();
137			printf("Matrix (A*B)\n");
138			c = a * b;
139			c.output();
140	end
141			#
142			# Matrix クラスの利用
143			#
144	printf("***Matrix クラスの利用***\n");
145	require 'matrix'
146	a = Matrix[[1.0, 1.0], [1.0, 2.0]]
147	b = Matrix[[2.0, -1.0], [-1.0, 1.0]]
148	print a, "\n"
149		# => Matrix[[1.0, 1.0], [1.0, 2.0]]
150	print b, "\n"
151		# => Matrix[[2.0, -1.0], [-1.0, 1.0]]
152	print "a+b  ", a+b, "\n"
153		# => a+b  Matrix[[3.0, 0.0], [0.0, 3.0]]
154	print "a-b  ", a-b, "\n"
155		# => a-b  Matrix[[-1.0, 2.0], [2.0, 1.0]]
156	print "a*b  ", a*b, "\n"
157		# => a*b  Matrix[[1.0, 0.0], [0.0, 1.0]]
158	print "a/a  ", a/a, "\n"
159		# => a/a  Matrix[[1.0, 0.0], [0.0, 1.0]]
160	print "a*2.0  ", a*2.0, "\n"
161		# => a*2.0  Matrix[[2.0, 2.0], [2.0, 4.0]]
162	print "a/2.0  ", a/2.0, "\n"
163		# => a/2.0  Matrix[[0.5, 0.5], [0.5, 1.0]]
				
x + y x - y x * y
A + B A - B A * B
01	# -*- coding: UTF-8 -*-
02	m1 = int(input("(list)人数は? "))
03	a1 = list()
04	#a1 = [1, "abc", 3.5]   # 初期設定も可
05	#b1 = a1   # a1 と b1 は同じ配列(a1 を変更すれば b1 も変化)
06	#c1 = copy.copy(a1)   # a1 と c1 は同じ値の異なる配列
07	mean1 = 0.0
08	for i1 in range(0, m1) :
09		print("   ", i1+1, sep=' ', end='')
10		a1.append(int(input(" 番目の人の点数? ")))
11		mean1 += a1[i1]
12	mean1 /= m1
13	n1     = 0
14	for i1 in range(0, m1) :
15		if (a1[i1] >= mean1) :
16			n1 += 1
17	print("   平均点(", mean1, ")以上は", n1, "人")
				
01	# -*- coding: UTF-8 -*-
02	m2      = int(input("(list)クラス数は? "))   # クラス数
03	mean2   = 0.0   # 全体の平均
04	c_mean2 = list()   # クラス毎の平均
05	s_num2  = 0   # 全体の人数
06	a2      = list()
07	#a2 = [[1, 2, 3], [4, 5, 6]]   # 全体の初期設定も可
08	#b2 = a2   # a2 と b2 は同じ配列(a2 を変更すれば b2 も変化)
09	#c2 = copy.copy(a2)   # a2 と c2 は同じ配列(a2 を変更すれば c2 も変化)
10	#d2 = copy.deepcopy(a2)   # a2 と d2 は同じ値の異なる配列
11	#e2 = a2[1]   # a2 と e2 は同じ配列(a2 を変更すれば e2 も変化)
12	for i1 in range(0, m2) :
13		print("   クラス", i1+1, "の人数は? ", sep=' ', end='')
14		n_m2 = int(input())   # クラス内の人数
15		a2.append(list())
16	#	a2.append([1, 2, 3])   # 行毎の初期設定も可
17		c_mean2.append(0.0)
18		for i2 in range(0, n_m2) :
19			print("      クラス", i1+1, "の", i2+1, "番目の人の点数は? ", sep=' ', end='')
20			a2[i1].append(int(input()))
21			c_mean2[i1] += a2[i1][i2]
22		mean2       += c_mean2[i1]
23		s_num2      += n_m2;
24		c_mean2[i1] /= n_m2   # クラス毎の平均
25	mean2 /= s_num2   # 全体の平均
26	n2     = 0
27	for i1 in range(0, m2) :
28		if (c_mean2[i1] >= mean2) :
29			n2 += 1
30	print("   平均点(", mean2, ")以上のクラスは", n2)
				
01	# -*- coding: UTF-8 -*-
02	from array import *
03	m3 = int(input("(array)人数は? "))
04	a3 = array("i")
05	#a3 = array("i", [1, 2, 3])   # 初期設定も可
06	#b3 = a3   # a3 と b3 は同じ配列(a3 を変更すれば b3 も変化)
07	#c3 = copy.copy(a3)   # a3 と c3 は同じ値の異なる配列
08	mean3 = 0.0
09	for i1 in range(0, m3) :
10		print("   ", i1+1, sep=' ', end='')
11		a3.append(int(input(" 番目の人の点数? ")))
12		mean3 += a3[i1]
13	mean3 /= m3
14	n3     = 0
15	for i1 in range(0, m3) :
16		if (a3[i1] >= mean3) :
17			n3 += 1
18	print("   平均点(", mean3, ")以上は", n3, "人")
				
01	# -*- coding: UTF-8 -*-
02	from array import *
03	m4      = int(input("(array)クラス数は? "))   # クラス数
04	mean4   = 0.0   # 全体の平均
05	c_mean4 = array("f")   # クラス毎の平均
06	s_num4  = 0   # 全体の人数
07	a4      = list()
08	#a4 = [array("i", [1, 2, 3]), array("i", [4, 5, 6])]   # 全体の初期設定も可
09	#b4 = a4   # a4 と b4 は同じ配列(a4 を変更すれば b4 も変化)
10	#c4 = copy.copy(a4)   # a4 と c4 は同じ配列(a4 を変更すれば c4 も変化)
11	#d4 = copy.deepcopy(a4)   # a4 と d4 は同じ値の異なる配列
12	#e4 = a4[1]   # a4 と e4 は同じ配列(a4 を変更すれば e4 も変化)
13	for i1 in range(0, m4) :
14		print("   クラス", i1+1, "の人数は? ", sep=' ', end='')
15		n_m4 = int(input())   # クラス内の人数
16		a4.append(array("i"))
17		c_mean4.append(0.0)
18		for i2 in range(0, n_m4) :
19			print("      クラス", i1+1, "の", i2+1, "番目の人の点数は? ", sep=' ', end='')
20			a4[i1].append(int(input()))
21			c_mean4[i1] += a4[i1][i2]
22		mean4       += c_mean4[i1]
23		c_mean4[i1] /= n_m4   # クラスの平均
24		s_num4      += n_m4;
25	mean4 /= s_num4
26	n4     = 0
27	for i1 in range(0, m4) :
28		if (c_mean4[i1] >= mean4) :
29			n4 += 1
30	print("   平均点(", mean4, ")以上のクラスは", n4)
				
01	# -*- coding: UTF-8 -*-
02	import numpy as np
03	m5 = int(input("(NumPy)人数は? "))
04	a5 = np.empty(m5)
05	#a5 = np.array([1, 2, 3], np.int)   # np.array([1, 2, 3]) でも可
06	#a5 = np.array([1, 2, 3], np.float)   # np.array([1.0, 2.0, 3.0]) でも可
07	#b5 = a5   # a5 と b5 は同じ配列(a5 を変更すれば b5 も変化)
08	#c5 = copy.copy(a5)   # a5 と c5 は同じ値の異なる配列
09	mean5 = 0.0
10	for i1 in range(0, m5) :
11		print("   ", i1+1, sep=' ', end='')
12		a5[i1] = int(input(" 番目の人の点数? "))
13		mean5 += a5[i1]
14	mean5 /= m5
15	n5     = 0
16	for i1 in range(0, m5) :
17		if (a5[i1] >= mean5) :
18			n5 += 1
19	print("   平均点(", mean5, ")以上は", n5, "人")
				
01	# -*- coding: UTF-8 -*-
02	import numpy as np
03	m6      = int(input("(NumPy)クラス数は? "))   # クラス数
04	n_m6    = int(input("クラス内の人数は? "))   # クラス内の人数
05	mean6   = 0.0   # 全体の平均
06	s_num6  = m6 * n_m6   # 全体の人数
07	c_mean6 = np.zeros(m6, np.float)   # クラス毎の平均
08	a6      = np.empty((m6,n_m6))
09	#a6 = np.array([[1, 2, 3], [4, 5, 6]])   # 全体の初期設定も可
10	#b6 = a6   # a6 と b6 は同じ配列(a6 を変更すれば b6 も変化)
11	#c6 = copy.copy(a6)   # a6 と c6 は同じ値の異なる配列
12	#e6 = a6[1]   # a6 と e6 は同じ配列(a6 を変更すれば e6 も変化)
13	for i1 in range(0, m6) :
14		print("   クラス", i1+1)
15		for i2 in range(0, n_m6) :
16			print("      ", i2+1, "番目の人の点数は? ", sep=' ', end='')
17			a6[i1][i2]   = int(input())
18			c_mean6[i1] += a6[i1][i2]
19		mean6       += c_mean6[i1]
20		c_mean6[i1] /= n_m6   # クラスの平均
21	mean6 /= s_num6
22	n6     = 0
23	for i1 in range(0, m6) :
24		if (c_mean6[i1] >= mean6) :
25			n6 += 1
26	print("   平均点(", mean6, ")以上のクラスは", n6)
				
01	# -*- coding: UTF-8 -*-
02	from array import *
03	import numpy as np
04				# array
05	a7  = [array("i", [0, 0, 0]), array("i", [0, 0, 0])]
06	f_i = open('array.txt', 'r')
07	f_o = open('out1.txt', 'w')
08	str = f_i.read()
09	f_i.close()
10	s1 = str.split("\n")
11	for i1 in range(0, 2) :
12		s2 = s1[i1].split(" ")
13		f_o.write(s1[i1] + "\n");
14		for i2 in range(0, 3) :
15			a7[i1][i2] = int(s2[i2])
16	print(a7)
17	f_o.close()
18				# Numpy
19	a8 = np.empty((2,3))
20	a8 = np.loadtxt('array.txt')
21	np.savetxt('out2.txt', a8)
22	print(a8)
				
1 2 3 4 5 6
辞書型 suzuki さんの得点: 40
01	# -*- coding: UTF-8 -*-
02	print("辞書型")
03	a9 = {"suzuki" : 40, "sato" : 60, "yamada" : 70}
04	#a9 = dict(suzuki = 40, sato = 60, yamada = 70)
05	print("   suzuki さんの得点:", a9.get("suzuki"))
06	#b9 = a9   # a9 と b9 は同じ辞書(a9 を変更すれば b9 も変化)				
01	# -*- coding: UTF-8 -*-
02	from array import *
03	import numpy as np
04				# list
05	x1 = [[1, 2], [3, 4]]
06	y1 = [[2, 0], [0, 2]]
07	print("list x1", x1, "y1", y1)
08	print("x1+y1", x1 + y1)
09	#print(x1 - y1)   サポート無し
10	#print(x1 * y1)   サポート無し
11				# array
12	x2 = [array("f", [1, 2]), array("f", [3, 4])]
13	y2 = [array("f", [2, 0]), array("f", [0, 2])]
14	print("arrayt x2", x2, "y2", y2)
15	print("x2+y2", x2 + y2)
16	#print(x2 - y2)   サポート無し
17	#print(x2 * y2)   サポート無し
18				# NumPy ( array )
19	x3 = np.array([[1.0, 2.0], [3.0, 4.0]])
20	y3 = np.array([[2.0, 0.0], [0.0, 2.0]])
21	print("np.array")
22	print(x3, "x3")
23	print(y3, "y3")
24	print(x3 + y3, "x3+y3")
25	print(x3 - y3, "x3-y3")
26	print(x3 * y3, "x3*y3")
27				# NumPy ( matrix )
28	x4 = np.matrix([[1.0, 2.0], [3.0, 4.0]])
29	y4 = np.matrix([[2.0, 0.0], [0.0, 2.0]])
30	print("np.matrix")
31	print(x4, "x4")
32	print(y4, "y4")
33	print(x4 + y4, "x4+y4")
34	print(x4 - y4, "x4-y4")
35	print(x4 * y4, "x4*y4")
				
list x1 [[1, 2], [3, 4]] y1 [[2, 0], [0, 2]]
x1+y1 [[1, 2], [3, 4], [2, 0], [0, 2]]
arrayt x2 [array('f', [1.0, 2.0]), array('f', [3.0, 4.0])] y2 [array('f', [2.0, 0.0]), array('f', [0.0, 2.0])]
x2+y2 [array('f', [1.0, 2.0]), array('f', [3.0, 4.0]), array('f', [2.0, 0.0]), array('f', [0.0, 2.0])]
np.array
[[ 1.  2.]
 [ 3.  4.]] x3
[[ 2.  0.]
 [ 0.  2.]] y3
[[ 3.  2.]
 [ 3.  6.]] x3+y3
[[-1.  2.]
 [ 3.  2.]] x3-y3
[[ 2.  0.]
 [ 0.  8.]] x3*y3
np.matrix
[[ 1.  2.]
 [ 3.  4.]] x4
[[ 2.  0.]
 [ 0.  2.]] y4
[[ 3.  2.]
 [ 3.  6.]] x4+y4
[[-1.  2.]
 [ 3.  2.]] x4-y4
[[ 2.  4.]
 [ 6.  8.]] x4*y4					
01	using System;
02	
03	class Program
04	{
05		static void Main()
06		{
07			Console.Write("人数は? ");
08			int m3   = int.Parse(Console.ReadLine());
09			int[] a3 = new int [m3];
10	//		int[] a3 = new int [] {1, 2, 3}; のような初期設定も可
11	//		int[] a3 = new[] {1, 2, 3};
12	//		int[] a3 = {1, 2, 3};
13	//		int[] b3;
14	//		b3 = a3;   a3 と b3 は同じ配列(a3 を変更すれば b3 も変化)
15			double mean3 = 0.0;
16			for (int i1 = 0; i1 < m3; i1++) {
17				Console.Write("   " + (i1+1) + " 番目の人の点数は? ");
18				a3[i1] = int.Parse(Console.ReadLine());
19				mean3 += a3[i1];
20			}
21			mean3 /= m3;
22			int n3 = 0;
23			for (int i1 = 0; i1 < m3; i1++) {
24				if (a3[i1] >= mean3)
25					n3++;
26			}
27			Console.WriteLine("   平均点( " + mean3 + " )以上は " +  n3 + " 人");
28		}
29	}
				
01	using System;
02	
03	class Program
04	{
05		static void Main()
06		{
07			Console.Write("クラス数は? ");
08			int m4           = int.Parse(Console.ReadLine());   // クラス数
09			double mean4     = 0.0;   // 全体の平均
10			double[] c_mean4 = new double [m4];   // クラス毎の平均
11			int s_num4       = 0;   // 全体の人数
12			int[][] a4       = new int [m4][];
13	
14	//		int[][] a4 = new int [2][3];   // この記述は許されない
15	//		int[][] a4 = new int[][] {   // 行毎に列数が変わっても良い
16	//			new int[] {10, 20, 30},
17	//			new int[] {40, 50, 60}
18	//		};
19	//		int[][] a4 = new int [2][];
20	//		a4[0]      = new int[] {10, 20, 30};
21	//		a4[1]      = new int[] {40, 50, 60};
22	
23	//		int[,] a4 = {{10, 20, 30}, {40, 50, 60}};   // 以下のような方法も可能
24	//		int[,] a4 = new int[,] {{10, 20, 30}, {40, 50, 60}};
25	//		int[,] a4 = new[,] {{10, 20, 30}, {40, 50, 60}};
26	//		int[,] a4 = new int [2,3];   // 初期設定を行わない
27	
28			for (int i1 = 0; i1 < m4; i1++) {
29				Console.Write("   クラス " + (i1+1) +" の人数は? ");
30				int n_m4    = int.Parse(Console.ReadLine());   // クラス内の人数
31				a4[i1]      = new int [n_m4];
32				c_mean4[i1] = 0.0;
33				for (int i2 = 0; i2 < n_m4; i2++) {
34					Console.Write("      クラス " + (i1+1) + " の " + (i2+1) + " 番目の人の点数は? ");
35					a4[i1][i2]   = int.Parse(Console.ReadLine());
36					c_mean4[i1] += a4[i1][i2];
37				}
38				mean4       += c_mean4[i1];
39				s_num4      += n_m4;
40				c_mean4[i1] /= n_m4;   // クラス毎の平均
41			}
42			mean4 /= s_num4;   // 全体の平均
43			int n4 = 0;
44			for (int i1 = 0; i1 < m4; i1++) {
45				if (c_mean4[i1] >= mean4)
46					n4++;
47			}
48			Console.WriteLine("   平均点( " + mean4 + " )以上のクラスは " + n4);
49	//		int b4[][];
50	//		b4 = a4;   a4 と b4 は同じ配列(a4 を変更すれば b4 も変化)
51	//		int c4[];
52	//		c4 = a4[1];   c4 は,a4 の 2 行目と同じ 1 次元配列
53	//	 	             (a4 の 2 行目を変更すれば c4 も変化)
54	//		上記の処理は,int[,] a4; の形で宣言したときは不可能
55		}
56	}
				
01	using System;
02	using System.IO;
03	using System.Collections.Generic;
04	
05	class Program
06	{
07		static void Main()
08		{
09			double mean5     = 0.0;
10			int m5           = 0;
11			StreamWriter ot  = new StreamWriter("out.txt");
12			string[] lines   = File.ReadAllLines("data.txt");
13			List  a5 = new List  ();
14			foreach (string line in lines) {
15				int x  = int.Parse(line);
16				a5.Add(x);
17				mean5 += x;
18				m5++;
19				ot.WriteLine(m5 + " " + x);
20			}
21			ot.Close();
22			mean5 /= m5;   // mean5 /= a5.Count;
23			int n5 = 0;
24			for (int i1 = 0; i1 < m5; i1++) {
25				if (a5[i1] >= mean5)
26					n5++;
27			}
28			Console.WriteLine("   平均点( " + mean5 + " )以上は " + n5 + " 人");
29	//		List <int> b5;
30	//		b5 = a5;   a5 と b5 は同じ List(a5 を変更すれば b5 も変化)
31		}
32	}
				  
01	using System;
02	using System.Collections.Generic;
03	
04	class Program
05	{
06		static void Main()
07		{
08			Dictionary  a6 = new Dictionary  ();
09			a6.Add("suzuki", 40);
10			a6.Add("sato", 60);
11			a6.Add("yamada", 70);
12			Console.WriteLine("   suzuki さんの得点:" + a6["suzuki"]);
13	//		Dictionary  b6;
14	//		b6 = a6;   a6 と b6 は同じ Dictionary(a6 を変更すれば b6 も変化)
15		}
16	}
				   suzuki さんの得点:40
01	Module Test
02		Sub Main()
03			Console.Write("人数は? ")
04			Dim m3 As Integer = Integer.Parse(Console.ReadLine())
05			Dim a3(m3-1) As Integer
06	'		Dim a3(n) As Integer   要素数は n + 1
07	'		Dim a3() As Integer = {1, 2, 3} のような初期設定も可
08	'		Dim a3(2) As Integer = {1, 2, 3} 要素数指定の初期設定は不可
09	'		Dim b3(m3-1) As Integer
10	'		b3 = a3   a3 と b3 は同じ配列(a3 を変更すれば b3 も変化)
11			Dim mean3 As Double = 0.0
12			For i1 As Integer = 0 To m3-1
13				Console.Write("   " & (i1+1) & " 番目の人の点数は? ")
14				a3(i1) = Integer.Parse(Console.ReadLine())
15				mean3 += a3(i1)
16			Next
17			mean3 /= m3
18			Dim n3 As Integer = 0
19			For i1 As Integer = 0 To m3-1
20				If a3(i1) >= mean3 Then
21					n3 += 1
22				End If
23			Next
24			Console.WriteLine("   平均点( " & mean3 & " )以上は " & n3 & " 人")
25		End Sub
26	End Module
				
01	Module Test
02		Sub Main()
03			Console.Write("クラス数は? ")
04			Dim m4 As Integer   = Integer.Parse(Console.ReadLine())   ' クラス数
05			Dim mean4 As Double = 0.0   ' 全体の平均
06			Dim c_mean4(m4-1) As Double   ' クラス毎の平均
07			Dim s_num4 As Integer = 0   ' 全体の人数
08			Dim a4(m4-1, 100) As Integer
09	'		Dim a4(,) As Integer = {{1, 2, 3}, {4, 5, 6}}
10	'		Dim a4(,) As Integer = New Integer(,) {{1, 2, 3}, {4, 5, 6}}   でも可
11	'		Dim v1(2,3) As Integer = {{1, 2, 3}, {4, 5, 6}}   要素数指定の初期設定は不可
12			For i1 As Integer = 0 To m4-1
13				Console.Write("   クラス " & (i1+1) & " の人数は? ")
14				Dim n_m4 As Integer = Integer.Parse(Console.ReadLine())   ' クラス内の人数
15				c_mean4(i1) = 0.0
16				For i2 As Integer = 0 To n_m4-1
17					Console.Write("      クラス " & (i1+1) & " の " & (i2+1) & " 番目の人の点数は? ")
18					a4(i1, i2)     = Integer.Parse(Console.ReadLine())
19					c_mean4(i1) += a4(i1, i2)
20				Next
21				mean4       += c_mean4(i1)
22				s_num4      += n_m4
23				c_mean4(i1) /= n_m4   ' クラス毎の平均
24			Next
25			mean4 /= s_num4   ' 全体の平均
26			Dim n4 As Integer = 0
27			For i1 As Integer = 0 To m4-1
28				If c_mean4(i1) >= mean4
29					n4 += 1
30				End If
31			Next
32	'		Dim b4(,) As Integer = a4   ' b4 は a4 と同じ配列
33			Console.WriteLine("   平均点( " & mean4 & " )以上のクラスは " & n4)
34		End Sub
35	End Module
				
01	Imports System.IO
02	Imports System.Collections.Generic
03	
04	Module Test
05		Sub Main()
06			Dim a5 As New List(Of Integer)
07			Dim inp As StreamReader = New StreamReader("data.txt")
08			Dim ot As StreamWriter  = new StreamWriter("out.txt")
09			Dim mean5 As Double = 0.0
10			Dim m5 As Integer   = 0
11			Do While Not inp.EndOfStream
12				Dim x As Integer = Integer.Parse(inp.ReadLine())
13				a5.Add(x)
14				mean5 += x
15				m5    += 1
16				ot.WriteLine(m5 & " " & x)
17			Loop
18			inp.Close()
19			ot.Close()
20			mean5 /= m5  ' mean5 /= a5.Count
21			Dim n5 As Integer = 0
22			For i1 As Integer = 0 To m5-1
23				if a5(i1) >= mean5 Then
24					n5 += 1
25				End If
26			Next
27	'		Dim b5 As New List(Of Integer)
28	'		b5 = a5
29			Console.WriteLine("   平均点( " & mean5 & " )以上は " & n5 & " 人")
30		End Sub
31	End Module
				
| 情報学部 | 菅沼ホーム | 目次 | 索引 |