BC322 ครั้งที่ 10 ตัวแปรชุด (Array) เรื่องที่เรียนวันนี้ อาร์เรย์ 1 มิติ อาร์เรย์ 1 มิติ + ฟังก์ชัน BC322 Computer Programming-Array Processing
Array คืออะไร Array หมายถึง กลุ่มของตัวแปรที่ถูกประกาศขึ้นมาใช้งาน โดยที่สมาชิกในกลุ่มทั้งหมด จะเป็นตัวแปรชนิดเดียวกัน สมาชิกในตัวแปรในกลุ่มทุกตัว จะมีชื่อเดียวกัน แต่การอ้างถึงสมาชิกแต่ละตัวจะใช้ เลขในการระบุตำแหน่ง (index) Array 1 มิติ Array Array 2 มิติ BC322 Computer Programming-Array Processing
การประกาศตัวแปร Array 1 มิติ รูปแบบ ชนิดตัวแปร ชื่อตัวแปร[จำนวนสมาชิก]; ตัวอย่าง int Age[10]; [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Age BC322 Computer Programming-Array Processing
ความแตกต่างระหว่าง ตัวแปรอาร์เรย์กับตัวแปรธรรมดา เช่น ตัวแปร Age กับ Age[10] ตัวแปร Age เป็นตัวแปรธรรมดา ที่สามารถเก็บค่าตัวเลขได้ 1 ค่า ตัวแปร Age[10] เป็นตัวแปรชุด ที่สามารถเก็บค่าตัวเลขได้ 10 ค่า BC322 Computer Programming-Array Processing
จงประกาศตัวแปรอาร์เรย์ต่อไปนี้ เก็บส่วนสูงของนักศึกษา 50 คน เก็บปีพ.ศ.เกิดของเพื่อน 20 คน เก็บเงินเดือนของพนักงานบริษัท 100 คน (พนักงานมีเงินเดือนสูงสุดเป็นหลักแสน) BC322 Computer Programming-Array Processing
เปรียบเทียบการเก็บข้อมูลลงในตัวแปรอาร์เรย์กับตัวแปรแบบธรรมดา Ex1 เมื่อต้องการเก็บค่าอายุ 10 ของนักศึกษา 10 คน แบบตัวแปรArray แบบธรรมดา printf(“Enter age: “); scanf(“%d”, &Age1); scanf(“%d”, &Age2); scanf(“%d”, &Age3); scanf(“%d”, &Age4); … scanf(“%d”, &Age10); for(i=0; i<10; i++) { printf(“Enter age: “); scanf(“%d”, &Age[i]); } BC322 Computer Programming-Array Processing
การเก็บข้อมูลลงในตัวแปรอาร์เรย์ ผลรัน Enter age: 18 Enter age: 17 Enter age: 21 Enter age: 20 Enter age: 19 Enter age: 20 Enter age: 17 Enter age: 19 Enter age: 18 Enter age: 18 for(i=0; i<10; i++) { printf(“Enter age: “); scanf(“%d”, &Age[i]); } [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] 18 17 21 20 19 Age BC322 Computer Programming-Array Processing
การแสดงผลข้อมูลในตัวแปรอาร์เรย์ for(i=0; i<10; i++) { printf(“%d\n”, Age[i]); } BC322 Computer Programming-Array Processing
EX2 จงเขียนโปรแกรมเพื่อรับค่าอายุนักศึกษาจำนวน 5 คน และแสดงผลอายุนักศึกษาพร้อมทั้งคำนวณหาค่าเฉลี่ย ผลการรัน Enter student age: 18 Enter student age: 17 Enter student age: 19 = = = = = = = = = = = Age of students 18 17 18 17 19 Average of student age is: 17.8 BC322 Computer Programming-Array Processing
EX3 โปรแกรมหาน้ำหนักนักศึกษาสูงสุด ในกลุ่มอายุนักศึกษาจำนวน 10 คน และแสดงผลน้ำหนัก ตัวอย่างผลรัน Enter student Weight1: 48.7 Enter student Weight2: 63.5 Enter student Weight3: 42.1 Enter student Weight4: 55.5 Enter student Weight5: 60.0 Enter student Weight6: 90.5 Enter student Weight7: 53.4 Enter student Weight8: 66.3 Enter student Weight9: 44.2 Enter student Weight10: 52.8 Maximum of student weight is: 90.5 kg. BC322 Computer Programming-Array Processing
Ex4 จงเขียนโปรแกรมเพื่อคิดเกรดของนักศึกษา 5 คน โดยที่ รับคะแนนสอบเป็นเลขทศนิยม เก็บในตัวแปรอาร์เรย์ชื่อ Score คิดเกรดแต่ละคนเก็บในอาร์เรย์ชื่อ Grade โดยมีเงื่อนไขดังนี้ ถ้าได้ คะแนน 0-49 คะแนน ได้เกรด U คะแนน 50-100 คะแนน ได้เกรด S แสดงผลลัพธ์ของคะแนนและเกรดนักศึกษาแต่ละคน BC322 Computer Programming-Array Processing
ตัวอย่างผลรัน Input score1: 48.7 Input score2: 63.5 Input score3: 42.1 * * Result ** Student1 got grade U. Student2 got grade S. Student3 got grade U. Student4 got grade S. Student5 got grade S. BC322 Computer Programming-Array Processing
การใช้อาร์เรย์ 1 มิติ + ฟังก์ชัน BC322 Computer Programming-Array Processing
Ex5 จงเขียนโปรแกรมเพื่อรับค่าตัวเลข 5 ตัวและแสดงผลโดยกำหนดให้มีโปรแกรมย่อย ดังนี้ โปรแกรมย่อยชื่อ Inputdata ใช้สำหรับรับค่าตัวเลข 5 ตัวเก็บในอาร์เรย์ โปรแกรมย่อยชื่อ Displaydata ใช้สำหรับแสดงผลตัวเลข 5 ตัวทีเก็บอยู่ในอาร์เรย์ ตัวอย่างผลรัน Please enter number1: 7 Please enter number2: 10 Please enter number3: 4 Please enter number4: 9 Please enter number5: 17 ---------------------------- Number1 is 7 Number2 is 10 Number3 is 4 Number4 is 9 Number5 is 17 BC322 Computer Programming-Array Processing
#include<stdio.h> int i; void Inputdata(int n[]) { for(i=0;i<5;i++) printf("Please enter number%d : ",i+1); scanf("%d",&n[i]); } void Displaydata(int n[]) printf("Number%d is %d \n",i+1,n[i]); void main() int num[5]; Inputdata(num); printf("----------------------\n"); Displaydata(num); BC322 Computer Programming-Array Processing
Ex6 จงเขียนโปรแกรมเพื่อคิดเงินให้กับลูกค้า 5 คน ที่มาซื้อสินค้า โดยมีโปรแกรมย่อยดังนี้ โปรแกรมย่อยชื่อ Customer สำหรับรับจำนวนสินค้า และราคาสินค้าเก็บในอาร์เรย์ amt,price พร้อมทั้งคำนวณยอดเงินรวมเก็บในอาร์เรย์ total โปรแกรมย่อยชื่อ Calculate คำนวณส่วนลด แล้วเก็บค่าในอาร์เรย์ Discount โดยมีเงื่อนไขในการคิดส่วนลดดังนี้ ยอดเงินรวม 0-199 บาท ลด 5 % ยอดเงินรวม 200-499 บาท ลด 10% ยอดเงินรวม ตั้งแต่ 500 บาท ลด 20% โปรแกรมย่อยชื่อ Payment เพื่อคิดยอดเงินที่ต้องชำระสุทธิ โดยเก็บค่าในอาร์เรย์ pay พร้อมทั้งแสดงผล BC322 Computer Programming-Array Processing
ตัวอย่างผลรัน แสดงผล รับค่า ** Customer report *** Please enter amount : 10 Please enter price : 15 = = = = = = = = = = = **Customer 2** Please enter amount : 2 Please enter price : 40 **Customer 3** Please enter amount : 500 Please enter price : 2 **Customer 4** Please enter amount : 200 Please enter price : 1 **Customer 5** Please enter amount : 300 ** Customer report *** Customer 1 must pay = 142.50 baht. Customer 2 must pay = 76.00 baht. Customer 3 must pay = 800.00 baht. Customer 4 must pay = 180.00 baht. Customer 5 must pay = 480.00 baht. แสดงผล รับค่า BC322 Computer Programming-Array Processing
Solution Ex6 #include<stdio.h> #include<conio.h> void Customer(int a[],float p[],float tot[]); void Calculate(float tot[],float d[]); void Payment(float tot[],float d[],float p[]) #define MAX 5 int i; void main() { int amt[5]; float price[5],discount[5],pay[5],total[5]; Customer(........................................................); Calculate(.........................................................); Payment(.........................................................); } BC322 Computer Programming-Array Processing
void Customer(..............................................................) { BC322 Computer Programming-Array Processing
void Calculate(..............................................................) { BC322 Computer Programming-Array Processing
void Payment(..................................................................) { BC322 Computer Programming-Array Processing