Upload
idona-hopkins
View
29
Download
0
Embed Size (px)
DESCRIPTION
ทบทวน อาร์เรย์ (Array). วัตถุประสงค์. สามารถใช้งานตัวแปรประเภทอาร์เรย์ 1 มิติ และ 2 มิติได้ เข้าใจการส่งผ่านอาร์เรย์ไปยังฟังก์ชัน สามารถใช้งานข้อมูลชนิดโครงสร้าง (structure) ได้. Outline. นิยามอาร์เรย์ การประกาศตัวแปรอาร์เรย์ การเข้าถึงตัวแปรอาร์เรย์ การส่งผ่านอาร์เรย์ไปยังฟังก์ชัน - PowerPoint PPT Presentation
Citation preview
วั�ตถุ�ประสงค์�สามารถุใช้�งานต�วัแปรประเภทอาร�เรย์� 1 ม�ต�
และ 2 ม�ต�ได้�เข้�าใจการส!งผ่!านอาร�เรย์�ไปย์�งฟั$งก�ช้�นสามารถุใช้�งานข้�อม%ลช้น�ด้โค์รงสร�าง (structure) ได้�
Outlineน�ย์ามอาร�เรย์�การประกาศต�วัแปรอาร�เรย์�การเข้�าถุ(งต�วัแปรอาร�เรย์�การส!งผ่!านอาร�เรย์�ไปย์�งฟั$งก�ช้�นข้�อม%ลช้น�ด้โค์รงสร�าง
น�ย์ามข้องอาร�เรย์�อาร์�เร์ย์� เป)นร%ปแบบข้�อม%ลแบบหน(,งท-,จ�ด้
เก.บข้�อม%ลช้น�ด้เด้-ย์วัก�นอย์!างต!อเน/,องก�น โด้ย์จ�ด้อย์%!ในบล.อกข้องหน!วัย์ค์วัามจ0าเด้-ย์วัก�น และใช้�ช้/,อต�วัแปรร!วัมก�นในการอ�างถุ(ง7
0
6
5
8
4
5
0
4
6
2
3
v[0] v[1] v[2] v[3] v[4] v[5]
การประกาศต�วัแปรแบบอาร�เรย์�อาร์�เร์ย์� 1 มิติ ม-โค์รงสร�างเท-ย์บเท!าเมตร�กซ์�
ข้นาด้ n x 1 การประกาศต�วัแปรอาร�เรย์� จะใช้�เค์ร/,องหมาย์ [] ล�อม
ค์!าต�วัเลข้จ0านวันเต.ม เพื่/,อบอกจ0านวันสมาช้�กท-,ต�องการ ร์�ปแบบการ์ปร์ะกาศติ�วแปร์อาร์�เร์ย์� 1 มิติ:
ชนิดของติ�วแปร์ ช��อติ�วแปร์[จำ�านิวนิสมิาชกที่��ติ องการ์]
เช้!น int v[6] float data[10] 7
0
6
5
8
4
5
0
4
6
2
3
การประกาศต�วัแปรแบบอาร�เรย์�อาร์�เร์ย์� 2 มิติ ม-โค์รงสร�างค์ล�าย์ก�บเมตร�กซ์�สองม�ต�
ม-การอ�างถุ(งข้�อม%ลโด้ย์ใช้�ค์!าเลข้ด้�ช้น- 2 ค์!า ซ์(,งประกอบค์!าด้�ช้น-ท-,ใช้�ในการอ�างอ�งในแนวัแถุวั (rows) และค์!าด้�ช้น-ท-,ใช้�อ�างอ�งในแนวัค์อล�มน� (columns)
ร์�ปแบบการ์ปร์ะกาศติ�วแปร์อาร์�เร์ย์� 2 มิติ:ชนิดข อมิ�ล ช��อติ�วแปร์[จำ�านิวนิแถว][จำ�านิวนิ
คอล�มินิ�]เช้!น int val[2][3]
float[5][10]
5 2 7
6 7 2
การเข้�าถุ(งต�วัแปรอาร�เรย์�ร์�ปแบบการ์เข าถ$งติ�วแปร์อาร์�เร์ย์� 1 มิติ
ช��อติ�วแปร์[ติ�วช�%]
ร์�ปแบบการ์เข าถ$งติ�วแปร์อาร์�เร์ย์� 2 มิติช��อติ�วแปร์[ติ�วช�%แนิวแถว][ติ�วช�%แนิวคอล�มินิ�]
ติ�วช�%อาจป3อนอย์%!ในร%ปข้องต�วัแปร น�พื่จน� หร/อฟั$งก�ช้�นท-,ให�ค์!าเป)นค์!าจ0านวันเต.มได้�
ต�วัอย์!างการเข้�าถุ(งต�วัแปรอาร�เรย์�read mark[0] write mark[i]tol tol + v[i]v[0] 78v[i] v[i-1] + 5x[i][j] i*j
การใช้�ค์0าส�,ง for ในการเข้�าถุ(งอาร�เรย์� 1 ม�ต�ติ�วอย์&าง ถุ�าต�องการหาผ่ลรวัมข้องต�วัแปร score 5 อ�ล�เมนต� ท0าได้�
ด้�งน-4
sum score[0] + score[1] + score[2] + score[3] + score[4]
เปล��ย์นิเป'นิใช for loop ได ด�งนิ�%
sum 0for i0 to 4
sum sum + score[i]
ต�วัอย์!างการร�บค์!าและแสด้งผ่ลล�พื่ธ์�ข้องอาร�เรย์�#include<stdio.h>main(){
int sal[4]for(i=0;i<4;i++)
{printf(“Enter sal[%d]: ”,i); scanf(“%d”, sal[i]); //การร�บค์!า
} for(i=1;i<4;i++)
{sal[i] = sal[i]*sal[i-1]; printf(“sal[%d] = %d\n” , i, sal[i]); //การแสด้ง
ผ่ลล�พื่ธ์�}
}
Enter[0]: 1Enter[1]: 1Enter[2]: 2Enter[3]: 5……………………………………………………………………………
…………………………………………………………………………….
……………………………………………………………………………..
การใช้�ค์0าส�,ง for ในการเข้�าถุ(งอาร�เรย์� 2 ม�ต�ใช้�ล%ป for 2 ช้�4น โด้ย์ล%ปช้�4นนอกวันรอบตามจ0านวัน
แถุวั และล%ปช้�4นในวันรอบตามจ0านวันค์อล�มน�ต�วัอย์!างเช้!น ต�วัการหาผ่ลรวัมข้องค์ะแนนเก.บ
ค์ะแนนสอบกลางภาค์ ค์ะแนนสอบปลาย์ภาค์ข้องน�กศ(กษาแต!ละค์น จ0านวัน 5 ค์น
1. for i0 to 41.1 stu[i]01.2 for j 0 to 2
1.2.1 stu[i] stu[i] + score[i][j]
ต�วัอย์!างการร�บค์!าและแสด้งผ่ลล�พื่ธ์�ข้องอาร�เรย์� 2 ม�ต�
#include<stdio.h>main(){
float score[5][3], stu[5];for(i=0;i<5;i++){ stu[i]=0; for(j=0;j<3;j++)
{ scanf(“%f”, &score[i][j]); //การร�บค์!า
stu[i] = stu[i] + score[i][j];}
}
for(i=0;i<5;i++){ for(j=0;j<3;j++) printf(“%.2f\t”, score[i][j]); //การแสด้งผ่ลล�พื่ธ์� printf(“\t%.2f\n”, stu[i]);}
}
การส!งผ่!านอาร�เรย์�ไปย์�งฟั$งก�ช้�นต�วัอย์!างการส!งค์!าแต!ละอ�ล�เมนต�ในอาร�เรย์�ให�ก�บฟั$งก�ช้�น
#include<stdio.h>void chk_v(int num){
if(num%2==0) printf(“%d is an even number\n”, num);else printf(“%d is an odd number\n”,num);
}main(){ int i;
int val[5] = {2,7,4,1,9};for(i=0;i<5;i++)
chk_v(val[i]); //ส&งไปที่��ค&า (call by value)}
Output???
การส!งผ่!านอาร�เรย์�ไปย์�งฟั$งก�ช้�นต�วัอย์!างการส!งค์!าท�กอ�ล�เมนต�ในอาร�เรย์�ให�
ก�บฟั$งก�ช้�น#include<stdio.h>void chk_v(int num[5]){ int i;
for(i=0;i<5;i++){ if(num[i]%2==0) printf(“%d is an even number\n”, num); else printf(“%d is an odd number\n”,num);}
}main(){
int val[5] = {2,7,4,1,9};chk_v(val); //ส&งไปที่*กค&าในิอาร์�เร์ย์� (call by reference)
}
Output???
แบบฝึ8กห�ด้เข้-ย์นข้�4นตอนวั�ธ์-ด้�วัย์รห�สจ0าลองเพื่/,อร�บ
2 เมตร�กซ์� ข้นาด้ 4 x 3 แล�วัเร-ย์กใช้� 2 ฟั$งก�ช้�น
1 .ท0าการบวักก�น2. ท0า transpose
ข้�อม%ลช้น�ด้โค์รงสร�างการประกาศข้�อม%ลช้น�ด้โค์รงสร�าง
struct ช้/,อแบบข้�อม%ลช้น�ด้โค์รงสร�าง{
ช้น�ด้ข้�อม%ล ช้/,อต�วัแปรสมาช้�ก ;ช้น�ด้ข้�อม%ล ช้/,อต�วัแปรสมาช้�ก ;....
}ช้/,อต�วัแปรโค์รงสร�าง;
ข้�อม%ลช้น�ด้โค์รงสร�างติ�วอย์&าง การประกาศข้�อม%ลช้น�ด้โค์รงสร�าง
struct student_history{
char id[10] ;charname[30];int age;char faculty[20];
}student[50];
ข้�อม%ลช้น�ด้โค์รงสร�างการ์เร์�ย์กใช การ์เข าถ$ง และการ์ก�าหนิดค&า
การร�บค์!า และการก0าหนด้ค์!าเร�,มต�น สามารถุท0าได้�เช้!นเด้-ย์วัก�บต�วัแปรท�,วัไป เพื่-ย์งแต!การอ�างถุ(งแต!กต!างก�นเท!าน�4น ซ์(,งการอ�างถุ(งต�วัแปรท-,เป)นสมาช้�กในต�วัแปรโค์รงสร�างน�4น สามารถุท0าได้�โด้ย์การระบ�ช้/,อต�วัแปรโค์รงสร�าง ตามด้�วัย์จ�ด้ (.) และตามด้�วัย์ช้/,อต�วัแปรสมาช้�กท-,ต�องการอ�างถุ(ง
เช้!น student[0].id student[0].name
student[0].age student[0].faculty
created by Dararat Saeleee , 344-211 Algorithmic Process & Programming 19
การ์ส&งผ่&านิข อมิ�ลแบบ struct เป'นิ argument
#include<stdio.h>
void print(struct history);
struct history { int id; char name[20]; char faculty[25]; } student;
int main (){ printf ("Enter id :"); scanf ("%d",&student.id); printf ("Enter name :"); scanf ("%s",student.name); printf ("Enter faculty :"); scanf ("%s",student.faculty); printf ("\nstudent detail");
print(student); return 0;}
void print(struct history std)
{ printf ("\n\t ID :%d \n\t Name : %s \n\t Faculty: %s",std.id,std.name,std.faculty);}
Struct1_2.c
created by Dararat Saeleee , 344-211 Algorithmic Process & Programming 20
การ์ส&งผ่&านิข อมิ�ลแบบ struct เป'นิ argument
typedef struct { int roomno ; char name [15]; int age ; char sex ;} Detail;
#define size 4Detail customer [size] ;
void range(Detail c[ ]);
void main(){ …..
range(customer); …}
void range (Detail c[ ])
{ int i, minage=999,
maxage=0; for(i=0;i<size;i++) { if (c[i].age < minage) minage = c[i].age; if (c[i].age > maxage) maxage = c[i].age; } printf("age range = %d -%d\
n",minage,maxage);}
Demo struct2_2.c
created by Dararat Saeleee , 344-211 Algorithmic Process & Programming
Class Exerciseเข้-ย์นโปรแกรมภาษาซ์-เพื่/,อพื่�มพื่�ราย์งานผ่ลการ
เร-ย์น ด้�งน-4344-201 C programming 3 B+322-212 Basic Math 4 C890-200 English 1 3 A
GPA = 3.05 Status = Pass