ตัวแปรแบบแถวลำดับ Array

Download Report

Transcript ตัวแปรแบบแถวลำดับ Array

ตัวแปรแบบแถวลำดับ
Array
วัตถุประสงค ์
• เข ้าใจหลักการของตัวแปรแถวลาดับ
้
• สามารถเขียนโปรแกรมใชงานตั
วแปรแถว
ลาดับได ้อย่างถูกต ้อง
2
ตัวแปรแถวลำดับ (Array)
• ตัวแปรอาร์เรย์ คือ ตัวแปรทีส
่ ามารถเก็บ
ข ้อมูลได ้เป็ นชุด โดยสร ้างตัวแปรขึน
้ มา
เพียงตัวเดียว (ตัวแปร 1 ตัว จัดเก็บ
ตัวขอย่
างลได
1 ้หลายค่า) แต่ข ้อมูลนัน
้อมู
้ ต ้องเป็ น
ื่ SUM สาหรับเก็บข ้อมูลชนิด
ตัวชนิ
แปรอาร์
รย์ช
ดเดียเวกั
นอ
จSUM[0]
านวนเต็มขนาด
SUM[1] 5
128
-14
SUM[2]
SUM[3]
SUM[4]
32
208
-44
3
ตัวแปรแถวลำดับ (Array)
ตัวอย่าง 2
ื่ point สาหรับเก็บข ้อมูลชนิด
ตัวแปรอาร์เรย์ชอ
point[0]
point[1]
point[2]
point[3]
ตัวเลขทศนิ
ยมขนาด
4
-35.24
0.254
17.45
-0.6973
ตัวอย่าง 3
ื่ letter สาหรับเก็บข ้อมูลชนิด
ตัวแปรอาร์เรย์ชอ
letter[0]4
letter[1]
letter[2]
letter[3]
อักขระขนาด
'K'
'i'
'n'
'g'
4
7.1 ตัวแปรแถวลำดับ (Array)
ตัวแปรอาร ์เรย ์ 1 มิติ
num num num num num num num num num
[0] [1] [2] [3] [4] [5] [6] [7] [8]
num[9]
1
9
-1
23
ตัวแปรอาร ์เรย ์หลายมิติ
ตัวแปรอาร ์เรย ์ 2 มิต ิ
44
2
6
-9
22
ตัวแปรอาร ์เรย ์ 3 มิต ิ
5
7.1 ตัวแปรแถวลำดับ (Array)
ตัวแปรอาร ์เรย ์ 1 มิติ
่ บข ้อมูลได ้เพียงแถวเดียว
ตัวแปรอาร ์เรย ์ทีเก็
(ใช ้ลาดับในการอ ้างถึงข ้อมูล)
ตัวแปรอาร ์เรย ์ 2 มิติ
่ บข ้อมูลโดยใช ้
ตัวแปรอาร ์เรย ์ทีเก็
แถว(Row) และหลัก(Column) ในการอ ้างถึงข ้อมูล
ตัวแปรอาร ์เรย ์ 3 มิติ
่ บข ้อมูลลักษณะของลูกบาศก ์ โดยใช ้
ตัวแปรอาร ์เรย ์ทีเก็
แถว(Row) หลัก(Column) และลึก (Deep)
ในการอ ้างถึงข ้อมูล
6
7.2 อำร ์เรย ์ 1 มิต ิ
type
type
int
float
char
array-name[n];
่
เป็ นชนิ ดของตัวแปรทีจะสร
้างขึน้
ประกาศตัวแปรเป็ นชนิ ดจานวนเต็ม
ประกาศตัวแปรเป็ นชนิ ดทศนิ ยม
ประกาศตัวแปรเป็ นชนิ ดอักขระ
่
array-name เป็ นชือของตั
วแปรอาร ์เรย ์
n เป็ นขนาดของตัวแปรอาร ์เรย ์
7
7.2 อำร ์เรย ์ 1 มิต ิ (กำรกำหนดค่ำ
่ นให้อำร ์เรย ์)
เริมต้
type array-name[n]={value-1,value-2,…,value-n};
value-1, value-2, …, value-n
่ าการกาหนดให ้กับตัวแปรแถว
เป็ นข ้อมูลทีจะท
ลาดับ โดยจะต ้องเป็ นข ้อมูลชนิ ดเดียวกับ
่ าหนด
type ทีก
8
7.2 อำร ์เรย ์ 1 มิต ิ (กำรกำหนดค่ำ
่ นให้อำร ์เรย ์)
เริมต้
#include<stdio.h>
#include<conio.h>
int main()
{
int number[3] = {23, -186, 43};
float value_2[5]={0.98,43.213,3.47,52.08,-0.987};
char vowel[5] = {'a','e','i','o','u'};
char name[9] = {'E','n','g','i','n','e','e','r','\0'};
return 0;
}
9
7.2.2 กำรอ้ำงอิงข้อมู ลอำร ์เรย ์
int
year[5] = {2001,2542,1999,2000,2521};
year[0]
year[1]
year[2]
year[3]
year[4]
year[5]
200
1
254
2
199
9
200
0
printf("%d\n",year[0]);
2001
printf("%d\n",year[1]);
2542
printf("%d\n",year[2]);
1999
printf("%d\n",year[3]);
2000
printf("%d\n",year[4]);
2521
252
1
10
7.2.2 กำรอ้ำงอิงข้อมู ลอำร ์เรย ์)
#include<stdio.h>
#include<conio.h>
int main()
{
int year[5] = {2001,2542,1999,2000,2521};
1999
printf("%d\n",year[2]);
2521
printf("%d\n\n",year[4]);
year[0] = 2545;
2545
printf("%d\n",year[0]);
year[0]year[1]year[2]year[3]year[4
return 0;
200 254
199 200 252
year[5] 254
}
1
5
2
9
0
1
11
โปรแกรม ร ับค่ำอำยุ 20 คน
จงเขียนผังงานและโปรแกรมเพือ
่ เก็บ
้
อายุของผู ้ใชงานจ
านวน 20 คนโดยเก็บ
ข ้อมูลอายุในตัวแปรชนิดอาร์เรย์
• Output Analysis
ไม่ม ี
• Input Analysis
้
อายุทผ
ี่ ู ้ใชงานป้
อนเข ้ามา
12
โปรแกรม ร ับค่ำอำยุ 20 คน
• Process Analysis
สร ้างตัวแปรแถวลาดับขนาด 20 เพือ
่ เก็บ
ค่าอายุ
้
โปรแกรมวนรอบเพือ
่ รอรับค่าจากผู ้ใชงาน
• Variable Define
age[20]
เป็ นตัวแปรแถวลาดับชนิด
จานวนเต็มขนาด 20
้ บค่าอายุ
เพือ
่ ใชเก็
13
START
age[20],count
count = 0
count<2
0
True
age[count]
False
count++
END
14
โปรแกรม 7.1 ร ับค่ำอำยุ 20 คน
ึ ษาเขียนโปรแกรมเอง ใน Class
ให ้นักศก
15
7.3 ตัวแปรแถวลำดับ และ
ข้อควำม
char
subject[11] = {"C language"};
หรือ
subject[11] = {'C', ' ', 'l', 'a', 'n', 'g', 'u', 'a', 'g', 'e',
char
'\0'};
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
subject
char
C
l
a
n
g
u
a
g
e
\0
name[9] = {"Engineer"};
[0] [1] [2] [3] [4] [5] [6] [7] [8]
name
E
n
g
i
n
e
e
r
\0
16
7.3 ตัวแปรแถวลำดับ และ
ข้อควำม
#include<stdio.h>
#include<conio.h>
int main()
{
char sentence[22]="Welcome to my country";
char word[9]={'T','h','a','i','l','a','n','d','\0'};
char not_word[4]={'l','o','v','e'};
printf ("Message1 = %s\n",sentence);
printf ("Message2 = %s\n",word);
printf ("Message3 = %s\n",not_word);
return 0;
}
Message1 = Welcome to my country
Message2 = Thailand
Message3 = loveThailand
17
โจทย์
• เขียนโปรแกรม เพือ
่ เก็บข ้อมูลความสูงของ
้
ผู ้ใชงาน
จานวน 20 คน เมือ
่ ทาการเก็บข ้อมูล
ครบ 20 แล ้ว ให ้แสดงความสูงเฉลีย
่ ของ
้
ผู ้ใชงาน
• นาโปรแกรมเดิม มาปรับปรุงโดยหลังจาก
โปรแกรมเก็บข ้อมูลครบ 20 คนแล ้วให ้ทาการ
แสดงข ้อมูลความสูงทัง้ หมด
แก ้ไขให ้แสดงเฉพาะ ลาดับทีเ่ ป็ นเลขคู่
แก ้ไขให ้แสดงเฉพาะ ลาดับทีเ่ ป็ นเลขคี่
แก ้ไขให ้แสดงเฉพาะ ลาดับทีห
่ ารด ้วย 3 ลงตัว
7.4 อำร ์เรย ์ 2 มิตห
ิ รือมำกกว่ำ
type
array-name[n][m];
่
type
เป็ นชนิ ดของตัวแปรทีจะสร
้างขึน้
int
ประกาศตัวแปรเป็ นชนิ ดจานวนเต็ม
float ประกาศตัวแปรเป็ นชนิ ดทศนิ ยม
char ประกาศตัวแปรเป็ นชนิ ดอักขระ
่
array-name
เป็ นชือของตั
วแปรอาร ์เรย ์
n
เป็ นจานวนแถวของตัวแปรอาร ์เรย ์
m เป็ นจานวนคอลัมน์ของตัวแปร
อาร ์เรย ์
19
่ นให้
7.4.1 กำรกำหนดค่ำเริมต้
อำร ์เรย ์ 2 มิต ิ
type array-name[n][m]={
value-1-1,value-1-2,…,value-1-m,
value-2-1,value-2-2,…,value-2-m,
…,
value-n-1,value-n-2,…,value-n-m};
value-1-1, value-1-2, …, value-1-n,
…, …, value-n-m
เป็ นข ้อมูลทีจ
่ ะทาการกาหนดให ้กับตัวแปร
แถวลาดับ โดยจะต ้องเป็ นข ้อมูลชนิด
เดียวกับ type ทีก
่ าหนด
20
่ นให้
7.4.1 กำรกำหนดค่ำเริมต้
อำร ์เรย ์ 2 มิต ิ
int
int
num[3][4] = { 11, 12, 13, 14,
21, 22, 23, 24,
31, 32, 33, 34 };
num[3][4] = { 11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34 };
11 12 13 14
21 22 23 24
31 32 33 34
num[0][0]
11
num[0][1]
12
num[0][2]
num[1][0]
num[2][0]
13
num[0][3]
14
21
num[1][1]
22
num[1][2]
23
num[1][3]
24
31
num[2][1]
32
num[2][2]
33
num[2][3]
34
21
่ นให้
7.4.1 กำรกำหนดค่ำเริมต้
อำร ์เรย ์ 2 มิต ิ
float
matrix[2][4] = {
0.19, -0.01, -0.23, 4.44,
-4.44, 0.26, -0.09, -0.22
};
float
matrix[2][4] = { 0.19, -0.01, -0.23, 4.44, -4.44, 0.26, -0.09, -0.22 };
matrix[0][0]
matrix[0][1]
matrix[0][2]
matrix[0][3]
0.1
4.4
0.0
0.2
9
4
1
3
matrix[1][0]
matrix[1][1]
matrix[1][2]
matrix[1][3]
0.2
4.4
0.0
0.2
6
4
9
2
22
่ นให้
7.4.1 กำรกำหนดค่ำเริมต้
อำร ์เรย ์ 2 มิต ิ
char letter[2][4] = {
'G', 'o', 'o', 'D',
'T', 'i', 'm', 'E'};
char letter[2][4] = {'G', 'o', 'o', 'D', 'T', 'i', 'm', 'E'};
letter[0][0]
letter[0][1]
letter[0][2]
letter[0][3]
G
o
o
D
T
i
m
E
letter[1][0]
letter[1][1]
letter[1][2]
letter[1][3]
23
่ นให้
7.4.1 กำรกำหนดค่ำเริมต้
อำร ์เรย ์ 2 มิต ิ
char
str[2][10] = { "Computer",
"Engineer" };
char
str[2][10] = {"Computer", "Engineer" };
[0][8]
str[0]
C
o
m
p
u
t
e
r
\0
str[1]
E
n
g
i
n
e
e
r
\0
[1][8]
24
โปรแกรม 7.3 ร ับข้อมู ลและแสดง
ผลลัพธ ์แบบเมทริกซ ์
่ ับค่าจานวนเต็มในรูปแบบตารางโดยเก็บค่าไว ้ใน
จงเขียนโปรแกรมเพือร
ตัวแปร แถวลาดับ ขนาด 3  3 แล ้วแสดงผลตาราง
Enter numbers [0][0] : 1
Enter numbers [0][1] : 2
Enter numbers [0][2] : 3
Enter numbers [1][0] : 4
Enter numbers [1][1] : 5
Enter numbers [1][2] : 6
Enter numbers [2][0] : 7
Enter numbers [2][1] : 8
Enter numbers [2][2] : 9
***Matrix***
1 2 3
4 5 6
7 8 9
25
โปรแกรม 7.3 ร ับข้อมู ลและแสดง
ผลลัพธ ์แบบเมทริกซ ์
26
โปรแกรม 7.4 หำผลรวมในเมท
ริกซ ์
่ าหนดให ้ จงเขียน
จากตัวแปรแถวลาดับทีก
โปรแกรมหาผลรวมของจานวนในแต่ละหลัก
และผลรวมของจานวนในแต่ละแถว โดยเก็บ
ค่าผลรวมไว ้ในตัวแปร row[], column[]
int
num[3][4] = { 1, 2, 3, 4,
2, 3, 4, 5,
3, 4, 5, 6 };
27
28
โปรแกรม 7.4 หำผลรวมในเมท
ริกซ ์
*** Show Matrix ***
1 2 3 4
2 3 4 5
3 4 5 6
Sum of row[0] = 10
Sum of row[1] = 14
Sum of row[2] = 18
Sum of column[0] = 6
Sum of column[1] = 9
Sum of column[2] = 12
Sum of column[3] = 15
29
โปรแกรม 7.4 หำผลรวมในเมท
ริกซ ์
30
7.5 กำรสลับค่ำในอำร ์เรย ์
num[0] num[1] num[2] num[3] num[4] num[5] num[6] num[7] num[8] num[9]
num[10]
99 19
1
23
0 15 10 23
-9
26
num[0] num[1] num[2] num[3] num[4]
num[0]
num[5] num[6]
num[9]
num[7] num[8]
Temp num[9]
temp = num[0];
num[10]
num[0]
num[9];
-9 =19
1 23
num[9] = temp;
num[9] = num[0];
num[0] = num[9];
0 -9
9915 10-9
99 23
99
? 99
26
31
Break
่ ด
โปรแกรม 7.6 หำค่ำมำกทีสุ
จงเขียนโปรแกรมเพือ
่ รับจานวน 10 จานวน
เพือ
่ หาค่ามากทีส
่ ด
ุ ในจานวนทีร่ ับมา
โดยการย ้ายค่ามากทีส
่ ด
ุ ไปไว ้ Array ที่
ตาแหน่งสุดท ้าย
33
num[0]num[1]
num[2]num[3]
num[4]num[5]
num[6]num[7]num[8]num[9]
num[10]
0
19
1
23
99
15
10
23
-26
-9
num[10]
0
19
1
23
99
15
10
23
-26
-9
temp = num[1];
num[10]
0
1
19
temp = num[4];
num[1]=num[2];
23
99
15
num[4]=num[5];
num[2] = temp;
10
23
-26
-9
num[5] = temp;
num[10]
0
1
19
23
15
99
10
23
-26
-9
num[10]
0
1
19
23
15
10
23
-26
-9
99
34
่ ด
โปรแกรม 7.6 หำค่ำมำกทีสุ
#include<stdio.h>
#include<conio.h>
#define SIZE 10
int main()
{
int num[SIZE],temp,n;
for (n=0; n<SIZE; n++)
{
printf ("Enter num[%d] : ",n+1);
scanf
("%d",&num[n]);
}
35
่ ด
โปรแกรม 7.6 หำค่ำมำกทีสุ
for (n=0; n<SIZE-1; n++)
{
if (num[n]>num[n+1])
{
temp = num[n+1];
num[n+1] = num[n];
num[n] = temp;
}
}
printf ("The maximum number = %d",num[SIZE-1]);
return 0;
}
36
7.6 คำถำมท้ำยบท
1.
จงเขียนโปรแกรม เพือ
่ ทาการ
เรียงลาดับข ้อมูลภายใน อะเรย์ จากมาก
ไปน ้อย โดยกาหนดให ้ข ้อมูลในอะเรย์
int a[20] = {10,8,5,4,9,7,5,1,0,2,3,-1,เป็5,4,7,-1,0,44,100,5}
นดังนี้
37