ยินดีต้อนรับเพื่อนๆ เอกคอมพิวเตอร์ศึกษา และผู้ที่เวะเข้ามาชมทุกคนคับ ที่เข้ามาเยี่ยมชมเว็บบร็อกของผม ยินดีต้อนรับเข้าสู้เว็บไซต์http://teenemerux.blogspot.com

วันจันทร์ที่ 13 กุมภาพันธ์ พ.ศ. 2555

ตัวแปรชุดและสตริง

       ในบทที่ผ่านมาหลายบทก่อนหน้านี้ได้พูดถึงตัวแปรชนิดต่าง ๆ หลายชนิด สำหรับเนื้อหาในบทนี้ จะได้เรียนรู้เกี่ยวกับตัวแปรอีกชนิดหนึ่งนั่นคือตัวแปรชุด (arrays) และเนื้อหาเกี่ยวกับสตริง (string) ซึ่งเป็นพื้นฐานที่สำคัญในการจัดเก็บข้อมูลและโครงสร้างของข้อมูลโดยเฉพาะอย่างยิ่งตัวแปรชุดมีประโยชน์หลายประการดังนี้
1) ช่วยลดการตั้งชื่อซ้ำ ๆ กัน เช่น ต้องการเก็บค่าตัวเลขจำนวนเต็ม 100 ตัว ถ้าไม่มีการใช้ตัวแปรชุด เราจะต้องประกาศตัวแปรถึง 100 ตัว ดังนี้
int k1, k2, k3, …, k100; /* ประกาศตัวแปร k1, k2, k3, …, k100 จำนวน 100 ตัว */ แต่ถ้าเราใช้ตัวแปรชุดมาช่วยในการเก็บข้อมูลตัวเลขชุดนี้ เราสามารถเก็บตัวเลข 100 ตัวนี้ไว้ในชื่อเดียวกัน แต่มีตัวเลข subscript คอยกำกับเพื่อบ่งบอกถึงลำดับที่ของข้อมูลในตัวแปรได้
int k[100]; /* ประกาศตัวแปรชุด 1 ตัว คือชื่อตัวแปร k */
2) ช่วยในการจัดเก็บข้อมูลแบบตาราง (table) โดยสามารถใช้ตัวแปรชุด 2 มิติ มาเก็บข้อมูลได้
3) ช่วยในการเขียนโปรแกรมมีประสิทธิภาพมากขึ้น เนื่องจากในโปรแกรมที่มีการใช้ตัวแปรชุดจะมีตัวแปรน้อยลง ช่วยในการจัดเรียงข้อมูล และค้นหาข้อมูลได้สะดวกและรวดเร็ว
5.1 ตัวแปรชุด (arrays variables)
ตัวแปรชุด คือ ตัวแปรชนิดหนึ่งที่ใช้ชื่อเพียงชื่อเดียวแต่มีตัวเลขแสดงตำแหน่งกำกับไว้ (subscript) เพื่อเป็นการบอกว่าเป็นสมาชิกของตัวแปรชุดตัวที่เท่าไหร

5.1.1 ประเภทของตัวแปรชุด มีดังนี้
1) ตัวแปรชุด 1 มิติ (one dimension arrays หรือ single dimension arrays) ตัวแปรชุด 1 มิติ คือ ตัวแปรชุดที่มีตัวเลขกำกับ (subscript) เพียง 1 ตัว เช่น a[20], b[100], name[30] และ salary[20] เป็นต้น

2) ตัวแปรชุดหลายมิติ (multi-dimension arrays) ตัวแปรชุดหลายมิติ คือ ตัวแปรชุดที่มีตัวเลขกำกับ (subscript) ตั้งแต่ 2 ตัวขึ้นไป โดยมากจะสนใจศึกษาตัวแปรชุดที่มีตัวเลขกำกับ 2 ตัว และ 3 ตัว ดังนี้

      • ตัวแปรชุด 2 มิติ (two dimension arrays) คือ ตัวแปรชุดที่มีตัวเลขกำกับ (subscript) เพียง 2 ตัว เช่น a[2][4], b[3][4], name[5][30] เป็นต้น
      • ตัวแปรชุด 3 มิติ (three dimension arrays) คือ ตัวแปรชุดที่มีตัวเลขกำกับ (subscript) เพียง 3 ตัว เช่น a[2][3][4], b[3][4][5] เป็นต้น

5.1.2 การประกาศตัวแปรชุด (declaration of arrays) สามารถทำได้ดังนี้
1) การประกาศตัวแปรชุด 1 มิติ (declaration of one dimension arrays)

กล่องข้อความ: type   arrayname  [size];

โดยที่


type คือ ชนิดของตัวแปรชุด เช่น int, float, char, double เป็นต้น
arrayname คือ ชื่อตัวแปรชุด ตั้งขึ้นตามหลักการตั้งชื่อตัวแปร
size คือ ขนาดของตัวแปรชุดเป็นตัวเลขจำนวนเต็ม

ตัวอย่างการประกาศตัวแปรชุด 1 มิติ
ตัวอย่างที่ 5.1 int s[20]; ภายในหน่วยความจำจะมีการจองเนื้อที่ไว้ดังนี้


การจองเนื้อที่ใช้ช่องละ 2 bytes 20 ช่อง รวมกันทั้งหมดใช้เนื้อที่ 40 bytes



ตัวอย่างที่ 5.2 char p[20]; ภายในหน่วยความจำจะมีการจองเนื้อที่ไว้ดังนี้


การจองเนื้อที่ใช้ช่องละ 1 bytes 20 ช่อง รวมกันทั้งหมดใช้เนื้อที่ 20 bytes

ตัวอย่างที่ 5.3 float t[20]; ภายในหน่วยความจำจะมีการจองเนื้อที่ไว้ดังนี้



การจองเนื้อที่ใช้ช่องละ 4 bytes 20 ช่อง รวมกันทั้งหมดใช้เนื้อที่ 80 bytes

กล่องข้อความ: ข้อควรจำ การจองเนื้อที่ในหน่วยความจำของตัวแปรชุด  จะใช้เนื้อที่เท่าไหร่  ขึ้นอยู่กับชนิดของตัวแปรชุดและสมาชิกของตัวแปรชุด





2) การประกาศตัวแปรชุด 2 มิติ (declaration of two dimension arrays)

กล่องข้อความ: type   arrayname  [n][m];


โดยที่

type คือ ชนิดของตัวแปรชุด เช่น int, float, char, double เป็นต้น
arrayname คือ ชื่อตัวแปรชุด ตั้งขึ้นตามหลักการตั้งชื่อตัวแปร
n คือ ตัวเลขที่ใช้แสดงตำแหน่งแถว (row) มีค่าตั้งแต่ 0, 1, 2, …, n-1
m คือ ตัวเลขที่ใช้แสดงตำแหน่งคอลัมน์ (column) มีค่าตั้งแต่ 0, 1, 2, …, m-1


ตัวอย่างการประกาศตัวแปรชุด 2 มิติ

ตัวอย่างที่ 5.4 int r[3][2]; ภายในหน่วยความจำจะมีการจองเนื้อที่ไว้ดังนี้



การจองเนื้อที่ของตัวแปรชุด 2 มิติ จะมีลักษณะเป็นตาราง (table) มีจำนวนแถว n = 0, 1, 2 และมีจำนวนคอลัมน์ m = 0, 1 โดยที่ในตารางจะมีลักษณะเป็นช่อง ๆ ซึ่งแต่ละช่องก็คือพื้นที่ของสมาชิกแต่ละตัว โดยใช้เนื้อที่ช่องละ 2 bytes มีสมาชิกทั้งหมด 6 ตัว ดังนั้นใช้เนื้อที่ทั้งหมด 12 bytes

วิธีการหาจำนวนสมาชิกทั้งหมดของตัวแปรชุด 1 มิติ และ 2 มิติ
การหาจำนวนสมาชิกทั้งหมดของตัวแปรชุด สามารถคำนวณได้จากสูตรดังนี้

กรณีตัวแปรชุด 1 มิติ
จำนวนสมาชิกทั้งหมดของตัวแปรชุด = ขนาดของตัวแปรชุด (size)
กรณีตัวแปรชุด 2 มิติ
จำนวนสมาชิกทั้งหมดของตัวแปรชุด = n*m

จากตัวอย่าง int r[3] [2]; จะได้ว่า n = 3, m = 2 ดังนั้น จำนวนสมาชิกของตัวแปรชุด = 3*2 = 6 แสดงว่าตัวแปรชุดนี้มีสมาชิกดังนี้ r[0][0], r[0][1], r[n-1][m-1] รวมทั้งหมด 6 สมาชิก

ตัวอย่างที่ 5.5 float X[5] [4]; ภายในหน่วยความจำจะมีการจองเนื้อที่ไว้ดังนี้



การจองเนื้อที่จะมีลักษณะเป็นตาราง (table) มีจำนวนแถว n = 0, 1, 2, 3, 4 และมีจำนวนคอลัมน์ m = 0, 1, 2, 3 โดยที่ในตารางใช้เนื้อที่ช่องละ 4 bytes มีจำนวนทั้งหมด 20 ตัว ดังนั้นใช้เนื้อทั้งหมด 80 bytes


3) การประกาศตัวแปรชุด 3 มิติ (declaration of three dimension arrays)

type arrayname [n] [m] [p];



โดยที่


type คือ ชนิดของตัวแปรชุด เช่น int, float, char, double เป็นต้น
arrayname คือ ชื่อตัวแปรชุดตั้งขึ้นตามหลักการตั้งชื่อตัวแปร
n คือ ตัวเลขกำกับตัวที่ 1 มีค่าตั้งแต่ 0, 1, 2, …., n-1
m คือ ตัวเลขกำกับตัวที่ 2 มีค่าตั้งแต่ 0, 1, 2, …., m-1 p คือ ตัวเลขกำกับตัวที่ 3 มีค่าตั้งแต่ 0, 1, 2, …., p-1



วิธีการหาจำนวนสมาชิกทั้งหมดในตัวแปรชุด 3 มิติ หาได้จากสูตรดังนี้


จำนวนสมาชิกทั้งหมดของตัวแปรชุด = n*m*p




ตัวอย่างการประกาศตัวแปรชุด 3 มิติ float a[2][2][3]; ดังนั้น n = 2 , m = 2, p = 3 จะได้ว่าจำนวนสมาชิกทั้งหมดของตัวแปรชุด = 2*2*3 = 12 ตัว

ดังนั้นเราสามารถเขียนสมาชิกทั้งหมดของตัวแปรชุดนี้ได้ดังตาราง

Column 0
Column 1
ตัวที่ 1
ตัวที่ 2
ตัวที่ 3
ตัวที่ 1
ตัวที่ 2
ตัวที่ 3
Row 0
a[0][0][0]
a[0][0][1]
a[0][0][2]
a[0][1][0]
a[0][1][1]
a[0][1][2]
Row 1
a[1][0][0]
a[1][0][1]
a[1][0][2]
a[1][1][0]
a[1][1][1]
a[1][1][2]



โดยที่สมาชิกแต่ละตัวใช้เนื้อที่ตัวละ 4 bytes จำนวนสมาชิกทั้งหมดมี 12 ตัว ดังนั้นใช้เนื้อที่ทั้งหมดคือ 4*12 = 48 bytes

5.1.3 การกำหนดค่าเริ่มต้นให้กับตัวแปรชุด (initializing arrays)

1) การกำหนดค่าตัวเลขให้กับตัวแปรชุด
รูปแบบที่ 1 (กรณีตัวแปรชุด 1 มิติ)

type arrayname[size] = { value list };




รูปแบบที่ 2 (กรณีตัวแปรชุด 2 มิติ)

type arrayname[n][m] = { value list };


โดยที่


value list คือ ค่าคงที่ชนิดตัวเลขที่ต้องการกำหนดให้ตัวแปรชุด ถ้ามีหลายค่าให้ใช้เครื่องหมาย , (comma) คั่นระหว่างค่าคงที่แต่ละค่า
โดยค่าคงที่ทั้งหมดจะต้องอยู่ภายใต้เครื่องหมาย { }
ตัวอย่าง 5.6 int a[10] = {10, 20, 30, 40,50, 60, 70, 80, 90, 100};
ภายในหน่วยความจำจะเก็บตัวแปรชุดดังนี้

ตัวอย่างที่ 5.7 float p[5][3] = {


3.0, 4.5, 5.5,
4.6, 5.5, 6.5,
5.0, 6.2, 7.0,
6.3, 6.8, 7.4,
7.5, 8.0, 9.0
};

ภายในหน่วยความจำจะเก็บตัวแปรชุดเป็นลักษณะตาราง (table) ดังนี้


โดยที่สมาชิกแต่ละตัวใช้เนื้อที่ 4 bytes ดังนั้นใช้เนื้อที่ทั้งหมด = 4*15 = 60 bytes


2) การกำหนดค่าคงที่ชนิดสตริงให้กับตัวแปรสตริง

รูปแบบที่ 1 (กรณีตัวแปรชุด 1 มิติ)


char arrayname[size] = “string constant”;



รูปแบบที่ 2 (กรณีตัวแปรชุด 2 มิติ)

char arrayname[n][m] = {“string constant”};
โดยที่
string constants คือ ค่าคงที่ชนิดสตริงที่ต้องการกำหนดให้ตัวแปรชุด ถ้ามีหลายค่าจะต้องใช้เครื่องหมาย , (comma) คั่นระหว่างค่าคงที่แต่ละค่า
ตัวอย่างที่ 5.8 char s[12] = “ASIAN GAME” ;
ภายในหน่วยความจำจะเก็บข้อมูลตัวแปรชุดมีลักษณะดังนี้


null character


ตัวอย่างที่ 5.9 char province[3][13] = {
“NAKHONPANOM” ,
“SAKON NAKHON” ,
“MOOKDAHAN” } ;
ภายในหน่วยความจำจะเก็บข้อมูลมีลักษณะดังนี้

ทั้งหมดใช้เนื้อที่ 3 x 13 = 39 bytes

การอ้างถึงสมาชิกในตัวแปรชุด 2 มิติ

เช่น


province [0] คือ สมาชิกแถวที่ 1 ทั้งแถว นั่นคือข้อมูล NAKHONPANOM
province [1] คือ สมาชิกแถวที่ 2 ทั้งแถว นั่นคือข้อมูล SAKON NAKHON province [2] คือ สมาชิกแถวที่ 3 ทั้งแถว นั่นคือข้อมูล MOOKDAHAN
province [0][0] คือ สมาชิกของ province [0] ตัวที่ 1 คือตัวอักษร N
province [1][2] คือ สมาชิกของ province [1] ตัวที่ 3 คือตัวอักษร K

5.1.4 การนำข้อมูลเข้าไปเก็บและการแสดงผลลัพธ์ของข้อมูลในตัวแปรชุด

โดยปกติเราจะใช้คำสั่ง for หรือ while หรือ do while คำสั่งใดคำสั่งหนึ่งมาช่วยในการนำข้อมูลเข้าเก็บและแสดงผลลัพธ์ข้อมูลในตัวแปรชุด ส่วนมากนิยมใช้คำสั่ง for มากกว่าคำสั่งอื่นทั้งนี้เนื่องจากตัวแปรชุดนั้นเราสามารถทราบขนาดที่แน่นอนได้ ทำให้กำหนดจำนวนรอบการทำงานได้

เพื่อความเข้าใจเกี่ยวกับการนำข้อมูลเข้าไปเก็บและการแสดงผลลัพธ์ของตัวแปรชุดมากยิ่งขึ้น ให้ศึกษาโปรแกรมตัวอย่างที่ 5.1, 5.2, 5.3 และ 5.4 ดังต่อไปนี้

โปรแกรมตัวอย่างที่ 5.1 แสดงการใช้ตัวแปรชุด 1 มิติ ชื่อ scores เก็บคะแนนนักเรียน

/* array1.C */
#include<stdio.h> /* บรรทัดที่ 1 */
#include<conio.h> /* บรรทัดที่ 2 */
/* Record student's scores. */ /* บรรทัดที่ 3 */
main() /* บรรทัดที่ 4 */
{ /* บรรทัดที่ 5 */
int index, scores[5]; /* บรรทัดที่ 6 */
scores[0] = 59; /* บรรทัดที่ 7 */
scores[1] = 67; /* บรรทัดที่ 8 */
scores[2] = 85; /* บรรทัดที่ 9 */
scores[3] = 92; /* บรรทัดที่ 10 */
scores[4] = 74; /* บรรทัดที่ 11 */
clrscr(); /* บรรทัดที่ 12 */
for (index = 0; index < 5; index++) /* บรรทัดที่ 13 */
printf("Student's score: %d\n", scores[index]); /* end for */ /* บรรทัดที่ 14 */
getch(); /* บรรทัดที่ 15 */
return(0); /* บรรทัดที่ 16 */
} /* บรรทัดที่ 17 */

ผลลัพธ์ที่ได้จากโปรแกรม

แผนผังลำดับงาน: จอภาพ: Student's score: 59  Student's score: 67  Student's score: 85  Student's score: 92  Student's score: 74

คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 5.1 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้


บรรทัดที่ 6 ประกาศตัวแปร index เป็นชนิดจำนวนเต็ม และ scores เป็นตัวแปรชุด 1 มิติ ชนิดจำนวนเต็มมีสมาชิก 5 ตัว
บรรทัดที่ 7 ถึง 11 กำหนค่าจำนวนเต็มให้กับตัวแปรชุด scores[0] ถึง scores[4]
บรรทัดที่ 13 คำสั่ง for ทำหน้าที่วนรอบทำงานซ้ำ 5 ครั้ง เพื่อช่วยพิมพ์คะแนนนักเรียนที่เก็บไว้ในตัวแปรชุด scores[0] ถึง scores[4]
บรรทัดที่ 14 และ 15 ฟังก์ชัน printf( ) เพื่อแสดงคะแนนของนักเรียนแต่ละคนออกที่จอภาพซึ่งเก็บไว้ในตัวแปรชุด scores[0] ถึง scores[4] หลังจากนั้นจะหยุดรอรับค่าใด ๆ จากคีย์บอร์ด ซึ่งถ้ากด enter ก็จะกลับสู่โปรแกรม
บรรทัดที่ 16 ส่งค่า 0 (ศูนย์) กลับให้กับฟังก์ชัน main( )

ข้อสังเกต ฟังก์ชัน main( ) ของโปรแกรมตัวอย่างที่ 5.1 เป็นฟังก์ชันที่ต้องการให้ส่งค่ากลับ ในการเขียนโปรแกรมจะต้องมีการใช้ฟังก์ชัน return( ) ซึ่งถ้าไม่ใช้เวลาที่เรา compile โปรแกรม จะมีคำเตือนให้เราทราบทุกครั้ง แต่โปรแกรมก็สามารถ run ได้

โปรแกรมตัวอย่างที่ 5.2 แสดงการใช้ตัวแปรชุด 1 มิติ สำหรับเก็บข้อมูลและนำข้อมูลในตัวแปรชุดมาคำนวณค่า พร้อมทั้งแสดงผลลัพธ์ที่ได้ออกจอภาพ


/* array2.c */
#include<stdio.h> /* บรรทัดที่ 1 */
#include<conio.h> /* บรรทัดที่ 2 */
#include<stdlib.h> /* บรรทัดที่ 3 */
void main(void) /* บรรทัดที่ 4 */
{ float num[100] ; /* บรรทัดที่ 5 */
float sum= 0 , average ; /* บรรทัดที่ 6 */
int i, n ; char numstr[20]; /* บรรทัดที่ 7 */
clrscr(); /* บรรทัดที่ 8 */
printf("Enter Total of number(n<100) : "); /* บรรทัดที่ 9 */
n = atoi(gets(numstr)); /* บรรทัดที่ 10 */
/* ===== Input Data ===== */ /* บรรทัดที่ 11*/
for( i=0; i<n; i++) { /* บรรทัดที่ 12 */
printf("\nEnter NUMBER #%d : ",i+1); /* บรรทัดที่ 13 */
num[i] = atof(gets(numstr)); /* บรรทัดที่ 14 */
sum=sum+num[i]; /* บรรทัดที่ 15 */
printf("\n"); /* บรรทัดที่ 16 */
} /* end for */ /* บรรทัดที่ 17 */
/* ===== Calulate MEAN ===== */ /* บรรทัดที่ 18 */
average = sum/n ; /* บรรทัดที่ 19 */
printf("N =%d\t Sum =%10.2f\n",n,sum); /* บรรทัดที่ 20 */
printf("Average = %10.2f\n",average); /* บรรทัดที่ 21 */
getch(); /* บรรทัดที่ 22 */
} /* end main */ /* บรรทัดที่ 23 */

ผลลัพธ์ที่ได้จากโปรแกรม


แผนผังลำดับงาน: จอภาพ: Enter Total of number(n<100) : 5  Enter NUMBER # 1 : 4  Enter NUMBER # 2 : 5  Enter NUMBER # 3 : 8  Enter NUMBER # 4 : 90  Enter NUMBER # 5 : 75  N = 5  Sum = 182  Average            =      36.40



คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 5.2 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังน

ี้
บรรทัดที่ 3 คำสั่ง #include <stdlib.h> ให้การสนับสนุนฟังก์ชัน atoi( ) และฟังก์ชัน atof( ) สำหรับโปรแกรมนี้ ในบรรทัดที่ 10 และ 14 ตามลำดับ
บรรทัดที่ 5 ประกาศตัวแปร num เป็นตัวแปรชุด 1 มิติ ชนิด float มีสมาชิก 100 ตัว
บรรทัดที่ 7 ประกาศตัวแปร numstr เป็นตัวแปรชุด 1 ติ ชนิด char มีสมาชิก 20 ตัว
บรรทัดที่ 10 ฟังก์ชัน atoi( ) ใช้เปลี่ยน string เป็นตัวเลขจำนวนเต็ม จากฟังก์ชัน gets( ) รับตัวอักขระมาเก็บไว้ในตัวแปร numstr แล้วเปลี่ยนค่า string ของตัวแปร numstr ไปเก็บไว้ในตัวแปร n โดยใช้ฟังก์ชัน atoi( )
บรรทัดที่ 12 คำสั่ง for ช่วยในการเก็บข้อมูลไว้ในตัวแปรชุด num ซึ่งมีจำนวนรอบของการทำงานเท่ากับจำนวนสมาชิกของตัวแปรชุด คือ n รอบ
บรรทัดที่ 14 ฟังก์ชัน atof( ) ใช้เปลี่ยน string เป็นตัวเลขทศนิยม ซึ่งมีการทำงานคล้ายกับฟังก์ชัน atoi( ) ในบรรทัดที่ 10
บรรทัดที่ 15 คำสั่ง sum = sum + num[i]; เป็นการบวกสะสมค่าตัวแปรชุด
บรรทัดที่ 18 ถึง 21 คำสั่ง average = sum/n; เป็นการคำนวณค่าเฉลี่ยของตัวแปรชุด แล้วแสดงผลค่าตัวแปร n ตัวแปร sum และตัวแปร average ออกจอภาพ
บรรทัดที่ 22 หยุดรอรับค่าใด ๆ จากคีย์บอร์ด ซึ่งถ้าเรากด enter ก็จะกลับสู่โปรแกรม


โปรแกรมตัวอย่างที่ 5.3 แสดงการใช้ตัวแปรชุด 2 มิติ สำหรับเก็บคะแนนและคำนวณค่าเฉลี่ยของคะแนนในแต่ละชุดแสดงผลออกจอภาพ


/* array3.C */
#include<stdio.h> /* บรรทัดที่ 1 */
#include<conio.h> /* บรรทัดที่ 2 */
/* Record student's score */
main() /* บรรทัดที่ 3 */
{ /* บรรทัดที่ 4 */
int i, j, sum, scores[3][5] = { /* บรรทัดที่ 5 */
{ 84 , 71 , 96 , 65 , 79 }, /* บรรทัดที่ 6 */
{ 90 , 55 , 83 , 68 , 96 }, /* บรรทัดที่ 7 */
{ 61 , 77 , 82 , 94 , 59 } /* บรรทัดที่ 8 */
}; /* บรรทัดที่ 9 */
clrscr(); /* บรรทัดที่ 10 */
for (i = 0; i < 3; i++){ /* loop over tests. */ /* บรรทัดที่ 11 */
for (j = 0, sum = 0; j < 5; j++) /* บรรทัดที่ 12 */
sum = sum + scores[i][j]; /* บรรทัดที่ 13 */
printf("Average for test %d is %f.\n", i, (float) sum / 5); /* บรรทัดที่ 14 */
} /* end for */ /* บรรทัดที่ 15 */
getch(); /* บรรทัดที่ 16 */
return(0); /* บรรทัดที่ 17 */
} /* บรรทัดที่ 18 */






ผลลัพธ์ที่ได้จากโปรแกรม


แผนผังลำดับงาน: จอภาพ: Average for test 0 is  79.000000 .  Average for test 1 is  78.400000 .  Average for test 2 is  74.600000 .


คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 5.3 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้


บรรทัดที่ 5 ถึง 9 ประกาศตัวแปรชุด 2 มิติ ชนิดจำนวนเต็มของตัวแปรชื่อ scores มีจำนวนสมาชิกทั้งหมด 15 ตัว
บรรทัดที่ 11 คำสั่ง for เพื่อตรวจสอบว่า loop เกินจำนวนรอบ คือ แถวของตัวแปรชุดหรือไม่
บรรทัดที่ 12 คำสั่ง for เพื่อนำคะแนนที่เก็บในตัวแปรชุดทั้ง 15 ตัวมารวมกัน ในคำสั่งบรรทัดที่ 13
บรรทัดที่ 14 พิมพ์คะแนนเฉลี่ยของนักเรียนทั้ง 5 คน ในการสอบแต่ละครั้ง โดยที่ (float) sum/5 เป็นการทำให้ตัวแปร sum เป็นจำนวนทศนิยมชั่วคราว เพราะปกติเราประกาศตัวแปร sum เป็นชนิดจำนวนเต็ม
บรรทัดที่ 15 หยุดรอรับค่าใด ๆ จากคีย์บอร์ด ซึ่งถ้าเรากด enter ก็จะกลับสู่โปรแกรม



โปรแกรมตัวอย่างที่ 5.4 แสดงการใช้ตัวแปรชุด 2 มิติ สำหรับเก็บชื่อจังหวัด แล้วนำข้อมูลมาแสดงออกที่จอภาพ

/* array4.c */
#include<stdio.h> /* บรรทัดที่ 1 */
#include<conio.h> /* บรรทัดที่ 2 */
#include<stdlib.h> /* บรรทัดที่ 3 */
void main(void) /* บรรทัดที่ 4 */
{ /* บรรทัดที่ 5 */
char province[100][40]; /* บรรทัดที่ 6 */
int i, n; char numstr[20]; /* บรรทัดที่ 7 */
clrscr( ); /* บรรทัดที่ 8 */
printf("Enter Total of Province (n<100) : " ); /* บรรทัดที่ 9 */
n = atoi(gets(numstr)); /* บรรทัดที่ 10 */
for( i=0; i<n; i++) { /* บรรทัดที่ 11 */
printf("\nEnter your Province : "); /* บรรทัดที่ 12 */
gets( province[i] ) ; /* บรรทัดที่ 13 */
} /* บรรทัดที่ 14 */
for( i=0; i<n; i++) /* บรรทัดที่ 15 */
printf("\nYour Province is %s", province[i]); /* บรรทัดที่ 16 */
getch(); /* บรรทัดที่ 17 */
} /* end main */ /* บรรทัดที่ 18 */


ผลลัพธ์ที่ได้จากโปรแกรม


แผนผังลำดับงาน: จอภาพ: Enter Total of Province (n<100) : 3  Enter your Province : Nakhonphanom  Enter your Province : Sakon nakhon  Enter your Province : Mookdahan  Your Province is Nakhonphanom  Your Province is Sakon nakhon  Your Province is Mookdahan


คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 5.4 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้


บรรทัดที่ 3 คำสั่ง #include <stdlib.h> ให้การสนับสนุนฟังก์ชัน atoi( ) เพื่อเปลี่ยนข้อมูลสตริงเป็นชนิดจำนวนเต็ม ซึ่งเรียกใช้ฟังก์ชันนี้ ในบรรทัดที่ 10
บรรทัดที่ 11 คำสั่ง for เพื่อนำค่าสตริงที่รับเข้ามาไปเก็บไว้ในตัวแปรชุด province[i] ในคำสั่งบรรทัดที่ 13
บรรทัดที่ 15 คำสั่ง for เพื่อนำค่าสตริงที่เก็บไว้ในตัวแปร province[i] ออกแสดงที่จอภาพ ตามคำสั่ง บรรทัดที่ 16
บรรทัดที่ 17 หยุดรอรับค่าใด ๆ จากคีย์บอร์ด ซึ่งถ้าเรากด enter ก็จะกลับสู่โปรแกรม

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

มุมแซตมันๆ คับผม