SlideShare a Scribd company logo
1 of 15
Download to read offline
!

                                            บทที่ 6
                                       อารเรย (Array)

♦! วามหมายของขอมลชนดอารเ รย(array)
 ค             ู ิ         
        อารเ รย (array) เปนขอมูลชนิดมีโครงสราง (structure) หมายถึงเปนขอมูลชุดหนึ่งมีจํานวนนวน
สมาชิกขอมูลแนนอนและตองเปนชนิดเดียวกันทั้งชุด แตละรายการของขอมูลในชุดนั้น ๆ เรยกวา สมาชิก
                                                                                         ี 
ของอารเรย (element of array) สมาชิกแตละตัวมีตัวชี้ตาแหนงทอยู เรยกวา อินเด็กซ (index) เพื่อใช
                                                         ํ      ่ี    ี 
สําหรับการอางอิงถึงขอมูลแตละสมาชิก โดยอินเด็กซเปนขอมูลชนิดที่มีลาดบ เชน integer
                                                                      ํ ั 
        ตัวอยางขอมูลชนิดอารเรย 1 มิติ เชน คะแนนสอบของนักศึกษา 10 คน เปนตัวเลขประเภท int
กําหนดเปนโครงสรางของอารเ รยดงน้ี
                                ั
                                        นักศึกษาคนที่ (index)
                  [0]   [1]     [2]     [3] [4] [5] [6]                 [7]      [8]     [9]
คะแนนที่ได ! 20 ! 25 ! 15 ! 30 ! 28 ! 16 ! 23 ! 24 ! 30 ! 26

                                                             !   ขอมลในอาเรย
                                                                   ู


       ความหมายของขอมูลในอารเรยโดยใช index เปนตัวชี้ขอมูลในแตละชอง เปนดังนี้
       อารเรยชองที่ [0] มีคาคะแนนนักศึกษา คนที่ 1 เก็บอยู คือ 20
       อารเรยชองที่ [1] มีคาคะแนนนักศึกษา คนที่ 2 เก็บอยู คือ 25
       อารเรยชองที่ [2] มีคาคะแนนนักศึกษา คนที่ 3 เก็บอยู คือ 15
       อารเรยชองที่ [3] มีคาคะแนนนักศึกษา คนที่ 4 เก็บอยู คือ 30
       อารเรยชองที่ [4] มีคาคะแนนนักศึกษา คนที่ 4 เก็บอยู คือ 28
       อารเรยชองที่ [5] มีคาคะแนนนักศึกษา คนที่ 4 เก็บอยู คือ 16
       อารเรยชองที่ [6] มีคาคะแนนนักศึกษา คนที่ 4 เก็บอยู คือ 23
       อารเรยชองที่ [7] มีคาคะแนนนักศึกษา คนที่ 4 เก็บอยู คือ 24
       อารเรยชองที่ [8] มีคาคะแนนนักศึกษา คนที่ 4 เก็บอยู คือ 30
       อารเรยชองที่ [9] มีคาคะแนนนักศึกษา คนที่ 10 เก็บอยู คือ 26
       ถาคะแนนทีเ่ ก็บเปนขอมูลชนิด int จะจองพืนทีหนวยความจําในการเก็บขอมูล 2 byte *
                                                   ้ ่
10 ชอง เทากับ 20 byte


ศิริชัย นามบุรี                                                                        อารเรย(Array)
!                                                   82

        หมายเหตุ การจองพืนทีหนวยความจําของอารเรยจะจองพืนทีในหนวยความจําตอเนืองกัน
                               ้ ่                        ้ ่                    ่
ไป ตั้งแตสมาชิกเริ่มตนตัวที่ 0 จนถึงตัวสุดทาย

♦!ขอมลอารเ รยชนด 1 มิติ
    ู         ิ
           ขอมลชนดอารเ รย 1 มิติ หมายถึง อารเรยที่มีอินเด็กซในการอางอิงถึงแตละสมาชิกเพียง 1 ตัว
             ู ิ
           1. การกําหนดขอมลชนดอารเ รย 1 มิติ ในโปรแกรม มรปแบบดงน้ี
                         ู ิ                                     ีู      ั
                  ! Array_Type Array_name[amount of element];

      โดยที่ Array_Type คือ ชนิดขอมูล (data type) ในอารเรยหรือประเภทอารเรย เชน int, char, float
                                                                                  
             Array_name คือ ชอของตวแปรอารเ รย
                               ่ื     ั
             [amount of element] คือ จํานวนสมาชกหรอรายการของอารเ รย
                                                   ิ ื
      ตัวอยางขอมูลคะแนนนักศึกษา จํานวน 10 คน เชน  
                                     นกศกษาคนท่ี (index)
                                        ั ึ
               [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
คะแนนที่ได ! 20 ! 25 ! 15 ! 30 ! 28 ! 16 ! 23 ! 24 ! 30 ! 26

        กําหนดตัวแปรอารเรยเก็บคะแนนเปนชนิด int และจองจํานวนสมาชิกไว 10 รายการ ดังนี้
        int score[10];
        2. การอางถึงสมาชิกและขอมูลในอารเรย การอางถึงแตละสมาชิกของอารเรยทาไดโดยการเขยน
                                                                                  ํ       ี
ชื่อของอารเรยและระบบอินเด็กซของสมาชิกไวใน [ ] โดยอินเด็กซเริมตัง 0 ถึง n-1 (n คอจํานวน
                                                                  ่ ้                 ื
สมาชิกของอารเรยทั้งหมด) เชน  
                 score[0]มขอมล 20 เก็บอยู
                            ี ู
                 score[1]มขอมล 25 เก็บอยู
                            ี ู
                 score[5]มขอมล 16 เก็บอยู
                            ี ู
                 score[9]มขอมล 26 เก็บอยู
                            ี ู
        3. การกําหนดคาใหอารเรย การกาหนดคาใหแกอารเ รย 1 มิติ มีวิธีการดังนี้
                                        ํ       
                 3.1 การกาหนดคาคงทใหกบอารเ รย เชน
                          ํ        ่ี  ั         
                         score[0] = 20;
                         score[1] = 25;
                         score[2] = 15;
                         score[9 ]= 26;


ศิริชัย นามบุรี                                                                           อารเรย(Array)
!                                                    83

           สามารถกาหนดคาของอารเรย เปน constant โดยระบจานวนสมาชิกหรือไมระบุก็ไดดังนี้
                  ํ                                        ุํ
                       const int score[10] = { 20,25,30,26,24,18,17,25,24,22};
                       const int score[] = { 20,25,30,26,24,18,17,25,24,22};

                3.2 การกาหนดคาใหอารเ รยจากตวแปร เชน
                         ํ                ั            
                        x = 20; y = 26;
                        score[0] = x;
                        score[9] = y;
       4. การรบขอมลทางคียบอรดเกบในอาเรยโดยใชคาสั่งลูป เพื่อความสะดวกและความยืดหยุนใน
               ั  ู            ็                   ํ
โปรแกรม เราสามารถรับคาคงที่เขาไปเก็บไวในอารเรยแตละสมาชิกโดยใชลูป for, while , do เชน
                for( no=0 ; no<=9; ++no)
                        cin>>score[no]; //enter from keyboard to array and no is index
       5. การแสดงผลขอมลอารเ รย สามารถแสดงผลขอมลในอารเ รยแตละสมาชกได โดยการอางชอ
                         ู                              ู                      ิ              ่ื
และอินเด็กซ โดยใชลูป for , while ,do เพอแสดงผลขอมลในอารเ รยทงหมดได เชน
                                       ่ื           ู            ้ั          
                for(no=0;no<=9;++no)
                        cout<<score[no]<<endl; //display data all element of array and no is index

        •! ตัวอยางโปรแกรม array1.cpp แสดงการรับคาคะแนนนักศึกษา 10 คน เกบไวในอารเ รย
                                                                         ็ 
             คํานวณหาผลรวมคะแนนทงหมดและคานวณหาคาเฉลี่ยของคะแนน พรอมแสดงผลขอมูล
                                         ้ั         ํ
             จากอารเ รยทงหมด
                         ้ั
/*Program : array1.cpp
 Process : input and display data for array 1 dimension */
    #include <iostream.h>
    #include <conio.h>
    void main() //begin program
    { int no,score[10];
     float avg=0,sum=0;
     clrscr();
     //input integer constant to array
     cout<< "Please enter score of student 10 personsnn";
     for(no=0;no<=9;++no)
     { cout<< "Std.#"<<no+1<<" : ";
        cin>>score[no];
     }

ศิริชัย นามบุรี                                                                       อารเรย(Array)
!                                                    84
    cout<< "O.K. you enter complete...press any key to displayn";
    getch();clrscr();
//display value of each element of array
   cout<< "Display your enter score :n";
   for(no=0;no<=9;++no)
   { cout<< "Std.#"<<no+1<<" : "<<score[no];
     cout<<endl;
     sum+=score[no]; //calculate summation
   }
   avg=sum/10.0; //calculate average of score
   cout<<"Summation of score = "<<sum<<endl;
   cout<<"Average of score = "<<avg<<endl<<'a';
   getch();
} //end program

           •! ตัวอยางโปรแกรม arr_func.cpp แสดงการรับคาคะแนนนักศึกษา 10 คน เกบไวในอารเ รย
                                                                              ็ 
              คํานวณหาผลรวมคะแนนทงหมดและคานวณหาคาเฉลี่ยของคะแนน พรอมแสดงผลขอมูล
                                       ้ั        ํ
              จากอารเ รยทงหมด แตเขียนแยกเปนฟงกชนทําหนาที่แยกกัน
                          ้ั                       ั
/*Program : arr_func.cpp
 Process : define input and display data for array 1 dimension */
 #include <iostream.h>
 #include <conio.h>
 //declaration prototype function
 void input();
 void display();
 //declaration external variable
 int score[10];
 float avg=0,sum=0;
 void main() //begin main program
 {
   clrscr();
   input(); //call function
   display(); //call function
   avg=sum/10.0; //calculate average of score
   cout<<"Summation of score = "<<sum<<endl;
   cout<<"Average of score = "<<avg<<endl<<'a';
getch();
 } //end main program
 void input() //input() function for enter integer constant to array

ศิริชัย นามบุรี                                                                อารเรย(Array)
!                                                     85
    { int no;
      cout<< "Please enter score of student 10 personsnn";
      for(no=0;no<=9;++no)
      { cout<< "Std.#"<<no+1<<" : ";
        cin>>score[no];
      }
      cout<< "O.K. you enter complete...press any key to displayn";
      getch();clrscr();
    }
    void display() //display() function for show value of each element of array
    { int no;
      cout<< "Display your enter score :n";
      for(no=0;no<=9;++no)
      { cout<< "Std.#"<<no+1<<" : "<<score[no];
        cout<<endl;
        sum+=score[no]; //calculate summation
      }
    }

♦! ารเรย 2 มิติ
 อ
        อารเรย 2 มิติ (two-dimension array) หมายถึง อารเรยทมตวอินเด็กซสาหรบการอางถงขอมล
                                                               ่ี ี ั       ํ ั      ึ  ู
จํานวน 2 ชุด คือ อนเดกซชแนวแถว(row) และแนวคอลัมน (column)
                    ิ ็  ้ื
        ลักษณะของขอมูลชนิดที่เปนอารเรย 2 มิติ เชน คะแนนสอบของนักศึกษาจํานวน 10 คน ทั้ง
                                                    
หมด 3 วิชา ดงตาราง
              ั
                                 นักศึกษาคนที่                               ! แนวคอลัมน
                                                                          คะแนนวิชา
                                                       คณิตศาสตร         ภาษาอังกฤษ วิทยาศาสตร
! แนวแถว                                1                   25                    30         35
                                        2                   28                    25         32
                                        3                   30                    29         33
                                        4                   29                    30         35
                                        5                   35                    20         37
                                        6                   26                    31         30
                                        7                   20                    26         30
                                        8                   26                    25         24
                                        9                   29                    30         35
                                       10                   26                    32         25


ศิริชัย นามบุรี                                                                        อารเรย(Array)
!                                                 86

         จากตาราง 2 มิติขางบน ถาตองการเก็บคะแนนสอบของนักศึกษาดังกลาว สามารถใชตัวแปร
อารเรยชนิด 2 มตเิ พอเกบขอมลชดนได สังเกตจากตารางดังกลาว (เฉพาะที่เปนขอมูลตัวเลขคะแนน)
                   ิ ่ื ็  ู ุ ้ี
ประกอบดวย 10 แถว และ 3 คอลัมน ตวอยาง การอานคะแนนจากตาราง แถวที่ 5 คอลัมนที่ 3 คือ 37
                                     ั            
เปนคะแนนของนักศึกษาคนที่ 5 วิชาที่ 3 คือ วิชาวิทยาศาสตร
         1. การกําหนดอารเรย 2 มิติ การประกาศตวแปรประเภทอารเ รย 2 มิติ มรปแบบดงน้ี
                                                 ั                         ีู    ั
                  ! Array_Type Array_name[row][column];

          โดยที่ Array_Type คือ ชนิดขอมูลในอารเรยหรือประเภทอารเรย 2 มิติ เชน char , int ,
                                                                                      
float ,double
                     Array_name คือ ชอของตวแปรอารเ รย 2 มิติ
                                              ่ื     ั
                     [row]            คือ จํานวนสมาชิกหรือรายการของอารเรยในแนวแถว
                     [column] คือ จํานวนสมาชิกหรือรายการของอารเรยในแนวคอลัมน
                     การคํานวณจานวนรายการหรอสมาชิกของอารเ รย 2 มิติ คือ row*column
                                  ํ                    ื
          2. การอางองถงสมาชกอารเ รย 2 มิติ มีวธการอางอิงโดยการเขียนชืออารเรย และอินเด็กซของ
                     ิ ึ           ิ                    ิี                  ่
สมาชิกนั้น เชน  
                     score[3][2] หมายถึงสมาชิกอารเรยตําแหนงแถวที่ 3 คอลัมนที่ 2
                     score[0][3] หมายถึงสมาชิกอารเรยตําแหนงแถวที่ 0 คอลัมนที่ 3
          3. การกําหนดคาใหอารเรย 2 มิติ มีวิธีการกาหนดคาเชนเดยวกบอารเ รย 1 มิติ คือกําหนดคาคงที่
                                                            ํ     ี ั
ใหกบอารเ รย เชน
   ั             
                     score[3][2] = 25;
                     score[2][1] = 30;
                     x = 35;
                     score[3][3] = x;
                     ถาตองการกําหนดคาอารเ รย 2 มิติเปนลักษณะ constant กําหนดไดเ ชนเดยวกบอารเ รย
                                                                                        ี ั
1 มิติ ดังนี้
                     const int score[5][3] = { {25,30,22},
                                                    {30,25,20},
                                                    {25,24,18},
                                                    {22,21,24},
                                                    {20,18,17}
                                                 };
          หรือไมตองระบบจํานวนแถวของอารเ รย ดังนี้
                     

ศิริชัย นามบุรี                                                                          อารเรย(Array)
!                                              87

                const int score[][3] = { {25,30,22},
                                          {30,25,20},
                                          {25,24,18},
                                          {22,21,24},
                                          {20,18,17}
                                       };
                   โดยทมตแรก คือ จานวนแถวไมตองระบุก็ได C++ compiler จะทราบเองจากการตรวจ
                         ่ี ิ ิ      ํ
สอบเซตของคาคงที่ที่กาหนดในลักษณะ const
                       ํ
                เพื่อความสะดวกและความยืดหยุนในโปรแกรม การกาหนดคาใหอารเรยโดยการรับคา
                                                                  ํ
จากการกรอกทางคียบอรด จะใชลูป for, while หรือ do จํานวน 2 ลูปซอนกันเพื่อรับขอมูลไปเก็บไวใน
อารเรย สามารถกาหนดลูปได 2 ลักษณะ
                 ํ
                - กรอกในแนวแถวกอน เชน จากขอมูลตัวอยาง จะกรอกคะแนนของนักศึกษาคนที่ 1
                                             
ใหครบทั้ง 3 วิชากอน แลวจึงเริ่มกรอกคะแนนของนักศึกษาคนที่ 2 ใหครบทุกวิชา ทาเชนนเ้ี รอย ๆ จนถึง
                                                                             ํ  ่ื
คะแนนคนที่ 10 วิชาที่ 3 ดังตัวอยางการใชลูป for

                       for(std_no=0;std_no<=9;++std_no) //ลปนอก
                                                              ู
                               for(subj_no=0;subj_no<=2;++subj_no) //ลูปใน
                                       cin>>score[std_no][subj_no];

                       std_no คือ ตวแปรเกบคาตวชตาแหนงแถวหรือนักศึกษาคนที่ 0 - 9
                                    ั     ็  ั ้ี ํ
                       subj_no คือ ตวแปรเกบคาตวชตาแหนงคอลัมนหรือวิชาที่ 0-2
                                      ั    ็  ั ้ี ํ

               - กรอกในแนวคอลมนกอน เชน จากขอมูลตัวอยาง จะกรอกคะแนนนักศึกษาของวิชาที่
                                  ั         
1 ใหครบทั้ง 10 คนกอน จากนันจึงเริมกรอกวิชาที่ 2 ใหครบกอน แลวจงเรมกรอกคะแนนวชาท่ี 3 จน
                            ้      ่                               ึ ่ิ              ิ
กวาจะกรอกคะแนนวิชาที่ 3 ของนักศึกษาคนที่ 10 ซึ่งเปนคนสุดทาย ดังตัวอยางการใชลูป for
                      for(subj_no=0;subj_no<=2;++subj_no) //ลปนอกู
                               for(std_no=0;std_no<=9;++std_no) //ลูปใน
                                        cin>>score[std_no][subj_no];
                      //subj_no คือ ตัวแปรเก็บคาของคอลัมนหรือวิชาที่ 0-2
                      //std_no คือ ตวแปรเกบคาของแถวหรอนกศกษาคนท่ี 0 - 9
                                      ั     ็             ื ั ึ




ศิริชัย นามบุรี                                                                    อารเรย(Array)
!                                                  88

       4. การแสดงผลอารเรย 2 มิติ การแสดงผลขอมูลแตละสมาชิกในอารเรย 2 มิติ มีวิธีการใชลูป 2
ลูปซอนกัน เหมือนกับการกาหนดคาเชนเดยวกน เพียงแตใช cout แทน cin เพอแสดงคาตวแปร จากตว
                           ํ        ี ั                                    ่ื  ั            ั
อยางคะแนนสอบนักศึกษา 10 คน 3 วิชา สามารถเขียนลูป for เพื่อแสดงผลได ดังนี้
                - กรณีแสดงคาแนวแถวกอน
                        for(std_no=0;std_no<=9;++std_no) //ลปนอกู
                                for(subj_no=0;subj_no<=2;++subj_no) //ลูปใน
                                         cout>>score[std_no][subj_no];
                - กรณีแสดงคาแนวคอลัมนกอน
                        for(subj_no=0;subj_no<=2;++subj_no) //ลปนอกู
                                for(std_no=0;std_no<=9;++std_no) //ลูปใน
                                         cin>>score[std_no][subj_no];
                        //subj_no คือ ตัวแปรเก็บคาของคอลัมนหรือวิชาที่ 0-2
                        //std_no คือ ตวแปรเกบคาของแถวหรอนกศกษาคนท่ี 0 - 9
                                       ั      ็            ื ั ึ

           •! ตัวอยางโปรแกรม arr_2dim.cpp แสดงการรับคาและแสดงคาอารเรย 2 มิติ คะแนนสอบ
              ของนกศกษา 10 คน เปนจานวนเต็ม วิชาที่สอบ 3 วิชา โดยการกรอกขอมูลเปนรายคน ได
                     ั ึ             ํ
              ดังนี้

/*Program : arr_2dim.cpp
 Process : define input and display data for array 2 dimension */
    #include <iostream.h>
    #include <conio.h>
    //declaration prototype function
    void input();
    void display();
    //declaration external variable
    int score[10][3];
void main() //begin main program
 {
   clrscr();
   input();
   display();
   cout<< "nnO.K. press any key to exitna";
   getch();
 } //end main program

ศิริชัย นามบุรี                                                                   อารเรย(Array)
!                                                  89
void input() //input() function for enter integer constant to array
  { int std_no,subj_no,col,row;
   cout<< "Please enter score of student 10 personsnn";
   gotoxy(5,3);cout<<"Std # Math English Science";
   col=15;row =5; //varaible for function gotoxy()
   for(std_no=0;std_no<=9;++std_no)
   { gotoxy(7,row); //skip cursor to enter data position
     cout<<std_no+1;
     for(subj_no=0;subj_no<=2;++subj_no)
      { gotoxy(col,row);
        cin>>score[std_no][subj_no];
        col+=15; //increase column position
       }
     row++; //increase row position
     col=15; //set column at old position in new row (next student)
   }
   cout<< "O.K. you enter complete...press any key to displayna";
   getch();clrscr();
 }
void display() //display() function for display score
 { int std_no,subj_no,col,row;
   cout<< "*** Display score of student 10 persons 3 subjects ***nn";
   gotoxy(5,3);cout<<"Std # Math English Science";
   col=15;row =5;
   for(std_no=0;std_no<=9;++std_no)
   { gotoxy(7,row);
     cout<<std_no+1;
     for(subj_no=0;subj_no<=2;++subj_no)
      { gotoxy(col,row);
        cout<<score[std_no][subj_no];
        col+=15;
       }
     row++; col=15;
   }
 }




ศิริชัย นามบุรี                                                           อารเรย(Array)
!                                                 90

♦! ารเรย 3 มิติ
 อ
       อารเรย 3 มิติ (3 dimension array) เปนอารเ รยทมอนเดกซอางองถงตําแหนงขอมลจํานวน 3 ชุด
                                                      ่ี ี ิ ็   ิ ึ     ู
คือ แถว, คอลัมน และแนวลึก ตัวอยางขอมูลที่สามารถนามาเก็บในลักษณะของอารเรย 3 มตได เชน
                                                             ํ                      ิ ิ   
คะแนนสอบนักศึกษา จํานวน 5 คน(แถว) วิชาสอบทั้งหมด 3 วิชา(คอลัมน) แตละวิชาสอบ 2 ครัง(ลึก)
                                                                                        ้
มขอมลดงตารางตอไปน้ี
  ี ู ั          
                                                               ! แนวคอลัมน มีทั้งหมด 3 คอลัมน

                                                                   คะแนนวิชา
                  นักศึกษาคนที่         คณิตศาสตร                 ภาษาอังกฤษ                วิทยาศาสตร
                                    ครั้งที่ 1   ครั้งที่ 2     ครั้งที่ 1   ครั้งที่ 2   ครั้งที่ 1    ครั้งที่ 2
    ! แนวแถว            1              24           25             28           30           20            35
    ! ทั้งหมด           2              26           28             24           25           30            32
    ! 5 แถว
                        3              31           30             30           29           26            33
                        4              25           29             25           30           30            35
                        5              30           35             18           20           32            37
                                                              ! แตละคอลัมนมแนวลึกอีก 2 แนวลึก
                                                                             ี


           จากขอมูลคะแนนทั้งหมดในตาราง เปรยบเทยบกบโครงสรางขอมลอารเ รยแบบ 3 มิติ ไดดงน้ี
                                               ี ี ั             ู               ั
           แนวแถว        แทน จํานวนนักศึกษา 5 คน
           แนวคอลมน แทน จํานวนวชา 3 วิชา
                    ั                  ิ
           แนวลึก        แทน จํานวนครงทสอบ 2 ครัง
                                         ้ั ่ี      ้
           1. การกําหนดขอมลอารเ รย 3 มิติ มีรูปแบบการกําหนด ดังนี้
                         ู

                    Array_Type Array_name[row][column][depth];
           โดยที่ Array_Type คือ ชนิดขอมูลในอารเรยหรือประเภทของอารเรย 3 มิติ
                  Array_name คือ ชอของตวแปรอารเ รย 3 มิติ
                                         ่ื   ั
                  [row]         คือ จํานวนสมาชิกหรือรายการของอารเรยในแนวแถว
                  [column]      คือ จานวนสมาชิกหรือรายการของอารเรยในแนวคอลัมน
                                     ํ
                  [depth]       คือ จานวนสมาชิกหรือรายการในแนวลึก
                                       ํ
           จานวนสมาชิกของอารเรย 3 มิติ เทากบ row*column*depth เชน int score[5][3][2];
            ํ                                ั                   
                  จะมจํานวนสมาชกของอารเ รยทงหมด 5*3*2 = 30 สมาชิก
                      ี         ิ                ้ั


ศิริชัย นามบุรี                                                                                อารเรย(Array)
!                                                 91

          2. การอางถงสมาชกอารเ รย 3 มิติ ตองเขียนชืออารเรยและตามดวยอินเด็กซทง 3 ชุด เชน
                   ึ         ิ                         ่                            ้ั          
                   score[0][1][0]; หมายถึง คะแนนสอบของนักศึกษาคนที่ 1 วิชาที่ 2 สอบครั้งที่ 1 เนือง ่
จากอนเดกซเ รมท่ี 0
       ิ ็ ่ิ
          3. การกําหนดคาใหกับอารเรย 3 มิติ มีวิธีการกาหนดเชนเดยวกบอารเ รย 2 มิติ เพียงแตตองเพิม
                                                            ํ        ี ั                           ่
ตําแหนงอนเดกซชดท่ี 3 (แนวลึก) เชน
          ิ ็  ุ                      
                   score[0][1][1] = 25;
                   score[4][2][0] = 30;
                   การกําหนดเปน constant ตองกําหนดคาคงทใหกบอารเ รยใหครบทกชอง ดังนี้
                                                               ่ี  ั            ุ 
                   const int score[5][3][2] = {
                                                     { {25,24},{21,23},{24,23} },
                                                     { {24,20},{29,30},{28,29} },
                                                     { {27,32},{24,29},{29,30} },
                                                     { {24,29},{24,30},{25,28} },
                                                     { {24,35},{28,21},{28,23} }
                                                     };
          เราสามารถใชลูป for, while หรอ do กําหนดคาโดยการกรอกขอมลทางคยบอรดได โดยใชคา
                                           ื                             ู      ี                 ํ
สั่งลูปซอนกัน 3 ลูป ตัวอยางการใชลูป for ดังนี้
                   for(std_no=0;std_no<=4;++std_no)
                           for(subj_no=0;subj_no<=2;++subj_no)
                                    for(time_no=0;time_no<=1;++time_no)
                                             cin>>score[std_no][subj_no][time_no]; //input from
                                                                                        keyboard

       4. การแสดงผลจากอารเ รย 3 มิติ สามารถใชลูป for, while หรือ do ตัวอยางเชน การใชลูป for
แสดงคาในอารเรย score[5][3][2] เปนดงน้ี
                                    ั
               for(std_no=0;std_no<=4;++std_no)
                        for(subj_no=0;subj_no<=2;++subj_no)
                                for(time_no=0;time_no<=1;++time_no)
                                        cout<<score[std_no][subj_no][time_no]; //display




ศิริชัย นามบุรี                                                                          อารเรย(Array)
!                                               92

♦! ารสงคาอารเ รยใหฟงกชน
 ก                 ั
          ชอของอารเ รยสามารถใชเ ปนอารกวเมนตสงใหแกฟงกชนได ทาใหสามารถสงอารเรยทั้งชุดไป
           ่ื                      ิ            ั         ํ
ใหแกฟงกชัน เพือนําคาของอารเรยไปใชในฟงกชันได แตวิธีการการสงอารเรยไปใหฟงกชันมีขอ
                      ่
แตกตางจากการสงตัวแปรธรรมดา คือในการสงอารเรยไปใหแกฟงกชันนั้นจะตองเขียนเฉพาะชื่อของ
อารเ รยไมตองกาหนดตัวชีหรือ index สวนในการกําหนดพารามิเตอรรอรับคาของอารเรยนน ใหกาหนด
          ํ            ้                                                        ้ั      ํ
ตัวแปรชนิดอารเรยรอรับไว โดยไมตองระบุจํานวนสมาชิกในอารเรย ดังตัวอยางตอไปนี้
                                    

           •! ตัวอยางโปรแกรม Arr_Fun1.CPP แสดงการสงคาของอารยทงหมดใหแกฟงกชน เพอนําขอ
                                                             ้ั          ั ่ื
              มูลในอารเรยทงหมดไปแสดงผล คํานวณผลรวม และคํานวณคาเฉลี่ย
                            ้ั

!   /*Program:Arr_Fun1.Cpp
!    Process: display and calculate summation, average of all array
!   */
!   #include <iostream.h>
!   #include <ctype.h>
!   #include <conio.h>
!
!   //prototype function
!   void ShowArray(int x[]);
!   float AvgArray(int x[]);
!   int SumArray(int x[]);
!   //global variable
!   int number[5]={10,20,30,40,50};
!   void main() //main function
!   { clrscr();                   ! สงอารกวเมนตไปเฉพาะ
                                            ิ
                                  ชือของอาารเรย number
                                    ่
!     ShowArray(number);                                                 ! สงอารกวเมนตไปเฉพาะ
                                                                                   ิ
!     cout<<"nSummation of All Array : "<<SumArray(number);             ชือของอาารเรย number
                                                                           ่
!     cout<<"nAverage of All Array : "<<AvgArray(number);
!     getch();                                                        ! สงอารกวเมนตไปเฉพาะ
                                                                                ิ
!   }                                                                 ชือของอาารเรย number
                                                                        ่


ศิริชัย นามบุรี                                                                    อารเรย(Array)
!                                               93

!   void ShowArray(int x[]) //function display all array element
!   {                                                  พารามิเตอรรอรับคา ไมตองระบุจานวน
                                                                                       ํ
!     int i;                                           สมาชิกของอารเรย
!     for(i=0;i<=4;i++)
!       cout<<"#"<<i+1<<": "<<x[i]<<endl;
!   }
!
!   int SumArray(int x[]) //function calculate summation of all array
!   {
                               ! พารามิเตอรรอรับคา ไมตองระบุ
!     int i,sum=0;             จํานวนสมาชิกของอารเรย
!     for(i=0;i<=4;i++)
!       sum=sum+x[i];
!     return sum;
!   }
!
!   float AvgArray(int x[])//function calculate average of all array
!   {
                                   ! พารามิเตอรรอรับคา ไมตองระบุ
!     int i,sum=0;
                                   จํานวนสมาชิกของอารเรย
!     for(i=0;i<=4;i++)
!       sum=sum+x[i];
!     return sum/5;
!   }




ศิริชัย นามบุรี                                                                     อารเรย(Array)
!                                               94

♦!แบบฝกหัดทายบท
1. ใหเ ขยนโปรแกรมเพอรบคาจํานวนเต็ม 10 จํานวนทางคยบอรด แสดงคาจํานวนเตมทกรอกทงหมด
          ี            ่ื ั                             ี                      ็ ่ี     ้ั
   พรอมกับหาคาขอมูลที่มากที่สุดและขอมูลนอยที่สุดของขอมูลชุดนี้ พรอมบอกตําแหนงของอารเรยท่ี
   พบขอมูลที่มากที่สุดและที่นอยที่สุดดวย แสดงผลทางจอภาพ
2. จงสราง Matrix ขนาด 3x4 กรอกขอมูลลงในแตละชอง และคํานวณหาผลรวมในแนวแถว และแนว
   คอลมนของ Matrix นี้ ดังตัวอยางผลลัพธตอไปนี้
         ั 
                         col1             col2          col3              col4         Total
        row1             20               30            10                10           70
        row2             10               25            5                 40           80
        row3             20               40            30                30           120
        Total            50               95            45                80           270
                                          ! กรอกขอมูล
                                          ! ทางคียบอรด

3. จากขอมลในตารางตอไปน้ี ใหเ ขยนโปรแกรมเพอกรอกคะแนน นักศึกษา จํานวน 5 คน จํานวน 3
         ู                   ี          ่ื
   รายวิชา แตละวิชามีคะแนนสอบ 2 ครัง และใหหาคะแนนเฉลี่ยของการสอบแตละครั้ง ทั้ง 3
                                     ้
   รายวิชา แลวแสดงรายงานทางจอภาพ ดังนี้ ( เสนตารางไมตองสราง )
                                                      

                                                             คะแนนวิชา
                  นักศึกษาคนที่          คณิตศาสตร             ภาษาอังกฤษ         วิทยาศาสตร
                                    ครงท่ี 1 ครงท่ี 2
                                      ้ั         ้ั        ครงท่ี 1 ครงท่ี 2
                                                             ้ั          ้ั      ครงท่ี 1 ครงท่ี
                                                                                    ้ั       ้ั
                                                                                             2
                        1              24         25         28         30          20      35
                        2              26         28         24         25          30      32
                        3              31         30         30         29          26      33
                        4              25         29         25         30          30      35
                        5              30         35         18         20          32      37
                       รวม            999        999        999        999         999     999
                      เฉลี่ย         99.99      99.99      99.99      99.99       99.99 99.99




ศิริชัย นามบุรี                                                                      อารเรย(Array)
!                                             95

4. ใหเ ขยนโปรแกรมรบขอมลตวเลขจํานวนเต็ม 10 จํานวน และสรางฟงกชันในการจัดเรียงขอมูล 10
           ี          ั  ู ั
   จํานวนนี้ คือ Ascending() เรียงขอมูลจากนอยไปมาก ฟงกชัน Descending() เรียงขอมูลจากมาก
   ไปนอย
5. ใหเ ขยนโปรแกรมรบขอมลตวอกขระ 5 ตัว และสรางฟงกชันในการจัดเรียงขอมูล 5 อกขระน้ี
         ี           ั  ู ั ั                                                      ั
    คือฟงกชัน Ascending() เรียงขอมูลจากนอยไปมาก ฟงกชัน Descending() เรียงขอมูลจากมากไป
   นอย




ศิริชัย นามบุรี                                                                  อารเรย(Array)

More Related Content

Viewers also liked

หลักสูตรประกาศนียบัตรวิชาชีพชั้นสูง
หลักสูตรประกาศนียบัตรวิชาชีพชั้นสูงหลักสูตรประกาศนียบัตรวิชาชีพชั้นสูง
หลักสูตรประกาศนียบัตรวิชาชีพชั้นสูงMaxky Thonchan
 
Gunbower forest environmental watering resource booklet.
Gunbower forest environmental watering resource booklet.Gunbower forest environmental watering resource booklet.
Gunbower forest environmental watering resource booklet.Peter Phillips M.Ed.
 
บทที่ 4 เรื่องทำงานกับไฟล์ e book
บทที่ 4 เรื่องทำงานกับไฟล์ e bookบทที่ 4 เรื่องทำงานกับไฟล์ e book
บทที่ 4 เรื่องทำงานกับไฟล์ e bookโทโม๊ะจัง นานะ
 
บทที่ 4 เรื่องทำงานกับไฟล์ e book
บทที่ 4 เรื่องทำงานกับไฟล์ e bookบทที่ 4 เรื่องทำงานกับไฟล์ e book
บทที่ 4 เรื่องทำงานกับไฟล์ e bookโทโม๊ะจัง นานะ
 
VCE Environmental Science Unit 3: Biodiversity and conservation management.
VCE Environmental Science Unit 3: Biodiversity and conservation management.VCE Environmental Science Unit 3: Biodiversity and conservation management.
VCE Environmental Science Unit 3: Biodiversity and conservation management.Peter Phillips M.Ed.
 
รายวิชา ปวส
รายวิชา ปวสรายวิชา ปวส
รายวิชา ปวสMaxky Thonchan
 
Gunbower forest environmental watering fieldwork booklet.
Gunbower forest environmental watering fieldwork booklet.Gunbower forest environmental watering fieldwork booklet.
Gunbower forest environmental watering fieldwork booklet.Peter Phillips M.Ed.
 
Characteristics of salt as a pollutant
Characteristics of salt as a pollutantCharacteristics of salt as a pollutant
Characteristics of salt as a pollutantPeter Phillips M.Ed.
 

Viewers also liked (12)

หลักสูตรประกาศนียบัตรวิชาชีพชั้นสูง
หลักสูตรประกาศนียบัตรวิชาชีพชั้นสูงหลักสูตรประกาศนียบัตรวิชาชีพชั้นสูง
หลักสูตรประกาศนียบัตรวิชาชีพชั้นสูง
 
Lesson3
Lesson3Lesson3
Lesson3
 
Gunbower forest environmental watering resource booklet.
Gunbower forest environmental watering resource booklet.Gunbower forest environmental watering resource booklet.
Gunbower forest environmental watering resource booklet.
 
Lesson5
Lesson5Lesson5
Lesson5
 
บทที่ 4 เรื่องทำงานกับไฟล์ e book
บทที่ 4 เรื่องทำงานกับไฟล์ e bookบทที่ 4 เรื่องทำงานกับไฟล์ e book
บทที่ 4 เรื่องทำงานกับไฟล์ e book
 
บทที่ 4 เรื่องทำงานกับไฟล์ e book
บทที่ 4 เรื่องทำงานกับไฟล์ e bookบทที่ 4 เรื่องทำงานกับไฟล์ e book
บทที่ 4 เรื่องทำงานกับไฟล์ e book
 
บท4
บท4บท4
บท4
 
VCE Environmental Science Unit 3: Biodiversity and conservation management.
VCE Environmental Science Unit 3: Biodiversity and conservation management.VCE Environmental Science Unit 3: Biodiversity and conservation management.
VCE Environmental Science Unit 3: Biodiversity and conservation management.
 
รายวิชา ปวส
รายวิชา ปวสรายวิชา ปวส
รายวิชา ปวส
 
Gunbower forest environmental watering fieldwork booklet.
Gunbower forest environmental watering fieldwork booklet.Gunbower forest environmental watering fieldwork booklet.
Gunbower forest environmental watering fieldwork booklet.
 
Characteristics of salt as a pollutant
Characteristics of salt as a pollutantCharacteristics of salt as a pollutant
Characteristics of salt as a pollutant
 
เฉลยแบบฝึกหัดบทที่ 1
เฉลยแบบฝึกหัดบทที่ 1เฉลยแบบฝึกหัดบทที่ 1
เฉลยแบบฝึกหัดบทที่ 1
 

Similar to Lesson6

Java-Chapter 07 One Dimensional Arrays
Java-Chapter 07 One Dimensional ArraysJava-Chapter 07 One Dimensional Arrays
Java-Chapter 07 One Dimensional ArraysWongyos Keardsri
 
Java Programming [8/12] : Arrays and Collection
Java Programming [8/12] : Arrays and CollectionJava Programming [8/12] : Arrays and Collection
Java Programming [8/12] : Arrays and CollectionIMC Institute
 
บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
บทที่  5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1บทที่  5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1Little Tukta Lita
 
บทที่ 6 อาร์เรย์
บทที่ 6 อาร์เรย์บทที่ 6 อาร์เรย์
บทที่ 6 อาร์เรย์Theeravaj Tum
 
Java Programming: อะเรย์และคอลเล็กชั่น
Java Programming: อะเรย์และคอลเล็กชั่นJava Programming: อะเรย์และคอลเล็กชั่น
Java Programming: อะเรย์และคอลเล็กชั่นThanachart Numnonda
 
ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ Areeya Onnom
 
การใช้ตัวแปรอาร์เรย์ (Array) ใน VB.NET 2005 Express Editor
การใช้ตัวแปรอาร์เรย์ (Array) ใน VB.NET 2005 Express Editorการใช้ตัวแปรอาร์เรย์ (Array) ใน VB.NET 2005 Express Editor
การใช้ตัวแปรอาร์เรย์ (Array) ใน VB.NET 2005 Express EditorWarawut
 
หน่วยที่2 เรื่อง โครงสร้างข้อมูล นางสาว สิรินยา ปาโจด ม.5
หน่วยที่2 เรื่อง โครงสร้างข้อมูล นางสาว สิรินยา  ปาโจด ม.5หน่วยที่2 เรื่อง โครงสร้างข้อมูล นางสาว สิรินยา  ปาโจด ม.5
หน่วยที่2 เรื่อง โครงสร้างข้อมูล นางสาว สิรินยา ปาโจด ม.5สิรินยา ปาโจด
 
หน่วยที่2 โครงสร้างข้อมูล นาย ธนพงษ์ น่านกร เลขที่ 1 ชั้น ม.5
หน่วยที่2 โครงสร้างข้อมูล  นาย ธนพงษ์  น่านกร  เลขที่ 1   ชั้น ม.5หน่วยที่2 โครงสร้างข้อมูล  นาย ธนพงษ์  น่านกร  เลขที่ 1   ชั้น ม.5
หน่วยที่2 โครงสร้างข้อมูล นาย ธนพงษ์ น่านกร เลขที่ 1 ชั้น ม.5palmyZommanow
 
การใช้งาน Matlab
การใช้งาน Matlabการใช้งาน Matlab
การใช้งาน MatlabOoy's Patchaya
 
09 multi arrays
09 multi arrays09 multi arrays
09 multi arraysa-num Sara
 

Similar to Lesson6 (18)

Java-Chapter 07 One Dimensional Arrays
Java-Chapter 07 One Dimensional ArraysJava-Chapter 07 One Dimensional Arrays
Java-Chapter 07 One Dimensional Arrays
 
Java Programming [8/12] : Arrays and Collection
Java Programming [8/12] : Arrays and CollectionJava Programming [8/12] : Arrays and Collection
Java Programming [8/12] : Arrays and Collection
 
บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
บทที่  5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1บทที่  5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
 
08 arrays
08 arrays08 arrays
08 arrays
 
บทที่ 6 อาร์เรย์
บทที่ 6 อาร์เรย์บทที่ 6 อาร์เรย์
บทที่ 6 อาร์เรย์
 
Array1
Array1Array1
Array1
 
Java Programming: อะเรย์และคอลเล็กชั่น
Java Programming: อะเรย์และคอลเล็กชั่นJava Programming: อะเรย์และคอลเล็กชั่น
Java Programming: อะเรย์และคอลเล็กชั่น
 
ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ
 
การใช้ตัวแปรอาร์เรย์ (Array) ใน VB.NET 2005 Express Editor
การใช้ตัวแปรอาร์เรย์ (Array) ใน VB.NET 2005 Express Editorการใช้ตัวแปรอาร์เรย์ (Array) ใน VB.NET 2005 Express Editor
การใช้ตัวแปรอาร์เรย์ (Array) ใน VB.NET 2005 Express Editor
 
Array
ArrayArray
Array
 
หน่วยที่2 เรื่อง โครงสร้างข้อมูล นางสาว สิรินยา ปาโจด ม.5
หน่วยที่2 เรื่อง โครงสร้างข้อมูล นางสาว สิรินยา  ปาโจด ม.5หน่วยที่2 เรื่อง โครงสร้างข้อมูล นางสาว สิรินยา  ปาโจด ม.5
หน่วยที่2 เรื่อง โครงสร้างข้อมูล นางสาว สิรินยา ปาโจด ม.5
 
หน่วยที่2 โครงสร้างข้อมูล นาย ธนพงษ์ น่านกร เลขที่ 1 ชั้น ม.5
หน่วยที่2 โครงสร้างข้อมูล  นาย ธนพงษ์  น่านกร  เลขที่ 1   ชั้น ม.5หน่วยที่2 โครงสร้างข้อมูล  นาย ธนพงษ์  น่านกร  เลขที่ 1   ชั้น ม.5
หน่วยที่2 โครงสร้างข้อมูล นาย ธนพงษ์ น่านกร เลขที่ 1 ชั้น ม.5
 
Chepter3
Chepter3Chepter3
Chepter3
 
207
207207
207
 
Ch1
Ch1Ch1
Ch1
 
Week1 f end
Week1 f endWeek1 f end
Week1 f end
 
การใช้งาน Matlab
การใช้งาน Matlabการใช้งาน Matlab
การใช้งาน Matlab
 
09 multi arrays
09 multi arrays09 multi arrays
09 multi arrays
 

More from โทโม๊ะจัง นานะ

บทที่ 2 สร้าง e book ง่ายและเร็ว
บทที่ 2 สร้าง e book ง่ายและเร็วบทที่ 2 สร้าง e book ง่ายและเร็ว
บทที่ 2 สร้าง e book ง่ายและเร็วโทโม๊ะจัง นานะ
 
บทที่ 1 ลักษณะทั่วไปของหนังสืออิเล็กทรอนิกส์
บทที่ 1 ลักษณะทั่วไปของหนังสืออิเล็กทรอนิกส์บทที่ 1 ลักษณะทั่วไปของหนังสืออิเล็กทรอนิกส์
บทที่ 1 ลักษณะทั่วไปของหนังสืออิเล็กทรอนิกส์โทโม๊ะจัง นานะ
 

More from โทโม๊ะจัง นานะ (20)

บทที่ 3 การควบคุม e book
บทที่ 3 การควบคุม e bookบทที่ 3 การควบคุม e book
บทที่ 3 การควบคุม e book
 
บทที่ 2 สร้าง e book ง่ายและเร็ว
บทที่ 2 สร้าง e book ง่ายและเร็วบทที่ 2 สร้าง e book ง่ายและเร็ว
บทที่ 2 สร้าง e book ง่ายและเร็ว
 
บทที่ 1 ลักษณะทั่วไปของหนังสืออิเล็กทรอนิกส์
บทที่ 1 ลักษณะทั่วไปของหนังสืออิเล็กทรอนิกส์บทที่ 1 ลักษณะทั่วไปของหนังสืออิเล็กทรอนิกส์
บทที่ 1 ลักษณะทั่วไปของหนังสืออิเล็กทรอนิกส์
 
Chapter1
Chapter1Chapter1
Chapter1
 
Lesson1
Lesson1Lesson1
Lesson1
 
Lesson4
Lesson4Lesson4
Lesson4
 
Lesson1
Lesson1Lesson1
Lesson1
 
บทที่1
บทที่1บทที่1
บทที่1
 
บท2
บท2บท2
บท2
 
บท3
บท3บท3
บท3
 
บท4
บท4บท4
บท4
 
บท5
บท5บท5
บท5
 
บท6
บท6บท6
บท6
 
บท6
บท6บท6
บท6
 
บท1
บท1บท1
บท1
 
บท2
บท2บท2
บท2
 
บท5
บท5บท5
บท5
 
B2
B2B2
B2
 
บท3
บท3บท3
บท3
 
บท6
บท6บท6
บท6
 

Lesson6

  • 1. ! บทที่ 6 อารเรย (Array) ♦! วามหมายของขอมลชนดอารเ รย(array) ค  ู ิ  อารเ รย (array) เปนขอมูลชนิดมีโครงสราง (structure) หมายถึงเปนขอมูลชุดหนึ่งมีจํานวนนวน สมาชิกขอมูลแนนอนและตองเปนชนิดเดียวกันทั้งชุด แตละรายการของขอมูลในชุดนั้น ๆ เรยกวา สมาชิก ี  ของอารเรย (element of array) สมาชิกแตละตัวมีตัวชี้ตาแหนงทอยู เรยกวา อินเด็กซ (index) เพื่อใช ํ  ่ี ี  สําหรับการอางอิงถึงขอมูลแตละสมาชิก โดยอินเด็กซเปนขอมูลชนิดที่มีลาดบ เชน integer ํ ั  ตัวอยางขอมูลชนิดอารเรย 1 มิติ เชน คะแนนสอบของนักศึกษา 10 คน เปนตัวเลขประเภท int กําหนดเปนโครงสรางของอารเ รยดงน้ี    ั นักศึกษาคนที่ (index) [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] คะแนนที่ได ! 20 ! 25 ! 15 ! 30 ! 28 ! 16 ! 23 ! 24 ! 30 ! 26 ! ขอมลในอาเรย  ู ความหมายของขอมูลในอารเรยโดยใช index เปนตัวชี้ขอมูลในแตละชอง เปนดังนี้ อารเรยชองที่ [0] มีคาคะแนนนักศึกษา คนที่ 1 เก็บอยู คือ 20 อารเรยชองที่ [1] มีคาคะแนนนักศึกษา คนที่ 2 เก็บอยู คือ 25 อารเรยชองที่ [2] มีคาคะแนนนักศึกษา คนที่ 3 เก็บอยู คือ 15 อารเรยชองที่ [3] มีคาคะแนนนักศึกษา คนที่ 4 เก็บอยู คือ 30 อารเรยชองที่ [4] มีคาคะแนนนักศึกษา คนที่ 4 เก็บอยู คือ 28 อารเรยชองที่ [5] มีคาคะแนนนักศึกษา คนที่ 4 เก็บอยู คือ 16 อารเรยชองที่ [6] มีคาคะแนนนักศึกษา คนที่ 4 เก็บอยู คือ 23 อารเรยชองที่ [7] มีคาคะแนนนักศึกษา คนที่ 4 เก็บอยู คือ 24 อารเรยชองที่ [8] มีคาคะแนนนักศึกษา คนที่ 4 เก็บอยู คือ 30 อารเรยชองที่ [9] มีคาคะแนนนักศึกษา คนที่ 10 เก็บอยู คือ 26 ถาคะแนนทีเ่ ก็บเปนขอมูลชนิด int จะจองพืนทีหนวยความจําในการเก็บขอมูล 2 byte * ้ ่ 10 ชอง เทากับ 20 byte ศิริชัย นามบุรี อารเรย(Array)
  • 2. ! 82 หมายเหตุ การจองพืนทีหนวยความจําของอารเรยจะจองพืนทีในหนวยความจําตอเนืองกัน ้ ่ ้ ่ ่ ไป ตั้งแตสมาชิกเริ่มตนตัวที่ 0 จนถึงตัวสุดทาย ♦!ขอมลอารเ รยชนด 1 มิติ  ู  ิ ขอมลชนดอารเ รย 1 มิติ หมายถึง อารเรยที่มีอินเด็กซในการอางอิงถึงแตละสมาชิกเพียง 1 ตัว  ู ิ 1. การกําหนดขอมลชนดอารเ รย 1 มิติ ในโปรแกรม มรปแบบดงน้ี  ู ิ ีู ั ! Array_Type Array_name[amount of element]; โดยที่ Array_Type คือ ชนิดขอมูล (data type) ในอารเรยหรือประเภทอารเรย เชน int, char, float  Array_name คือ ชอของตวแปรอารเ รย ่ื ั [amount of element] คือ จํานวนสมาชกหรอรายการของอารเ รย ิ ื ตัวอยางขอมูลคะแนนนักศึกษา จํานวน 10 คน เชน  นกศกษาคนท่ี (index) ั ึ [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] คะแนนที่ได ! 20 ! 25 ! 15 ! 30 ! 28 ! 16 ! 23 ! 24 ! 30 ! 26 กําหนดตัวแปรอารเรยเก็บคะแนนเปนชนิด int และจองจํานวนสมาชิกไว 10 รายการ ดังนี้ int score[10]; 2. การอางถึงสมาชิกและขอมูลในอารเรย การอางถึงแตละสมาชิกของอารเรยทาไดโดยการเขยน ํ  ี ชื่อของอารเรยและระบบอินเด็กซของสมาชิกไวใน [ ] โดยอินเด็กซเริมตัง 0 ถึง n-1 (n คอจํานวน ่ ้ ื สมาชิกของอารเรยทั้งหมด) เชน  score[0]มขอมล 20 เก็บอยู ี ู score[1]มขอมล 25 เก็บอยู ี ู score[5]มขอมล 16 เก็บอยู ี ู score[9]มขอมล 26 เก็บอยู ี ู 3. การกําหนดคาใหอารเรย การกาหนดคาใหแกอารเ รย 1 มิติ มีวิธีการดังนี้ ํ    3.1 การกาหนดคาคงทใหกบอารเ รย เชน ํ  ่ี  ั  score[0] = 20; score[1] = 25; score[2] = 15; score[9 ]= 26; ศิริชัย นามบุรี อารเรย(Array)
  • 3. ! 83 สามารถกาหนดคาของอารเรย เปน constant โดยระบจานวนสมาชิกหรือไมระบุก็ไดดังนี้ ํ  ุํ const int score[10] = { 20,25,30,26,24,18,17,25,24,22}; const int score[] = { 20,25,30,26,24,18,17,25,24,22}; 3.2 การกาหนดคาใหอารเ รยจากตวแปร เชน ํ    ั  x = 20; y = 26; score[0] = x; score[9] = y; 4. การรบขอมลทางคียบอรดเกบในอาเรยโดยใชคาสั่งลูป เพื่อความสะดวกและความยืดหยุนใน ั  ู   ็   ํ โปรแกรม เราสามารถรับคาคงที่เขาไปเก็บไวในอารเรยแตละสมาชิกโดยใชลูป for, while , do เชน for( no=0 ; no<=9; ++no) cin>>score[no]; //enter from keyboard to array and no is index 5. การแสดงผลขอมลอารเ รย สามารถแสดงผลขอมลในอารเ รยแตละสมาชกได โดยการอางชอ  ู  ู  ิ  ่ื และอินเด็กซ โดยใชลูป for , while ,do เพอแสดงผลขอมลในอารเ รยทงหมดได เชน  ่ื  ู  ้ั  for(no=0;no<=9;++no) cout<<score[no]<<endl; //display data all element of array and no is index •! ตัวอยางโปรแกรม array1.cpp แสดงการรับคาคะแนนนักศึกษา 10 คน เกบไวในอารเ รย ็  คํานวณหาผลรวมคะแนนทงหมดและคานวณหาคาเฉลี่ยของคะแนน พรอมแสดงผลขอมูล ้ั ํ จากอารเ รยทงหมด  ้ั /*Program : array1.cpp Process : input and display data for array 1 dimension */ #include <iostream.h> #include <conio.h> void main() //begin program { int no,score[10]; float avg=0,sum=0; clrscr(); //input integer constant to array cout<< "Please enter score of student 10 personsnn"; for(no=0;no<=9;++no) { cout<< "Std.#"<<no+1<<" : "; cin>>score[no]; } ศิริชัย นามบุรี อารเรย(Array)
  • 4. ! 84 cout<< "O.K. you enter complete...press any key to displayn"; getch();clrscr(); //display value of each element of array cout<< "Display your enter score :n"; for(no=0;no<=9;++no) { cout<< "Std.#"<<no+1<<" : "<<score[no]; cout<<endl; sum+=score[no]; //calculate summation } avg=sum/10.0; //calculate average of score cout<<"Summation of score = "<<sum<<endl; cout<<"Average of score = "<<avg<<endl<<'a'; getch(); } //end program •! ตัวอยางโปรแกรม arr_func.cpp แสดงการรับคาคะแนนนักศึกษา 10 คน เกบไวในอารเ รย ็  คํานวณหาผลรวมคะแนนทงหมดและคานวณหาคาเฉลี่ยของคะแนน พรอมแสดงผลขอมูล ้ั ํ จากอารเ รยทงหมด แตเขียนแยกเปนฟงกชนทําหนาที่แยกกัน  ้ั ั /*Program : arr_func.cpp Process : define input and display data for array 1 dimension */ #include <iostream.h> #include <conio.h> //declaration prototype function void input(); void display(); //declaration external variable int score[10]; float avg=0,sum=0; void main() //begin main program { clrscr(); input(); //call function display(); //call function avg=sum/10.0; //calculate average of score cout<<"Summation of score = "<<sum<<endl; cout<<"Average of score = "<<avg<<endl<<'a'; getch(); } //end main program void input() //input() function for enter integer constant to array ศิริชัย นามบุรี อารเรย(Array)
  • 5. ! 85 { int no; cout<< "Please enter score of student 10 personsnn"; for(no=0;no<=9;++no) { cout<< "Std.#"<<no+1<<" : "; cin>>score[no]; } cout<< "O.K. you enter complete...press any key to displayn"; getch();clrscr(); } void display() //display() function for show value of each element of array { int no; cout<< "Display your enter score :n"; for(no=0;no<=9;++no) { cout<< "Std.#"<<no+1<<" : "<<score[no]; cout<<endl; sum+=score[no]; //calculate summation } } ♦! ารเรย 2 มิติ อ อารเรย 2 มิติ (two-dimension array) หมายถึง อารเรยทมตวอินเด็กซสาหรบการอางถงขอมล ่ี ี ั ํ ั  ึ  ู จํานวน 2 ชุด คือ อนเดกซชแนวแถว(row) และแนวคอลัมน (column) ิ ็  ้ื ลักษณะของขอมูลชนิดที่เปนอารเรย 2 มิติ เชน คะแนนสอบของนักศึกษาจํานวน 10 คน ทั้ง  หมด 3 วิชา ดงตาราง ั นักศึกษาคนที่ ! แนวคอลัมน คะแนนวิชา คณิตศาสตร ภาษาอังกฤษ วิทยาศาสตร ! แนวแถว 1 25 30 35 2 28 25 32 3 30 29 33 4 29 30 35 5 35 20 37 6 26 31 30 7 20 26 30 8 26 25 24 9 29 30 35 10 26 32 25 ศิริชัย นามบุรี อารเรย(Array)
  • 6. ! 86 จากตาราง 2 มิติขางบน ถาตองการเก็บคะแนนสอบของนักศึกษาดังกลาว สามารถใชตัวแปร อารเรยชนิด 2 มตเิ พอเกบขอมลชดนได สังเกตจากตารางดังกลาว (เฉพาะที่เปนขอมูลตัวเลขคะแนน) ิ ่ื ็  ู ุ ้ี ประกอบดวย 10 แถว และ 3 คอลัมน ตวอยาง การอานคะแนนจากตาราง แถวที่ 5 คอลัมนที่ 3 คือ 37  ั  เปนคะแนนของนักศึกษาคนที่ 5 วิชาที่ 3 คือ วิชาวิทยาศาสตร 1. การกําหนดอารเรย 2 มิติ การประกาศตวแปรประเภทอารเ รย 2 มิติ มรปแบบดงน้ี ั ีู ั ! Array_Type Array_name[row][column]; โดยที่ Array_Type คือ ชนิดขอมูลในอารเรยหรือประเภทอารเรย 2 มิติ เชน char , int ,  float ,double Array_name คือ ชอของตวแปรอารเ รย 2 มิติ ่ื ั [row] คือ จํานวนสมาชิกหรือรายการของอารเรยในแนวแถว [column] คือ จํานวนสมาชิกหรือรายการของอารเรยในแนวคอลัมน การคํานวณจานวนรายการหรอสมาชิกของอารเ รย 2 มิติ คือ row*column ํ ื 2. การอางองถงสมาชกอารเ รย 2 มิติ มีวธการอางอิงโดยการเขียนชืออารเรย และอินเด็กซของ  ิ ึ ิ ิี ่ สมาชิกนั้น เชน  score[3][2] หมายถึงสมาชิกอารเรยตําแหนงแถวที่ 3 คอลัมนที่ 2 score[0][3] หมายถึงสมาชิกอารเรยตําแหนงแถวที่ 0 คอลัมนที่ 3 3. การกําหนดคาใหอารเรย 2 มิติ มีวิธีการกาหนดคาเชนเดยวกบอารเ รย 1 มิติ คือกําหนดคาคงที่ ํ   ี ั ใหกบอารเ รย เชน ั  score[3][2] = 25; score[2][1] = 30; x = 35; score[3][3] = x; ถาตองการกําหนดคาอารเ รย 2 มิติเปนลักษณะ constant กําหนดไดเ ชนเดยวกบอารเ รย   ี ั 1 มิติ ดังนี้ const int score[5][3] = { {25,30,22}, {30,25,20}, {25,24,18}, {22,21,24}, {20,18,17} }; หรือไมตองระบบจํานวนแถวของอารเ รย ดังนี้  ศิริชัย นามบุรี อารเรย(Array)
  • 7. ! 87 const int score[][3] = { {25,30,22}, {30,25,20}, {25,24,18}, {22,21,24}, {20,18,17} }; โดยทมตแรก คือ จานวนแถวไมตองระบุก็ได C++ compiler จะทราบเองจากการตรวจ ่ี ิ ิ ํ สอบเซตของคาคงที่ที่กาหนดในลักษณะ const ํ เพื่อความสะดวกและความยืดหยุนในโปรแกรม การกาหนดคาใหอารเรยโดยการรับคา ํ จากการกรอกทางคียบอรด จะใชลูป for, while หรือ do จํานวน 2 ลูปซอนกันเพื่อรับขอมูลไปเก็บไวใน อารเรย สามารถกาหนดลูปได 2 ลักษณะ ํ - กรอกในแนวแถวกอน เชน จากขอมูลตัวอยาง จะกรอกคะแนนของนักศึกษาคนที่ 1  ใหครบทั้ง 3 วิชากอน แลวจึงเริ่มกรอกคะแนนของนักศึกษาคนที่ 2 ใหครบทุกวิชา ทาเชนนเ้ี รอย ๆ จนถึง ํ  ่ื คะแนนคนที่ 10 วิชาที่ 3 ดังตัวอยางการใชลูป for for(std_no=0;std_no<=9;++std_no) //ลปนอก ู for(subj_no=0;subj_no<=2;++subj_no) //ลูปใน cin>>score[std_no][subj_no]; std_no คือ ตวแปรเกบคาตวชตาแหนงแถวหรือนักศึกษาคนที่ 0 - 9 ั ็  ั ้ี ํ subj_no คือ ตวแปรเกบคาตวชตาแหนงคอลัมนหรือวิชาที่ 0-2 ั ็  ั ้ี ํ - กรอกในแนวคอลมนกอน เชน จากขอมูลตัวอยาง จะกรอกคะแนนนักศึกษาของวิชาที่ ั   1 ใหครบทั้ง 10 คนกอน จากนันจึงเริมกรอกวิชาที่ 2 ใหครบกอน แลวจงเรมกรอกคะแนนวชาท่ี 3 จน  ้ ่  ึ ่ิ ิ กวาจะกรอกคะแนนวิชาที่ 3 ของนักศึกษาคนที่ 10 ซึ่งเปนคนสุดทาย ดังตัวอยางการใชลูป for for(subj_no=0;subj_no<=2;++subj_no) //ลปนอกู for(std_no=0;std_no<=9;++std_no) //ลูปใน cin>>score[std_no][subj_no]; //subj_no คือ ตัวแปรเก็บคาของคอลัมนหรือวิชาที่ 0-2 //std_no คือ ตวแปรเกบคาของแถวหรอนกศกษาคนท่ี 0 - 9 ั ็  ื ั ึ ศิริชัย นามบุรี อารเรย(Array)
  • 8. ! 88 4. การแสดงผลอารเรย 2 มิติ การแสดงผลขอมูลแตละสมาชิกในอารเรย 2 มิติ มีวิธีการใชลูป 2 ลูปซอนกัน เหมือนกับการกาหนดคาเชนเดยวกน เพียงแตใช cout แทน cin เพอแสดงคาตวแปร จากตว ํ   ี ั ่ื  ั ั อยางคะแนนสอบนักศึกษา 10 คน 3 วิชา สามารถเขียนลูป for เพื่อแสดงผลได ดังนี้ - กรณีแสดงคาแนวแถวกอน for(std_no=0;std_no<=9;++std_no) //ลปนอกู for(subj_no=0;subj_no<=2;++subj_no) //ลูปใน cout>>score[std_no][subj_no]; - กรณีแสดงคาแนวคอลัมนกอน for(subj_no=0;subj_no<=2;++subj_no) //ลปนอกู for(std_no=0;std_no<=9;++std_no) //ลูปใน cin>>score[std_no][subj_no]; //subj_no คือ ตัวแปรเก็บคาของคอลัมนหรือวิชาที่ 0-2 //std_no คือ ตวแปรเกบคาของแถวหรอนกศกษาคนท่ี 0 - 9 ั ็  ื ั ึ •! ตัวอยางโปรแกรม arr_2dim.cpp แสดงการรับคาและแสดงคาอารเรย 2 มิติ คะแนนสอบ ของนกศกษา 10 คน เปนจานวนเต็ม วิชาที่สอบ 3 วิชา โดยการกรอกขอมูลเปนรายคน ได ั ึ ํ ดังนี้ /*Program : arr_2dim.cpp Process : define input and display data for array 2 dimension */ #include <iostream.h> #include <conio.h> //declaration prototype function void input(); void display(); //declaration external variable int score[10][3]; void main() //begin main program { clrscr(); input(); display(); cout<< "nnO.K. press any key to exitna"; getch(); } //end main program ศิริชัย นามบุรี อารเรย(Array)
  • 9. ! 89 void input() //input() function for enter integer constant to array { int std_no,subj_no,col,row; cout<< "Please enter score of student 10 personsnn"; gotoxy(5,3);cout<<"Std # Math English Science"; col=15;row =5; //varaible for function gotoxy() for(std_no=0;std_no<=9;++std_no) { gotoxy(7,row); //skip cursor to enter data position cout<<std_no+1; for(subj_no=0;subj_no<=2;++subj_no) { gotoxy(col,row); cin>>score[std_no][subj_no]; col+=15; //increase column position } row++; //increase row position col=15; //set column at old position in new row (next student) } cout<< "O.K. you enter complete...press any key to displayna"; getch();clrscr(); } void display() //display() function for display score { int std_no,subj_no,col,row; cout<< "*** Display score of student 10 persons 3 subjects ***nn"; gotoxy(5,3);cout<<"Std # Math English Science"; col=15;row =5; for(std_no=0;std_no<=9;++std_no) { gotoxy(7,row); cout<<std_no+1; for(subj_no=0;subj_no<=2;++subj_no) { gotoxy(col,row); cout<<score[std_no][subj_no]; col+=15; } row++; col=15; } } ศิริชัย นามบุรี อารเรย(Array)
  • 10. ! 90 ♦! ารเรย 3 มิติ อ อารเรย 3 มิติ (3 dimension array) เปนอารเ รยทมอนเดกซอางองถงตําแหนงขอมลจํานวน 3 ชุด   ่ี ี ิ ็   ิ ึ   ู คือ แถว, คอลัมน และแนวลึก ตัวอยางขอมูลที่สามารถนามาเก็บในลักษณะของอารเรย 3 มตได เชน ํ ิ ิ  คะแนนสอบนักศึกษา จํานวน 5 คน(แถว) วิชาสอบทั้งหมด 3 วิชา(คอลัมน) แตละวิชาสอบ 2 ครัง(ลึก) ้ มขอมลดงตารางตอไปน้ี ี ู ั  ! แนวคอลัมน มีทั้งหมด 3 คอลัมน คะแนนวิชา นักศึกษาคนที่ คณิตศาสตร ภาษาอังกฤษ วิทยาศาสตร ครั้งที่ 1 ครั้งที่ 2 ครั้งที่ 1 ครั้งที่ 2 ครั้งที่ 1 ครั้งที่ 2 ! แนวแถว 1 24 25 28 30 20 35 ! ทั้งหมด 2 26 28 24 25 30 32 ! 5 แถว 3 31 30 30 29 26 33 4 25 29 25 30 30 35 5 30 35 18 20 32 37 ! แตละคอลัมนมแนวลึกอีก 2 แนวลึก ี จากขอมูลคะแนนทั้งหมดในตาราง เปรยบเทยบกบโครงสรางขอมลอารเ รยแบบ 3 มิติ ไดดงน้ี ี ี ั   ู  ั แนวแถว แทน จํานวนนักศึกษา 5 คน แนวคอลมน แทน จํานวนวชา 3 วิชา ั ิ แนวลึก แทน จํานวนครงทสอบ 2 ครัง ้ั ่ี ้ 1. การกําหนดขอมลอารเ รย 3 มิติ มีรูปแบบการกําหนด ดังนี้  ู Array_Type Array_name[row][column][depth]; โดยที่ Array_Type คือ ชนิดขอมูลในอารเรยหรือประเภทของอารเรย 3 มิติ Array_name คือ ชอของตวแปรอารเ รย 3 มิติ ่ื ั [row] คือ จํานวนสมาชิกหรือรายการของอารเรยในแนวแถว [column] คือ จานวนสมาชิกหรือรายการของอารเรยในแนวคอลัมน ํ [depth] คือ จานวนสมาชิกหรือรายการในแนวลึก ํ จานวนสมาชิกของอารเรย 3 มิติ เทากบ row*column*depth เชน int score[5][3][2]; ํ  ั  จะมจํานวนสมาชกของอารเ รยทงหมด 5*3*2 = 30 สมาชิก ี ิ  ้ั ศิริชัย นามบุรี อารเรย(Array)
  • 11. ! 91 2. การอางถงสมาชกอารเ รย 3 มิติ ตองเขียนชืออารเรยและตามดวยอินเด็กซทง 3 ชุด เชน  ึ ิ ่ ้ั  score[0][1][0]; หมายถึง คะแนนสอบของนักศึกษาคนที่ 1 วิชาที่ 2 สอบครั้งที่ 1 เนือง ่ จากอนเดกซเ รมท่ี 0 ิ ็ ่ิ 3. การกําหนดคาใหกับอารเรย 3 มิติ มีวิธีการกาหนดเชนเดยวกบอารเ รย 2 มิติ เพียงแตตองเพิม ํ  ี ั  ่ ตําแหนงอนเดกซชดท่ี 3 (แนวลึก) เชน  ิ ็  ุ  score[0][1][1] = 25; score[4][2][0] = 30; การกําหนดเปน constant ตองกําหนดคาคงทใหกบอารเ รยใหครบทกชอง ดังนี้  ่ี  ั   ุ  const int score[5][3][2] = { { {25,24},{21,23},{24,23} }, { {24,20},{29,30},{28,29} }, { {27,32},{24,29},{29,30} }, { {24,29},{24,30},{25,28} }, { {24,35},{28,21},{28,23} } }; เราสามารถใชลูป for, while หรอ do กําหนดคาโดยการกรอกขอมลทางคยบอรดได โดยใชคา ื   ู ี  ํ สั่งลูปซอนกัน 3 ลูป ตัวอยางการใชลูป for ดังนี้ for(std_no=0;std_no<=4;++std_no) for(subj_no=0;subj_no<=2;++subj_no) for(time_no=0;time_no<=1;++time_no) cin>>score[std_no][subj_no][time_no]; //input from keyboard 4. การแสดงผลจากอารเ รย 3 มิติ สามารถใชลูป for, while หรือ do ตัวอยางเชน การใชลูป for แสดงคาในอารเรย score[5][3][2] เปนดงน้ี  ั for(std_no=0;std_no<=4;++std_no) for(subj_no=0;subj_no<=2;++subj_no) for(time_no=0;time_no<=1;++time_no) cout<<score[std_no][subj_no][time_no]; //display ศิริชัย นามบุรี อารเรย(Array)
  • 12. ! 92 ♦! ารสงคาอารเ รยใหฟงกชน ก       ั ชอของอารเ รยสามารถใชเ ปนอารกวเมนตสงใหแกฟงกชนได ทาใหสามารถสงอารเรยทั้งชุดไป ่ื   ิ       ั ํ ใหแกฟงกชัน เพือนําคาของอารเรยไปใชในฟงกชันได แตวิธีการการสงอารเรยไปใหฟงกชันมีขอ ่ แตกตางจากการสงตัวแปรธรรมดา คือในการสงอารเรยไปใหแกฟงกชันนั้นจะตองเขียนเฉพาะชื่อของ อารเ รยไมตองกาหนดตัวชีหรือ index สวนในการกําหนดพารามิเตอรรอรับคาของอารเรยนน ใหกาหนด   ํ ้ ้ั ํ ตัวแปรชนิดอารเรยรอรับไว โดยไมตองระบุจํานวนสมาชิกในอารเรย ดังตัวอยางตอไปนี้  •! ตัวอยางโปรแกรม Arr_Fun1.CPP แสดงการสงคาของอารยทงหมดใหแกฟงกชน เพอนําขอ    ้ั     ั ่ื มูลในอารเรยทงหมดไปแสดงผล คํานวณผลรวม และคํานวณคาเฉลี่ย ้ั ! /*Program:Arr_Fun1.Cpp ! Process: display and calculate summation, average of all array ! */ ! #include <iostream.h> ! #include <ctype.h> ! #include <conio.h> ! ! //prototype function ! void ShowArray(int x[]); ! float AvgArray(int x[]); ! int SumArray(int x[]); ! //global variable ! int number[5]={10,20,30,40,50}; ! void main() //main function ! { clrscr(); ! สงอารกวเมนตไปเฉพาะ ิ ชือของอาารเรย number ่ ! ShowArray(number); ! สงอารกวเมนตไปเฉพาะ ิ ! cout<<"nSummation of All Array : "<<SumArray(number); ชือของอาารเรย number ่ ! cout<<"nAverage of All Array : "<<AvgArray(number); ! getch(); ! สงอารกวเมนตไปเฉพาะ ิ ! } ชือของอาารเรย number ่ ศิริชัย นามบุรี อารเรย(Array)
  • 13. ! 93 ! void ShowArray(int x[]) //function display all array element ! { พารามิเตอรรอรับคา ไมตองระบุจานวน ํ ! int i; สมาชิกของอารเรย ! for(i=0;i<=4;i++) ! cout<<"#"<<i+1<<": "<<x[i]<<endl; ! } ! ! int SumArray(int x[]) //function calculate summation of all array ! { ! พารามิเตอรรอรับคา ไมตองระบุ ! int i,sum=0; จํานวนสมาชิกของอารเรย ! for(i=0;i<=4;i++) ! sum=sum+x[i]; ! return sum; ! } ! ! float AvgArray(int x[])//function calculate average of all array ! { ! พารามิเตอรรอรับคา ไมตองระบุ ! int i,sum=0; จํานวนสมาชิกของอารเรย ! for(i=0;i<=4;i++) ! sum=sum+x[i]; ! return sum/5; ! } ศิริชัย นามบุรี อารเรย(Array)
  • 14. ! 94 ♦!แบบฝกหัดทายบท 1. ใหเ ขยนโปรแกรมเพอรบคาจํานวนเต็ม 10 จํานวนทางคยบอรด แสดงคาจํานวนเตมทกรอกทงหมด ี ่ื ั  ี  ็ ่ี ้ั พรอมกับหาคาขอมูลที่มากที่สุดและขอมูลนอยที่สุดของขอมูลชุดนี้ พรอมบอกตําแหนงของอารเรยท่ี พบขอมูลที่มากที่สุดและที่นอยที่สุดดวย แสดงผลทางจอภาพ 2. จงสราง Matrix ขนาด 3x4 กรอกขอมูลลงในแตละชอง และคํานวณหาผลรวมในแนวแถว และแนว คอลมนของ Matrix นี้ ดังตัวอยางผลลัพธตอไปนี้ ั  col1 col2 col3 col4 Total row1 20 30 10 10 70 row2 10 25 5 40 80 row3 20 40 30 30 120 Total 50 95 45 80 270 ! กรอกขอมูล ! ทางคียบอรด 3. จากขอมลในตารางตอไปน้ี ใหเ ขยนโปรแกรมเพอกรอกคะแนน นักศึกษา จํานวน 5 คน จํานวน 3  ู  ี ่ื รายวิชา แตละวิชามีคะแนนสอบ 2 ครัง และใหหาคะแนนเฉลี่ยของการสอบแตละครั้ง ทั้ง 3 ้ รายวิชา แลวแสดงรายงานทางจอภาพ ดังนี้ ( เสนตารางไมตองสราง )     คะแนนวิชา นักศึกษาคนที่ คณิตศาสตร ภาษาอังกฤษ วิทยาศาสตร ครงท่ี 1 ครงท่ี 2 ้ั ้ั ครงท่ี 1 ครงท่ี 2 ้ั ้ั ครงท่ี 1 ครงท่ี ้ั ้ั 2 1 24 25 28 30 20 35 2 26 28 24 25 30 32 3 31 30 30 29 26 33 4 25 29 25 30 30 35 5 30 35 18 20 32 37 รวม 999 999 999 999 999 999 เฉลี่ย 99.99 99.99 99.99 99.99 99.99 99.99 ศิริชัย นามบุรี อารเรย(Array)
  • 15. ! 95 4. ใหเ ขยนโปรแกรมรบขอมลตวเลขจํานวนเต็ม 10 จํานวน และสรางฟงกชันในการจัดเรียงขอมูล 10 ี ั  ู ั จํานวนนี้ คือ Ascending() เรียงขอมูลจากนอยไปมาก ฟงกชัน Descending() เรียงขอมูลจากมาก ไปนอย 5. ใหเ ขยนโปรแกรมรบขอมลตวอกขระ 5 ตัว และสรางฟงกชันในการจัดเรียงขอมูล 5 อกขระน้ี ี ั  ู ั ั ั คือฟงกชัน Ascending() เรียงขอมูลจากนอยไปมาก ฟงกชัน Descending() เรียงขอมูลจากมากไป นอย ศิริชัย นามบุรี อารเรย(Array)