Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Array
สาขาวชาวทยาการคอมพวเตอร คณะวทยาศาสตร มหาวทยาลยแมโจ
โดย อาจารยภานวฒน เมฆะ
Introduction
-ตวแปร (Array)
-การประกาศตวแปรอารเรย
-ประเภทของอารเรย
-อารเรย 1 มต (One Dimention)
-อารเรย 2 มต (Two Dimention)
ตวแปร (Array)
- ตวแปรอารเรย หรอชดตวแปรชด เปนโครงสรางขอมล
(Data Structure)
- ท าหนาทในการจองเนอทในหนวยความจ า ตามทระบขนาด
หนวยความจ าในตวแปรอารเรย
- เพอเกบขอมลในแตละชอง ของขนาดหนวยความจ า
-โดยมตวระบต าแหนง (Subscript) เปนตวบงชต าแหนงของ
ขอมลในอารเรย ในการรบขอมลและแสดงผลขอมล
การประกาศตวแปรอารเรย
ประเภทของอารเรย
- อารเรย 1 มต (One Dimention)
- อารเรย 2 มต (Two Dimention)
- อารเรย 3 มต (Three Dimention)
อารเรย 1 มต (One Dimention)
อารเรย 1 มต (One Dimention)
ตวอยาง
บรรทดแรก เปนการประกาศชนดตวแปร num
เปนตวแปรชดทมจ านวน 30 สมาชก
เกบคาเปนจ านวนเตม
บรรทดทสอง เปนการก าหนดคาใหสมาชก
ของ num ทมตวช (index) 22 เกบคา 187
int num[30];
num[22] = 187;
โจทย โคด array 1 มต
ใหสราง โปรแกรมเกบขอมลคะแนนนกเรยน3 คน โดยใช array เปนตวเกบขอมล และสามารถเรยกดขอมลนกเรยนทง 3 คนทไดท าการกรอกไป
โจทยจงแสดงการรบคาคะแนนนกศกษา 5 คน เกบไว
ในอารเรย ท าการค านวณหา ผลรวมคะแนนทงหมดและค านวณหา คาเฉลยของคะแนน พรอมแสดงผลขอมลจากอารเรยทงหมดทไดท าการรบ คามาทง 5 คน
อารเรย 2 มต (Two Dimention)
อารเรย 2 มต (Two Dimention)
ตย. การก าหนดลกษณะของอารเรย 2 มต
int table [5] [4];
โดยตวเลขตวแรกจะบอกจ านวนของแถว และตวเลขตวท 2 จะบอกจ านวนของคอลมนในแตละแถว
การก าหนดคาเรมตน
จะท าไดหลงจากทไดท าการประกาศและก าหนดลกษณะของอารเรยแลวในแตละ Element ของอารเรยอาเรยจะยงไมมคาบรรจอย ในการก าหนดคาเรมตนของ Element แตละตวสามารถท าไดหลงจากการประกาศ
การก าหนดคาใหอาเรย ม 2 รปแบบ
ตวอยาง: สมมตวาตองการใช 20 คา
- การก าหนดคาเรมตนแบบทางเดยวจะเปนดงน
int table [5] [4]; ={ 0, 1, 2, 3, 10, 11, 12, 13, 20, 21, 22, 23, 30, 31, 32, 33, 40, 41, 42, 43 };
การก าหนดคาใหอาเรย ม 2 รปแบบ
ตวอยาง: สมมตวาตองการใช 20 คา
- การก าหนดคาเรมตนแบบทางเดยวจะเปนดงน
int table [5] [4]; ={ 0, 1, 2, 3, 10, 11, 12, 13, 20, 21, 22, 23, 30, 31, 32, 33, 40, 41, 42, 43
};
- การก าหนดคาเรมตนแบบจดกลม จะเปนดงน
int table [5] [4];{
{ 0, 1, 2, 3 },{10, 11, 12, 13 },{20, 21, 22, 23 },{30, 31, 32, 33 },{40, 41, 42, 43 }
}; /* table */
แตเมอใดทผใชไมตองการจะก าหนดขนาดของมตใดมตหนง ผใชกสามารถท าการก าหนดคาเรมตนไดดงน
int table [] [4] ={
{ 0, 1, 2, 3 },{10, 11, 12, 13 },{20, 21, 22, 23 },
{30, 31, 32, 33 },{40, 41, 42, 43 }
}; /* table */
และถาตองการก าหนดคาเรมตนทงอารเรยใหเปน 0 ทงหมด ผใชสามารถท าไดดงน
int table [5] [4] = {0};
การรบคา เปนการใชฟงกชน scanf มารบคาใสลงในแตละ Element ของอารเรย 2 มตนน จะตองใชลป 2 ลปซอนกน สมมตวาอารเรยมขนาด n m ลปแรกจะเปนของแถว สวนลปท 2 จะเปนของคอลมนสามารถท าไดดงน
for (row = 0; row < 5; row++)for (column = 0; column < 4; column++)
scanf (“%d”,&table[row][column]);
การแสดงคา เปนการน าคาในแตละ Element ออกมาแสดง โดยใชลป for ซอนกน 2 ลปเขามาชวย โดยลปแรกจะเปนตวควบคมการพมพของแถว และลปท 2 จะเปนตวควบคมการพมพของคอลมน เมอจะพมพอารเรย table ออกมาเปนรปแบบตาราง จะตองท าการขนบรรทดใหมทกครง เมอพมพแตละแถวจบ ซงแสดงดงตวอยางดานลาง
for (row = 0; row < 5; row++) {for (coluun =0; column < 4; column++){
printf(“%8d”, tale[row][column]);}
printf(“\n”);}
การประกาศและการก าหนดลกษณะของอาร เรย 3 มต
อารเรยหลายมตจะเหมอนกบอารเรย 1 มต ในการประกาศและก าหนดลกษณะกอนการใช ซงการประกาศและก าหนดลกษณะนนจะเปนตวบอกใหคอมไพเลอรรวา อารเรยทสรางมชออะไร มชนดขอมลของแตละ Element เปนอะไร และมขนาดของแตละมตเปนเทาไร สามารถท าการประกาศและก าหนดลกษณะไดดงน
int table [3] [5][4];
การก าหนดคาเรมตน หลงจากทไดท าการประกาศและก าหนดลกษณะของอารเรยแลวในแตละ Element ของอารเรยจะยงไมมคาบรรจอย ในการก าหนดคาเรมตนของ Element แตละตวสามารถท าไ ดห ล ง จ า ก ท ก า รป ระ ก า ศ อ า ร เ ร ย โ ด ย ก า ร ก า หนด ค า เ ร ม ตน ส า ม า ร ถท า ไ ด ด ง น
int table [3][5][4];
int table [3][5][4];
{{ /* แผน 0 */
{ 0, 1, 2, 3}, /* แถว 0 */{10, 11, 12 13}, /* แถว 1 */{20, 21, 22, 23}, /* แถว 2 */{30, 31, 32, 33}, /* แถว 3 */{40, 41, 42, 43} /* แถว 4 */
},{ /* แผน 0 */
{100, 101, 102, 103}, /* แถว 0 */{110, 111, 112, 113}, /* แถว 1 */{120, 121, 122, 123}, /* แถว 2 */{130, 131, 132, 133}, /* แถว 3 */{140, 141, 142, 143} /* แถว 4 */
},{ /* แผน 0 */
{200, 201, 202, 203}, /* แถว 0 */{210, 211, 212, 213}, /* แถว 1 */{220, 221, 222, 223}, /* แถว 2 */{230, 231, 232, 233}, /* แถว 3 */{240, 241, 242, 243} /* แถว 4 */
}}; /* table */
• และถาตองการก าหนดคาเรมตนทงอารเรยใหเปน 0 ทงหมด ผใชสามารถท าไดดงนint table [3][5][4] = {0};
อารเรย 2 มต (Two Dimention)
โจทย ใหสรางโปรแกรมรบขอมลการท างานใน
แตละวนของชายคนหนง โดยทใหรบคาวนท
ท างานและเงนรายวนทได มา 2 วน แลวกท า
การแสดงวาออกมาวาวนทเทาไรและไดรบเงน
รายวนเทาไร (โดยท าการเขยนโดยการใช Array
2 มต)
อารเรย 3 มต (Three Dimention)
อารเรย 3 มต (Three Dimention)
TEST_LAB
เขยนโปรแกรมถาม user วาตองการปอนตวเลขทงหมดกรอบ เสรจแลวใหรบคาตามจ านวนรอบท user ระบ
และน าขอมลนนไปเกบใน array เสรจแลวแสดงผลลพธขอมลใน array นนๆ
การบาน อาเรย 1 มตหาคาสงสดของตวเลข 20 ตว พรอมบอก
ต าแหนงทเกบค าสงสด
ขอถามอกนดๆๆๆ กอนกลบ
เขยนแบบน ถก หรอ ผด
การบานจงหาคา2 3
4 9
5 5
6 6
End