Transcript ARRAY

Array คืออะไร? จำเป็ นแค่ ไหน?
1. Array คือ ตัวแปรที่เก็บข้ อมูลแบบเป็ นตำรำง
2. ควำมสำคัญของ Array ในบำงกรณีเรำต้ องเกี่ยวข้ องกับข้ อมูลแบบ
ตำรำงเช่ น ตำรำงบัญชี ตำรำงคะแนนสอบ ซึ่งตัวแปรธรรมดำไม่ สำมำรถจัดกำรได้
ลักษณะของตำรำง
ตารางมิติเดียว (1 Dimension)
คนที่
1
2
3
4
ตารางสองมิติ (2 Dimension)
รายรับของร้ านอาหารในคาเฟ่ ต์
คะแนนสอบ
8
7
10
9
เดือนที่
1
ร้ านที่
2
3
4
1
6700 5800 3504 8900
2
4350 5500 6700 4560
3
8010 6200 7450 9800
4
2500 3400 2800 2450
ตำรำงประกอบด้ วย
ตารางสองมิติ (2 Dimension)
ตารางมิติเดียว (1 Dimension)
คนที่
ชื่อของตำรำง
คะแนนสอบ
1
2
3
4
8
7
10
9
หมำยเลขสดมภ์
ร้ านที่
ข้ อมูลในตาราง
1
2
3
4
รายรับของร้ านอาหารในคาเฟ่ ต์
เดือนที่
1
2
4
6700 5800 3504 8900
4350 5500 6700 4560
8010 6200 7450 9800
2500 3400 2800 2450
หมำยเลขช่ อง
หมำยเลขแถว
3
ข้ อมูลในตาราง
(มีหลายค่า)
Array 1 มิติ
เทียบได้ กบั ตารางที่มีแถวเดียวหรื อ column เดียว (ตารางมิติเดียว)
ข้ อมูล 1 ช่องเรี ยกว่า 1 element
ชื่อของ Array
Score
100
Index 1
(หมายเลขช่อง)
85
64
2
92
3
81
4
Score หมายเลข 3 มีค่า 64
Score หมายเลข 1 มีค่า 100
เวลำเรำจะอ้ ำงถึงข้ อมูลใน Array 1 มิติ เรำจะต้ องบอก
ชื่อของ Array และหมำยเลขช่ องเช่ น score ช่ องที่ 1 มีค่ำ 100
5
ชนิดข้อมูล ชื่อตัวแปร[ขนาดของarray];
เช่น
int a[20];
//รับข้ อมูลชนิดตัวเลขจานวนเต็ม ได้ 20 ชุด
char c[15];
//รับข้ อมูลชนิดอักขระได้ 14 ตัว
float score[24]; //รับข้ อมูลชนิดตัวเลขจานวนจริง ได้ 24 ชุด
score[0] = 13;
//กาหนด element แรกมีคา่ 13
score[4] = 42; // กาหนด element สุดท้ ายมีคา่
42 score
random values เพราะยังไม่ มกี ารกาหนดค่ าให้
ใน
memory
-1068
13
score[0]
score[4]
22541
score[1]
18253
score[2]
-5673
score[3]
6570
42












#include<stdio.h>
void main()
{
int i;
int score[5];
score[0]=13;
score[4]=42;
for(i=0;i<5;i++)
{
printf("Score[%d] = %d\n",i,score[i]);
}
}
เขียนโปรแกรมดังตัวอย่างด้ านล่างนี ้
กำรรั บและแสดงค่ ำตัวเลข โดยใช้ Array 1 มิติ
{ int score[5];
scanf(“%d”,&score[0]);
scanf(“%d”,&score[1]);
scanf(“%d”,&score[2]);
scanf(“%d”,&score[3]);
scanf(“%d”,&score[4]);
printf(“%d ”,score[0]);
printf(“%d ”,score[1]);
printf(“%d ”,score[2]);
printf(“%d ”,score[3]);
printf(“%d ”,score[4]);
}
{
int score[5];
int i;
for(i=0;i<5;i++)
scanf(“%d”,&score[i]);
for(i=0;i<5;i++)
printf(“%d”,score[i]);
}
โจทย์ Array 1 มิติ
เขียนโปรแกรมรับตัวเลขจานวนเต็ม N จานวน
โดยให้ ผ้ ใู ช้ ป้อนจานวนตัวเลขที่ต้องการ
แล้ วแสดงผลรวมและค่าเฉลี่ยของตัวเลขชุดนัน้
(นาตัวอย่าง array2.cpp มาแก้ ไข แล้ วบันทึกไฟล์ชื่อ array3.cpp )
Array 2 มิติ
เทียบได้ กบั ตารางที่มีแถวมากกว่า 1 แถวและมีสดมภ์ (column) มากกว่า 1 สดมภ์
MyNumber
11 9
45 12 13
76 90 34 4
1
ชื่อ Array
1
2 Row No.
54 74 12 11 7
3
MyNumber แถว 2
สดมภ์
5 มีค่า 1
1
5
MyNumber แถว 3
สดมภ์
4 มีค่า 11
2
3
4
Column No.
เวลำเรำจะอ้ ำงถึงข้ อมูลใน Array 2 มิตเิ รำจะต้ องบอก
ชื่อของ Array, หมำยเลขแถว และหมำยเลขสดมภ์
Memory
Row 0
0
0
1
2
7
2
3
5
0
1
2
2
8
0
-3
0
0
3
Columns
Rows
1
Row 1
Row 2
Row 3
7
b[0][0]
2
b[0][1]
3
b[0][2]
5
b[1][0]
0
b[1][1]
1
b[1][2]
2
b[2][0]
8
b[2][1]
0
b[2][2]
-3
b[3][0]
0
b[3][1]
0
b[3][2]
…
#include<stdio.h> //array2D.cpp
void main()
{
int i,j;
int b[4][3]={{7,2,3}, //4 แถว 3 คอลัมน์
{5,0,1},
{2,8,0},
{-3,0,0} };
for(i=0;i<4;i++) //ลูปนอก ซึง่ เป็ นตาแหน่งแถว
{
for(j=0;j<3;j++) //ลูปใน ซึง่ เป็ นตาแหน่ง คอลัมน์
{
printf("%d ",b[i][j]);
}
printf("\n");
}
}

#include<stdio.h>

#define RATE 0.07

#define N 5

void main()

{

char prod[N][15];

float price[N],vat[N],net[N];

int i;

for(i=0;i<N;i++)

{

printf("Enter Product Name : ");

scanf("%s",&prod[i]);

printf("\tprice : ");

scanf("%f",&price[i]);

vat[i]=price[i]*RATE;

net[i]=price[i]+vat[i];
}

printf("No. product

price

for(i=0;i<N;i++)

{
printf("%2d %-10s

}


vat7%%
}
Net\n"); //ส่วนของการแสดงผล
%10.2f %8.2f %10.2f\n",i+1,prod[i],price[i],vat[i],net[i]);
1.
เขียนโปรแกรมโดยการใช้ Array 2 มิติ [3 x 5]เพื่อแสดงค่า ดังต่อไปนี ้
(array2D2.cpp)
A
B
C
D
E
1
2
3
4
5
a
b
c
d
e
2. เขียนโปรแกรมเพื่อคานวณค่าคอมมิชชัน่ 0.25% จากยอดขาย
ให้ รับชื่อพนักงาน และยอดขาย ของพนักงานจานวน 5 คน
และแสดง ชื่อพนักงาน ยอดขาย ค่าคอมมิชชัน่ และเงินรายได้ รวม
(array2D3.cpp)


ในภาษาซี ใช้ array of character ในการเก็บสายอักขระ(string)
เพิม่ null character “\0” ต่อท้ายอักขระตัวท้าย เป็ นการบอกจุดสิ้ นสุ ด
สตริ ง


ในภาษาซี มี standard library function เกี่ยวกับสตริ งให้ใช้งาน
ที่ใช้งานบ่อยๆ ได้แก่
strcpy(สตริ งปลายทาง, สตริ งต้นทาง)
strlen(ตัวแปรสตริ ง)
char s[10];
strcpy(s, “MWIT”);
s
M W I
0
1
2
T \0
3
4
5
memory
6
7
8
9

assignment operator หรื อ เครื่ องหมายเท่ากับ (=) ไม่สามารถ
ใช้กาหนดค่าให้กบั ตัวแปรสตริ งได้ ต้องใช้ฟังก์ชนั strcpy() เท่านั้น
strcpy(s, “MWIT”);
S = “MWIT” ;



จะเกิดอะไรขึ้น ถ้าเราเก็บข้อความ
“Mahidol Wittayanusorn”
ลงในตัวแปร char s[10];
ข้อความจะถูกเก็บไว้ในตัวแปร s และจะบันทึกตัวอักษรที่เกินไป
ด้วย ซึ่งอาจไปบันทึกทับข้อมูลที่ถูกเก็บไว้ถดั จากตัวแปร s

char s[10];
int len;
strcpy(s, “MWIT”);
len = strlen(s);
printf(“%d”, len);
ผลลัพธ์
4




strcpy(dest_string, source_string);
int a = strlen(string);
strcat(dest_string, source_string);
int a = strcmp(string1, string2);
◦ string1 == string2 if a == 0
◦ string1 < string2 if a is negative (-)
◦ string1 > string2 if a is positive (+)

ตรวจสอบ string ที่ผใู ้ ช้ป้อนเข้ามาว่าเป็ น palindrome หรื อไม่
เช่น level

deed 
success
maimai

