Transcript Array

ข้ อมูลชนิดอาร์ เรย์



ประเภทของข้อมูลที่ผา่ นมาส่ วนใหญ่ในตอนต้นๆจะเป็ นข้อมูลเดี่ยว โดยตัวแปรหนึ่ง
ตัวสามารถเก็บข้อมูลได้หนึ่งตัว ถ้าหากต้องการเก็บข้อมูลหลายตัวจะต้องประกาศตัว
แปรหลายตัว
ในภาษาซี ถ้าหากต้องการเก็บข้อมูลเป็ นกลุ่มจะต้องใช้ตวั แปรประเภท อาร์ เรย์ (Array)
อาร์ เรย์ X
Index
X[0]
X[1]
X[2]
X[3]
X[4]
ข้อมูล
18
20
30
11
15
อาร์ เรย์ (Array) : ประกอบด้วยข้อมูลหลายๆตัวรวมกันเป็ นกลุ่ม ข้อมูลแต่ละตัวจะ
เรี ยกว่า Element หรื อ Cell และในการอ้างถึงข้อมูลแต่ละ Cell จะใช้ index เป็ นตัวชี้
1
การประกาศตัวแปรอาร์ เรย์

รู ปแบบของการประกาศอาร์เรย์ คือ
type var_name[size]
หากโปรแกรมมีการประกาศตัวแปรอาร์เรย์เอาไว้ เราสามารถนาตัวแปรนี้มา
ใช้ได้เหมือนกับตัวแปรทัว่ ไป เช่น
# include “stdio.h”
# include “stdio.h”
main( ){
main( ){
char hotdog[20]; float somtum[50];
int x[5];
hotdog[19] = ‘A’;
somtum[0] = 25.5;
x[2] = 40;
somtum[1] = 10.5;
printf(“Array x[2] is %d “,x[2]);
somtum[3] = somtum[0]+somtum[1];
}
printf(“hotdog = %c \n“,hotdog[19]);
printf(“somtum = %f \n”,somtum[3]);
}

2
ตัวอย่ างการใช้ อาร์ เรย์
โปรแกรมพิเศษ
#include “stdio.h”
main( ){
int i , lipton[6];
for (i =0 ; i <= 5 ; i++) {
lipton[i] = i ;
}
for (i =0 ; i <= 5 ; i++) {
printf(“%d\n”,lipton[i]);
}
}
โปรแกรมที่ 7.1
#include “stdio.h”
int x;
int A[20];
main( ){
for(x=1;x<=10;x++){
printf(“Input number %d = “,x);
scanf(“%d”,&A[x]);
}
for(x=1;x<=10;x++)
printf(“%d\n”,A[x]);
}
3
การกาหนดค่ าเริ่มต้ นให้ กบั ตัวแปรอาร์ เรย์


การการประกาศตัวแปรอาร์เรย์เราสามารถที่จะกาหนดค่าเริ่ มต้นให้กบั ตัวแปรอาร์เรย์ได้
โดยใช้รูปแบบดังต่อไปนี้
type var_name[size] = {value-list}
เช่น ถ้าต้องการกาหนดค่าตัวเลขจานวนเต็มให้กบั ตัวแปรอาร์เรย์สามารถทาได้ดงั นี้



int hotdog[5] = {1,4,9,16,25}; หรื อ char somtum[3] = {‘A’,’B’,’C’};
ถ้าเรากาหนดให้อาร์ เรย์เก็บข้อมูล String สามารถทาได้เช่น char ss[5] = “ABCD”;
 จะเห็นว่า ss ถูกประกาศให้เก็บข้อมูล 5 ตาแหน่ งแต่จริ งๆแล้วเราสามารถเก็บข้อมูลที่เป็ น
String ได้เพียงแค่ 4 ตาแหน่งเท่านั้น โดยที่ตาแหน่งสุ ดท้ายของอาร์ เรย์จะต้องเก็บค่า \0
เราอาจไม่ระบุขนาดของอาร์ เรย์กไ็ ด้ในการประกาศ แต่สามารถกระทาได้พร้อมกับการ
กาหนดค่าเริ่ มต้นเท่านั้น เช่น int hotdog[ ] = {1,4,9,16,25}; หรื อ char ss[ ] = “Computer”;
4
ตัวอย่ างการใช้ อาร์ เรย์
โปรแกรมที่ 7.2
# include “stdio.h”
main( ){
int sample[10] , i;
float avg;
for(i = 0;i<10;i++){
printf(“Enter Number %d : “,i);
scanf(“%d”,&sample[i]);
}
avg = 0;
for(i = 0;i<10;i++){
avg = avg + sample[i];
}
printf(“The average is %d \n”,avg/10);
}
โปรแกรมที่ 7.5
# include “stdio.h”
main( ){
int a1[10] , a2[10] , i;
for (i=0;i<10;i++){
a1[i] = i;
}
for (i=0;i<10;i++){
a2[i] = a1[i];
}
for (i=0;i<10;i++){
printf(“%d “,a2[i]);
}
}
5
อาร์ เรย์ หลายมิติ


ในการเขียนโปรแกรมภาษาซีสามารถสร้างตัวแปรอาร์เรย์แบบหลายมิติได้ เช่น
อาร์เรย์แบบ 2 มิติ อาร์เรย์แบบ 3 มิติ เป็ นต้น
อาร์เรย์ 2 มิติ

การประกาศอาร์เรย์ 2 มิติจะใช้ดชั นี 2 ตัว เพื่อระบุจานวนสมาชิกในแต่ละหลักและแถว
type array-name[row][column]

เช่น int AB[2][3]; หมายความว่าตัวแปร AB จะมีสมาชิกทั้งหมด 6 ตัว (2 x 3)
หลักที่ 0 หลักที่ 1
หลักที่ 2
AB[0][0] จะมีค่าเท่ากับ 4
แถวที่ 0
4
3
7
AB[1][2] จะมีค่าเท่ากับ 9
แถวที่ 1
1
2
9
AB[0][1] จะมีค่าเท่ากับ 3
6
อาร์ เรย์ 2 มิติ

เราสามารถกาหนดค่าเริ่ มต้นให้กบั ตัวแปรอาร์เรย์แบบ 2 มิติได้ดงั นี้
int sqr[3][3] = { 1 , 2 , 3
4,5,6
7 , 8 , 9 };
sqr[0][1] จะเก็บค่า 2
sqr[0][2] จะเก็บค่า 3
int sqr[ ][3] = { 1 , 2 , 3
4,5,6
7 , 8 , 9 };
หรื อจะไม่กาหนดขนาดให้กบั อาร์ เรย์กไ็ ด้
int sqr[3][3] = { {1,2,3},{4,5,6},{7,8,9} };
sqr[0][1] จะเก็บค่า 2
sqr[0][2] จะเก็บค่า 3
7
ตัวอย่ างการใช้ อาร์ เรย์ 2 มิติ
โปรแกรมที่ 7.16
# include “stdio.h”
main( ){
int twod[4][5];
int i , j ;
for(i = 0 ; i<4 ; i++){
for(j = 0 ; j<5 ; j++){
twod[i][j] = i * j ;
}
}
for(i = 0 ; i<4 ; i++){
for(j = 0 ; j<5 ; j++){
printf(“%d “,twod[i][j]) ;
}
printf(“\n”);
}
}
โปรแกรมที่ 7.19
#include “stdio.h”
char text[ ][80] = {
“When”,”in”,”the”,course”,
“Of”,”human”,”events”,””
};
main( ) {
int i , j ;
for(i = 0 ; i<1; i++){
for(j = 0 ; j<80 ; j++){
printf(“%c “,text[i][j]) ;
}
printf(“ ”);
}
}
8
ตัวอย่ างการใช้ อาร์ เรย์ 2 มิติ
โปรแกรมที่ 7.15
# include “stdio.h”
void printArray(int [ ][3]);
main( ){
int array1[2][3] = { {1,2,3},{4,5,6} };
int array2[2][3] = {1,2,3,4,5};
int array3[2][3] = { {1,2} , {4} };
printf(“Values in array1 by row are:\n”);
printArray(array1);
printf(“Values in array2 by row are:\n”);
printArray(array2);
printf(“Values in array3 by row are:\n”);
printArray(array3);
}
โปรแกรมที่ 7.15 (ต่อ)
void printArray(int a[ ][3]){
int i , j ;
for(i = 0 ; i<1 ; i++){
for(j = 0 ; j<2 ; j++){
printf(“%d “,a[i][j]);
}
printf(“\n”);
}
}
ผลลัพธ์
Values in array1 by row are:
123
456
Values in array2 by row are:
123
450
Values in array3 by row are:
120
400
9
อาร์ เรย์ 3 มิติ

อาร์เรย์ 3 มิติ

การประกาศอาร์เรย์ 3 มิติจะใช้ดชั นี 3 ตัว เพื่อระบุจานวนสมาชิก
type array-name[dimention][row][column]

เช่น int AB[2][3][2]; หมายความว่าตัวแปร AB จะมีสมาชิกทั้งหมด 12 ตัว (2 x 3 x 2)
ชั้นที่ 1
ชั้นที่ 0
แถวที่ 0
แถวที่ 1
หลักที่ 0
หลักที่ 0
4
1
หลักที่ 1
หลักที่ 1
3
2
หลักที่ 2
หลักที่ 2
7
9
AB[0][0][0] จะมีค่าเท่ากับ 4
AB[1][2][2] จะมีค่าเท่ากับ 3
AB[0][1][1] จะมีค่าเท่ากับ 2
10
ตัวอย่ างการใช้ อาร์ เรย์ 3 มิติ
โปรแกรมพิเศษ
# include “stdio.h”
main( ){
int twod[4][5][3];
int i , j , k ;
for(i = 0 ; i<4 ; i++){
for(j = 0 ; j<5 ; j++){
for(k = 0 ; k<3 ; k++){
twod[i][j][k] = i * j ;
}
}
}
โปรแกรมพิเศษ (ต่อ)
for(i = 0 ; i<4 ; i++){
for(j = 0 ; j<5 ; j++){
for(k = 0 ; k<3 ; k++){
printf(“%d ”,twod[i][j][k]);
}
printf(“\n”);
}
printf(“\n\n”);
}
}
11