บทที่ 6 ตัวแปรอาร์เรย์ (Array of Variable) ตัวแปรอาร์เรย์ 1 มิติ ตัวแปรอาร์เรย์ 2 มิติ ตัวแปรอาร์เรย์ 3 มิติ
ตัวแปรอาร์เรย์ 1 มิติ (Array of Variable) การประกาศตัวแปรแบบอาร์เรย์ ชนิดตัวแปร ชื่อตัวแปร[จำนวนสมาชิก] การกำหนดค่าตัวแปรอาร์เรย์ int data[5]={5, 3, 7, 1, 6}; float a[ ]={1.3, 2.6, 10}; char p[5]={‘a’, ‘b’, ‘d’, ‘e’, ‘t’}; int b[ ]={-20, 10, 5, 6, 4}; int M[ ]={9, 0, 7}; <--> int M[3]={9, 0, 7};
ตัวอย่างเปรียบเทียบการใช้ตัวแปรทั่วไป กับตัวแปรอาร์เรย์ 1 มิติ ตัวอย่างเปรียบเทียบการใช้ตัวแปรทั่วไป กับตัวแปรอาร์เรย์ 1 มิติ #include <stdio.h> void main(void) { int a0, a1, a2; printf("\nPlease enter data a0"); scanf("%d", &a0); printf("\nPlease enter data a1"); scanf("%d", &a1); printf("\nPlease enter data a2"); scanf("%d", &a2); printf("a0 = %d\n", a0); printf("a0 = %d\n", a1); printf("a0 = %d\n", a2); } /* ตัวอย่าง การใช้ตัวแปรทั่วไป */ a0 a1 a2 1 2 a #include<stdio.h> void main(void) { int a[3], b, i; for(b=0;b<3; b++) { printf("\nPlease enter data a[%d]",b); scanf("%d", &a[b]); } for(i=0; i<3; i++) printf("a[%d] = %d\n", i, a[i]); /* ตัวอย่าง การใช้ตัวแปรอาร์เรย์ 1 มิติ */ a0 a1 a2
คำถามสนุกๆ คำต่อไปนี้คำใดสามารถนำมาสร้างเป็นตัวแปร array ได้ รายชื่อ ขั้นบันได คอมพิวเตอร์ ถ้วยรางวัล เกรด จำนวนขวดน้ำ ห้องพักในโรงแรม หลอดไฟในห้องเรียน รายชื่อ เช่น Somkeit เป็นตัวอักษร 7 ตัว char char char S o m k e i t char char char char Char name[7]=‘Somkeit’;
โปรแกรมหาผลรวมของตัวเลขจำนวนเต็ม data0 data1 data2 data3 data4 #include <stdio.h> void main(void) { int data[5], sum; printf(“Enter data 0: ”); scanf(“%d”, &data[0]); printf(“Enter data 1: ”); scanf(“%d”, &data[1]); printf(“Enter data 2: ”); scanf(“%d”, &data[2]); printf(“Enter data 3: ”); scanf(“%d”, &data[3]); printf(“Enter data 4: ”); scanf(“%d”, &data[4]); sum = data[0]+data[1]+data[2]+data[3]+data[4]; printf(“Summation is %d”, sum); } 1 2 3 4 data
โปรแกรมบวกเมทริกซ์ { int A[5], B[5], C[5], y; clrscr( ); #include <stdio.h> void main(void) { int A[5], B[5], C[5], y; clrscr( ); printf(“Matrix A\n”); for(y=0; y<5; y++) { printf(“Please enter value:”); scanf(“%d”, &A[y]); } printf(“Matrix B\n”); scanf(“%d”, &B[y]); } /* C = A+B */ printf(“Calculating matrix\n”); for(y=0; y<5; y++) C[y] = A[y] + B[y]; printf(“ C = A + B\n”); printf(“%d %d %d\n”, C[y], A[y], B[y]); A B C 1 1 1 2 2 2 3 3 3 4 4 4
โปรแกรมคำนวณหาค่าเฉลี่ย #include <conio.h> #include <stdio.h> void main(void) { int value[5], a, sum=0; float average; clrscr(); for(a=0; a<5; a++) printf(“Input value[%d] : ”,a); scanf(“%d”, &value[a]); } sum = sum + value[a]; average = sum/5.0; printf(“Summation : %d\n”, sum); printf(“Average : %.2f”, average); โปรแกรมคำนวณหาค่าเฉลี่ย
โปรแกรมเรียงตัวเลข จากมากไปหาน้อย #include <stdio.h> #include <conio.h> void main(void) { int data[3]={70, 50, 35};int m, t, tmp; clrscr(); printf(“Before sort\n”); for(m=0; m<3; m++) printf(“%3d”,data[m]); printf(“\nBegins sort data”); { for(t=m+1; t<3; t++) { if(data[m] > data[t]) { tmp = data[m]; data[m] = data[t]; data[t] = tmp; } } } printf(“After sorted data\n”); printf(“%3d\n”, data[m]); }
ตัวแปรอาร์เรย์ 2 มิติ (Array of Variable) อาร์เรย์ 2 มิติ ลักษณะคล้ายกับเมทริกซ์ 2 มิติ มีรูปแบบดังนี้ การกำหนดตัวแปรแบบอาร์เรย์ 2 มิติ ชนิดตัวแปร ชื่อตัวแปร[จำนวนสมาชิก][จำนวนสมาชิก] การกำหนดค่าให้ตัวแปรอาร์เรย์ 2 มิติ int data[3][2] = {{1,2}, {6,7}, {9, 10}}; int data[ ][ ] = {{1,2}, {6,7}, {9, 10}};
โปรแกรมบวกเมตริกซ์ขนาด 2 x 2 #include <conio.h> #include <stdio.h> void main(void) { int a[2][2], b[2][2], c[2][2], m, n; clrscr(); printf(“Input metrix A\n”); for(m=0; m<2; m++) { for(n=0; n<2; n++) { printf(“a[%d][%d] : “, m, n); scanf(“%d”, &a[m][n]); } โปรแกรมบวกเมตริกซ์ขนาด 2 x 2
printf(“Input metrix B\n”); for(m=0; m<2; m++) { for(n=0; n<2; n++) { printf(“b[%d][%d] : “, m, n); scanf(“%d”, &b[m][n]); } { for(n=0; n<2; n++) c[m][n] = a[m][n] + b[m][n];
printf(“%3d”, c[m][n]); printf(“\n”); } printf(“\nResult : \n”); for(m=0; m<2; m++) { for(n=0; n<2; n++) printf(“%3d”, c[m][n]); printf(“\n”); }
ตัวแปรอาร์เรย์ 3 มิติ (Array of Variable) การกำหนดตัวแปรแบบอาร์เรย์ 3 มิติ ชนิดตัวแปร ชื่อตัวแปร[จำนวนสมาชิก][จำนวนสมาชิก][จำนวนสมาชิก];
ตัวแปรอาร์เรย์ 3 มิติ (Array of Variable) การกำหนดค่าให้ตัวแปรอาร์เรย์ 3 มิติ int data[2][3][2] = {{{1,1},{2,2},{3,3}},{{4,4},{5,5},{6,6}}}; ในกรณีที่ไม่ต้องใส่ขนาดของมิติ int data[ ][ ] = {{{1,1},{2,2},{3,3}},{{4,4},{5,5},{6,6},{7,7}}}; int data[2][3][1] = {{{1},{2},{3}},{{4},{5},{6}}};
ตัวอย่างที่ 6.7 โปรแกรมบวกเมตริกซ์ขนาด 2x2 จำนวน 3 เมตริกซ์ #include <conio.h> #include <stdio.h> void main(void) { int data[3][2][2], c[2][2], m, n,k; clrscr(); for(m=0;m<2;m++) { for(n=0;n<2;n++) c[m][n]=0; }
for(k=0;k<3;k++) { printf(“Input metrix no. = %d\n”,k+1); for(m=0; m<2; m++) { for(n=0; n<2; n++) { printf(“data[%d][%d][%d] : “,k, m, n); scanf(“%d”, &data[k][m][n]); }
c[m][n] = data[k][m][n] + c[m][n]; } } printf(“\nResult : \n”); for(k=0;k<3;k++) { for(m=0; m<2; m++) { for(n=0; n<2; n++) c[m][n] = data[k][m][n] + c[m][n]; } } printf(“\nResult : \n”); for(m=0; m<2; m++) { for(n=0; n<2; n++) printf(“%3d”, c[m][n]); printf(“\n”); } /* for */ } /* main */