วันพุธที่ 17 กันยายน พ.ศ. 2557

06:56
8.4 การรับข้อมูลจากคีย์บอร์ดเพื่อนำไปเก็บไว้ในตัวแปรภายในโครงสร้าง
            บางครั้งเราอาจจะต้องรับข้อมูลผ่านทางคีย์บอร์ดเพื่อนำไปเก็บไว้ในตัวแปรภายในข้อมูลแบบโครงสร้าง  ซึ่งมีวิธีการรับข้อมูลดังโปรกรมตัวอย่างต่อไปนี้
โปรแกรมตัวอย่างที่  8.3 แสดงการรับข้อมูลจากคีย์บอร์ดเพื่อนำไปเก็บไว้ในตัวแปรภายในโครงสร้าง  และแสดงออกจอภาพ

/*             ipstruc1.c              */
#include <stdio.h>                             /* gets() in  this file */           /*  บรรทัดที่  1  */
#include <stdlib.h>            /* atoi(),atof() in this file */                           /*  บรรทัดที่  2  */
#include <conio.h>                                                                              /*  บรรทัดที่  4  */
void main(void)                                                                                       /*  บรรทัดที่  5  */
{                                                                                                           /*  บรรทัดที่  6  */
      struct      person                                                                           /*  บรรทัดที่  7  */
{                                                                                                     /*  บรรทัดที่  8  */
      char  name[20];                                                                   /*  บรรทัดที่  9  */
      float salary;                                                                            /*  บรรทัดที่  10 */
      int   age;                                                                                      /*  บรรทัดที่  11 */
};                                                                                                /*  บรรทัดที่  12  */
      struct      person   one;                                                            /*  บรรทัดที่  13  */
      char numstr[81];                                                                      /*  บรรทัดที่  14  */
      clrscr();                                                                                      /*  บรรทัดที่  15  */
      printf("\n *** Person Data ***\n\n Enter name : ");                 /*  บรรทัดที่  16  */
      gets(one.name);                                                                        /*  บรรทัดที่  17  */
      printf("Enter salary : ");                                                           /*  บรรทัดที่  18  */
      gets(numstr);                                                                            /*  บรรทัดที่  19  */
      one.salary=atof(numstr);                                                        /*  บรรทัดที่  20  */
      printf("Enter age : ");                                                                /*  บรรทัดที่  21  */
      gets(numstr);                                                                                  /*  บรรทัดที่  22  */
      one.age=atoi(numstr);                                                              /*  บรรทัดที่  23  */
      printf("\n\nName = %s\n",one.name);                                    /*  บรรทัดที่  24  */
      printf("Salary = %f\n",one.salary);                                           /*  บรรทัดที่  25  */
      printf("Age = %d\n",one.age);                                                  /*  บรรทัดที่  26  */
      printf("\n\nPress any key back to program...");                        /*  บรรทัดที่  27  */
      getch();                                                                                    /*  บรรทัดที่  28  */
}                                                                                                  /*  บรรทัดที่  29  */
ผลลัพธ์ที่ได้จากโปรแกรม

แผนผังลำดับงาน: จอภาพ: *** Person Data ***  Enter name : Napa  Enter salary : 10000  Enter age : 21    Name  = Napa  Salary  = 10000  Age = 21    Press any key back to program ...
คำอธิบายโปรแกรม 
            จากโปรแกรมตัวอย่างที่  8.3  สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้

บรรทัดที่  7  ประกาศข้อมูลแบบโครงสร้าง  โดยที่  person  เป็นชื่อข้อมูลแบบโครงสร้าง
บรรทัดที่  13  ประกาศตัวแปรโครงสร้างชื่อ  one
บรรทัดที่  17  รับข้อมูลที่ผู้ใช้เติมจากคีย์บอร์ด  แล้วนำไปเก็บไว้ในตัวแปร  name  ภายในโครงสร้าง  one
บรรทัดที่  19  และ  20    รับข้อมูลที่ผู้ใช้เติมจากคีย์บอร์ด  แล้วนำไปเก็บไว้ในตัวแปร  numstr  แล้วแปลงค่าที่รับเข้ามาเป็นจำนวนทศนิยม  ไปเก็บไว้ในตัวแปร  salary  ภายในโครงสร้าง  one
บรรทัดที่  22  และ  23    รับข้อมูลที่ผู้ใช้เติมจากคีย์บอร์ด  แล้วนำไปเก็บไว้ในตัวแปร  numstr  แล้วแปลงค่าที่รับเข้ามาเป็นจำนวนเต็ม  ไปเก็บไว้ในตัวแปร  age  ภายในโครงสร้าง  one
บรรทัดที่  24  และ  26    นำค่าตัวแปร  name, salary  และ  age ภายในโครงสร้าง  one  แสดงออกที่จอภาพ
โปรแกรมตัวอย่างที่  8.4 แสดงการรับข้อมูลจากคีย์บอร์ดเพื่อนำไปเก็บไว้ในตัวแปรภายในโครงสร้าง  และคัดลอกจากโครงสร้างหนึ่งไปอีกโครงสร้างหนึ่งแล้วแสดงผลออกจอภาพ


/*             ipstru2.c                                */
#include <stdio.h>             /* gets() in  this file */                            /*  บรรทัดที่  1  */
#include <stdlib.h>     /* atoi(),atof() in this file */                                /*  บรรทัดที่  2  */
#include <conio.h>                                                                          /*  บรรทัดที่  3  */
void main(void)                                                                                /*  บรรทัดที่  4  */
{                                                                                                      /*  บรรทัดที่  5  */
      struct      person                                                                        /*  บรรทัดที่  6  */
{                                                                                                        /*  บรรทัดที่  7  */
      char  name[20];                                                                   /*  บรรทัดที่  8  */
      float salary;                                                                            /*  บรรทัดที่  9  */
      int   age;                                                                             /*  บรรทัดที่  10  */
};                                                                                               /*  บรรทัดที่  11  */
      struct      person   one ,two;                                                 /*  บรรทัดที่  12  */
      char numstr[81];                                                                      /*  บรรทัดที่  13  */
      clrscr();                                                                                     /*  บรรทัดที่  14  */
      printf("\n *** Person Data ***\n\n Enter name : ");                      /*  บรรทัดที่  15  */
      gets(one.name);                                                                           /*  บรรทัดที่  16  */
      printf("Enter salary : ");                                                                 /*  บรรทัดที่  17  */
      gets(numstr);                                                                              /*  บรรทัดที่  18  */
      one.salary=atof(numstr);                                                             /*  บรรทัดที่  19  */
      printf("Enter age : ");                                                                 /*  บรรทัดที่  20  */
      gets(numstr);                                                                                /*  บรรทัดที่  21  */
      one.age=atoi(numstr);                                                                /*  บรรทัดที่  22  */
      two = one;             /*copy struct one to struct two*/                  /*  บรรทัดที่  23  */
      printf("\n\nName1 = %s\n",one.name);                                      /*  บรรทัดที่  24  */
      printf("Salary1 = %f\n",one.salary);                                             /*  บรรทัดที่  25  */
      printf("Age1 = %d\n",one.age);                                                   /*  บรรทัดที่  26  */
      printf("\n\nName2 = %s\n",two.name);                                   /*  บรรทัดที่  27  */
      printf("Salary2 = %f\n",two.salary);                                            /*  บรรทัดที่  28  */
      printf("Age2 = %d\n",two.age);                                                /*  บรรทัดที่  29  */
      printf("\n\nPress any key back to program...");                        /*  บรรทัดที่  30  */
      getch();                                                                                     /*  บรรทัดที่  31  */
}                                                                                               /*  บรรทัดที่  32  */
ผลลัพธ์ที่ได้จากโปรแกรม

แผนผังลำดับงาน: จอภาพ: *** Person Data ***  Enter name : Janda  Enter salary : 100000  Enter age : 21    Name1 = Janda  Salary1 = 100000  Age1 = 21    Name2 = Janda  Salary2 = 100000  Age2 = 21      Press any key back to program...
คำอธิบายโปรแกรม 
            จากโปรแกรมตัวอย่างที่  8.4  สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่  23  สำหรับคำสั่ง  two  =  one;  ที่อยู่ในโปรกรม  ipstru2.c  เป็นคำสั่งให้คัดลอกข้อมูลที่อยู่ในตัวแปรทุกตัวภายในโครงสร้าง  one  ไปเก็บไว้ในโครงสร้าง  two  โดยมีค่าข้อมูลเหมือนกันทุกประการ  (ดูรูปที่  8.3  ประกอบความเข้าใจ)

0 ความคิดเห็น:

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