

2.2 配列 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 番号 | 以下をクリックすると同位置にジャンプします | |
| (1) | 配列の考え方 | |
| (2) | 最大値を求める | |
| (3) | 配列要素の逆転 | |
| (4) | 素数を求める | |
| (a) | 力任せ法 | |
| (b) | 改良1 | |
| (c) | 改良2 | |
| (d) | 改良3(エラトステネスのふるい) | |
| (5) | 文字列は文字型の配列 | |

[Program 2−2] 配列の初期値設定例
[Program 2−3] 配列へのデータ設定例
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 番号 | 以下をクリックすると同位置にジャンプします | |
| (1) | 配列の考え方 | |
| (2) | 最大値を求める | |
| (3) | 配列要素の逆転 | |
| (4) | 素数を求める | |
| (a) | 力任せ法 | |
| (b) | 改良1 | |
| (c) | 改良2 | |
| (d) | 改良3(エラトステネスのふるい) | |
| (5) | 文字列は文字型の配列 | |
| private int 最大値1(int[] a) { int i; int MAX=a[0]; if (MAX<a[1]) MAX = a[1]; if (MAX<a[2]) MAX = a[2]; if (MAX<a[3]) MAX = a[3]; if (MAX<a[4]) MAX = a[4]; if (MAX<a[5]) MAX = a[5]; return MAX; } private void button1_Click(object sender, System.EventArgs e) { int[] a = new int[]{50,20,33,55,44,25}; int b = 最大値1(a); MessageBox.Show(b.ToString()); } |
| private int 最大値1(int[] a) { int i; int MAX=a[0]; for(i=1; i<a.Length; i++) if (MAX<a[i]) MAX = a[i]; return MAX; } private void button1_Click(object sender, System.EventArgs e) { int[] a = new int[]{50,20,33,55,44,25}; int b = 最大値1(a); MessageBox.Show(b.ToString()); } |
| 番号 | 以下をクリックすると同位置にジャンプします | |
| (1) | 配列の考え方 | |
| (2) | 最大値を求める | |
| (3) | 配列要素の逆転 | |
| (4) | 素数を求める | |
| (a) | 力任せ法 | |
| (b) | 改良1 | |
| (c) | 改良2 | |
| (d) | 改良3(エラトステネスのふるい) | |
| (5) | 文字列は文字型の配列 | |


| private int [] myArray = new int[10]; private void 配列の表示(ListBox A) { A.Items.Clear(); for(int i=0; i< myArray.Length; i++) A.Items.Add("a[" + i.ToString()+ "]=" +myArray[i]); } private void button1_Click(object sender, System.EventArgs e) { Random myRandom = new Random(); for (int i=0; i<10;i++) myArray[i]=myRandom.Next(0,100); 配列の表示(listBox1); } private void swap( ref int X , ref int Y) { int D = X; X = Y; Y = D; } private void 配列要素の逆転(ref int[] a) { int n=a.Length; for (int i = 0; i < n / 2; i++) swap( ref a[i], ref a[n-i-1]); } private void button2_Click(object sender, System.EventArgs e) { 配列要素の逆転(ref myArray); 配列の表示(listBox2); } |
| 番号 | 以下をクリックすると同位置にジャンプします | |
| (1) | 配列の考え方 | |
| (2) | 最大値を求める | |
| (3) | 配列要素の逆転 | |
| (4) | 素数を求める | |
| (a) | 力任せ法 | |
| (b) | 改良1 | |
| (c) | 改良2 | |
| (d) | 改良3(エラトステネスのふるい) | |
| (5) | 文字列は文字型の配列 | |
| private long 素数計算1() //力まかせ法 { int i,n; long 計算数 =0; 素数の数=0; for(n = 2; n <=1000; n++) { for (i = 2; i<n; i++) { 計算数++; // 計算回数のカウント if ((n % i) == 0) break; // 余りが0であれば割り切れた } if (n == i)素数[素数の数++] = n; // 最後まで割り切れなければ } // 素数とみなす return 計算数; } private void 表示(Label label, ListBox list,long X) { int i; label.Text="割り算回数=" + X.ToString("#,##0"); list.Items.Clear(); for(i=0; i<素数の数; i++) list.Items.Add(素数[i].ToString("#,##0")); } private void button1_Click(object sender, System.EventArgs e) { 表示(label1, listBox1,素数計算1()); } |
| 番号 | 以下をクリックすると同位置にジャンプします | |
| (1) | 配列の考え方 | |
| (2) | 最大値を求める | |
| (3) | 配列要素の逆転 | |
| (4) | 素数を求める | |
| (a) | 力任せ法 | |
| (b) | 改良1 | |
| (c) | 改良2 | |
| (d) | 改良3(エラトステネスのふるい) | |
| (5) | 文字列は文字型の配列 | |
| private long 素数計算2() //改良1 { int i,n; long 計算数 =0; //計算回数 素数の数=0; 素数[素数の数++] = 2; 素数[素数の数++] = 3; for(n = 5; n <=1000; n += 2) { for (i = 1; i<素数の数; i++) { 計算数++; // 計算回数のカウント if ((n % 素数[i]) == 0) break; // 余りが0であれば割り切れた } if (素数の数 == i)素数[素数の数++] = n; // 最後まで割り切れなければ } // 素数とみなす return 計算数; } private void button2_Click(object sender, System.EventArgs e) { 表示(label2, listBox1,素数計算2()); } |
| 番号 | 以下をクリックすると同位置にジャンプします | |
| (1) | 配列の考え方 | |
| (2) | 最大値を求める | |
| (3) | 配列要素の逆転 | |
| (4) | 素数を求める | |
| (a) | 力任せ法 | |
| (b) | 改良1 | |
| (c) | 改良2 | |
| (d) | 改良3(エラトステネスのふるい) | |
| (5) | 文字列は文字型の配列 | |
| 2×50 | |
割り切れる数の すべてが この範囲内に入る。 |
Nの平方根以下の素数で 割り切れなければ, 素数として判別してよい。 |
|
| 4×25 | ||||
| 5×20 | ||||
| 10×10 | ||||
| 20× 5 | ||||
| 25× 4 | ||||
| 50× 2 |

| private long 素数計算3() //改良2 { int i,n; long 計算数 =0; //計算回数 素数の数=0; 素数[素数の数++] = 2; 素数[素数の数++] = 3; for(n = 5; n <=1000; n += 2) { bool flag = true; for (i = 1; 素数[i]*素数[i] <=n; i++) { 計算数++; // 計算回数のカウント if ((n % 素数[i]) == 0) { flag=false; break; } // 余りが0であれば割り切れた } if (flag) 素数[素数の数++] = n; // 最後まで割り切れなければ } // 素数とみなす return 計算数; } private void button3_Click(object sender, System.EventArgs e) { 表示(label3, listBox1,素数計算3()); } |
| 番号 | 以下をクリックすると同位置にジャンプします | |
| (1) | 配列の考え方 | |
| (2) | 最大値を求める | |
| (3) | 配列要素の逆転 | |
| (4) | 素数を求める | |
| (a) | 力任せ法 | |
| (b) | 改良1 | |
| (c) | 改良2 | |
| (d) | 改良3(エラトステネスのふるい) | |
| (5) | 文字列は文字型の配列 | |

| private long 素数計算4() //エラトステネスのふるい(sieve
of Eratosthenes) { int i,j; for(i=2; i<=1000;i++) ふるい[i]=i; for(i=2; i<=1000;i++) if(ふるい[i] != 0) for( j = 2*i; j<=1000; j+=i) ふるい[j]=0; 素数の数=0; for(i=2; i<=1000;i++)if(ふるい[i] !=0) 素数[素数の数++]=ふるい[i]; return 0; } private void button4_Click(object sender, System.EventArgs e) { 表示(label4, listBox1,素数計算4()); } |
| 番号 | 以下をクリックすると同位置にジャンプします | |
| (1) | 配列の考え方 | |
| (2) | 最大値を求める | |
| (3) | 配列要素の逆転 | |
| (4) | 素数を求める | |
| (a) | 力任せ法 | |
| (b) | 改良1 | |
| (c) | 改良2 | |
| (d) | 改良3(エラトステネスのふるい) | |
| (5) | 文字列は文字型の配列 | |
| 番号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
| 曜日 | 日 | 月 | 火 | 水 | 木 | 金 | 土 |
| // ツェラー(Zeller)の公式 private int WeekDay(int Y, int M, int D) { int YY=Y; int MM=M; if (M<3){YY=Y-1; MM=M+12;} return (YY +(YY/4)-(YY/100)+(YY/400)+(13*MM + 8)/5+D) % 7; } private void button1_Click(object sender, System.EventArgs e) { int Y=int.Parse(textBox1.Text); int M=int.Parse(textBox2.Text); int D=int.Parse(textBox3.Text); int R=WeekDay(Y,M,D); string X="日月火水木金土"; label4.Text = X[R]+"曜日" } |
| 番号 | 以下をクリックすると同位置にジャンプします | |
| (1) | 配列の考え方 | |
| (2) | 最大値を求める | |
| (3) | 配列要素の逆転 | |
| (4) | 素数を求める | |
| (a) | 力任せ法 | |
| (b) | 改良1 | |
| (c) | 改良2 | |
| (d) | 改良3(エラトステネスのふるい) | |
| (5) | 文字列は文字型の配列 | |