โปรแกรมบวกลบเมทริกซ์ง่ายๆ by C++ (ตอนที่ 1)

สวัสดีครับชาวเอนจิเนียร์อินดี้ เจอกันอีกแล้ว
โพสนี้แอดมินจะเอาเทอมโปรเจคสายโปรแกรมมิ่งแบบง่ายๆ (ย้ำ ง่ายๆ) มาฝาก
เป็นโปรแกรมบวกลบเมทริกซ์ ซึ่งจะใช้ภาษาซีพลัสพลัสเขียน
ตัวโปรแกรมเหมาะมากสำหรับการเรียนรู้โปรแกรมมิ่ง เพราะครอบคุมส่วนต่างๆในการเรียนโปรแกรมมิ่งขั้นพื้นฐานทั่วไป ทั้งการแสดงผลทางหน้าจอ การรับอินพุต If-Else, Loop, Array, Struct และอื่นๆ

ดังนั้นโปรแกรมนี้จึงเหมาะสำหรับผู้สนใจโปรแกรมมิ่งเบื้องต้นอย่างมาก
และสามารถเป็นแนวทางต่อผู้ที่จะนำไปทำเป็นเทอมโปรเจค (สายฟรีดอม) ได้อีกด้วย
เพื่อไม่ให้เสียเวลาไปเริ่มกันเลยดีกว่า
เออลืมบอกไปอีกอย่างนะ ดูไปแค่คอนเซปก็พอ เพราะตัวโปรแกรมบั๊คเพียบเลย ฮะๆ

เริ่มต้น >>> เมทริกซ์คือ ???
หลายท่านคงจะทราบกันดีหรือถ้ายังไม่ทราบก็จะอธิบายตรงนี้ว่า
มันคือ ตารางสี่เหลี่ยมที่แต่ละช่องบรรจุจำนวนหรือโครงสร้างทางคณิตศาสตร์ที่สามารถนำมาบวกและคูณกับตำเลขได้ เราสามารถใช้เมทริกซ์แทนระบบสมการเชิงเส้น และใช้เก็บข้อมูลที่ขึ้นกับตัวแปลต้นสองตัว เมทริกซ์จึงเป็นแนวคิดที่มีความสำคัญต่อพีชคณิตเชิงเส้นอย่างมาก #Wikipedia
สำหรับ ม.6 คงได้เรียนกันมาบ้าง ใครสนใจลองศึกษาดูไม่ยากครับ


ออกแบบโปรแกรม >>>> ก่อนจะเริ่มเขียนโปรแกรมต้องออกแบบก่อนฮะ 
  • โปรแกรมต้อง Insert เมทริกซ์ได้ก่อน
  • มีบวกกับลบเมทริกซ์
  • มี Transpose (มันก็คือการสลับสมาชิกจากแถวเป็นหลัก จากหลักเป็นแถว)
  • เมทริกซ์ต้องคูณกับค่าคงที่ได้
ส่วนนี้คือออกแบบว่าอยากให้โปรแกรมมีอะไรบ้างก็เขียนไป

เริ่มเขียนกันเลย >>>> แอดมินเป็นสไตส์เขียนไปแก้ไปนะครับ แหม่ ฮะๆ
ตามนี้ก่อนเลย

#include <iostream>
#include <fstream>
#include <conio.h>

using namespace std;

struct matrix
{
    char name;
    int x,y;
    int a[20][20];      
};

struct matrix one[10];

int main(){
    cout<<"\n   WELCOME TO CALCULATED OF MATRIX PROGEAM\n\n";
    cout<<"     ***************************************\n";
    cout<<"                       MENUS\n";
    cout<<"                 1.Insert Matrix\n";
    cout<<"                 2.Calculated\n";
    cout<<"                 3.Transpose\n";
    cout<<"                 4.Compute with constant\n";
    cout<<"                 5.End progrem\n";
    cout<<"     ***************************************\n\n\n";
    getch();
    return 0;
}

เท่านี้ก่อนครับ อย่างแรกต้องสร้าง Struct ขึ้นมาก่อนตั้งชื่อว่า matrix
ใน matrix ก็ต้องมี

  • ชื่อ matrix
  • ขนาดเมทริกซ์ ผมเก็บไว้ในตัวแปล x,y
  • ตัวสำคัญก็คือ อาเรย์ 2 มิติครับ
แล้วก็สร้างเมทริกมาหนึ่งตัวชื่อ one เหมือนเป็นการ new เรียกเอามาใช้งานครับ
ในเมนตอนนี้ก็ยังไม่มีอะไรครับ แสดงคำสั่งว่าจะให้ผุ้ใช้กดอะไรได้มั่ง

สร้างฟังก์ชัน Insert Matrix >>>> เนื่องจากไม่ Return ค่าดังนั้นใช้เป็น Void นะครับ

void insert()
{
     int number;
     int r=1,c=1;
    //row and column  

    cout<<"          Please input name of matrix [1 charecter] : ";  
    cin>>one[z].name;
    cout<<"          Please input size of matrix [row] : ";
    cin>>one[z].x;
    cout<<"          Please input size of matrix [column] : ";
    cin>>one[z].y;
    cout<<"\n";

    for(int i=0;i<(one[z].x*one[z].y);i++)
    {
       cout<<"          Please input value position "<<r<<","<<c<<" : ";
       cin>>one[z].a[r][c];
       c++;
       if(c>one[z].y)
       {
          c=1;
          r++;
       }
    }
    cout<<"\n matrix "<<one[z].name<<"["<<one[z].x<<"]["<<one[z].y<<"]\n";
    cout<<"          ";
    for(int j=1;j<=(one[z].x);j++)
    {
       for(int n=1;n<=(one[z].y);n++)    
       {
          cout<<one[z].a[j][n]<<" ";
       } 
       cout<<"\n          ";
    }
    cout<<"\n";
    z++;
}

ก่อนเขียนฟังก์ชันนี้ก็สร้างตัวแปรแบบโกลบอลขึ้นมาก่อน 2 ตัว
คือ z กับ g ชนิด int เซตค่าให้เป็น 0 ด้วยนะครับ

ไปดูในฟังก์ชันเลย
  1. ให้ผู้ใช้กรอกชื่อของเมทริกซ์
  2. กรอกขนาดของแถว
  3. กรอกขนาดของหลัก
  4. วนลูปตามการคำนวณหลักและแถว เพื่อให้ผู้ใช้กรอกข้อมูลทีละช่อง เช่นเมริกซ์ขนาด 2*3 ผู้ใช้จะต้องกรอกข้อมูลทั้งหมด 6 ตัว เป็นต้น
  5. วนลูปเพื่อแสดงชื่อและเมทริกซ์ของผู้ใช้  
จบแล้วในฟังก์ชัน Insert ต้องลองเขียนเองดูครับ ไม่ยากแต่อาจงงหน่อย
เพราะต้องใช้ Struct ร่วมกับ Array 2 มิติ

จากนั้นในเมนให้ใส่เพิ่มไปประมาณนี้ ก่อนหน้าคำสั่ง getch();

int number;
    do
    {
       cout<<"          Please enter number : ";
       cin>>number;
       if(number==1)
       {
          insert();
       }
       else if(number==2)
       {
       }
       else if(number==3)
       {
       }
       else if(number==4)
       {
       }
       else if(number==5)
       {
          cout<<"\n    T-H-A-N-K-Y-O-U";
          break;    
       }
       else
       {
          cout<<"    E-R-R-O-R\n";
       }
    }
    while(number!=5);

ส่วนนี้คือถ้ากด 1 จะเป็นการเรียก ฟังก์ชัน Insert ขึ้นมานั่นเอง
โดยที่การกด 5 จะเป็นการออกจากโปรแกรม

สุดท้ายจะได้ประมาณนี้

คร่าวๆล่ะกันเนาะ อันไหนผมใส่ตัวเลขก็ใส่ตามผมนะ อย่าไปลองใส่ตัวอักษรล่ะ เดี๋ยวบั๊คกระจาย

เอาเป็นว่าลองไปเล่นดูก่อนล่ะกัน
เพื่อจะมีไอเดียอะไรเพิ่ม หรือถ้าใครคิดได้แหล่มกว่าแอดมินลองเอามาแชร์กันนะ
โพสนี้เท่านี้ก่อนแล้วกัน เดี๋ยวมาต่อ

ที่สำคัญอย่างที่เคยบอกไปตอนต้นคือ บั๊คมันเยอะ เอาไปแค่คอนเซปล่ะกัน
และสำหรับยูสเซอร์อ่านคำสั่งดีๆ ถ้าเค้าให้ใส่ตัวเลขก็ใส่ตัวเลขนะ อย่าทะลึ่งใส่ตัวอักษร
ไม่อย่างนั้นจะหาว่าไม่เตือน อิอิ

***** (02/03/2013) พอดีแอดมินตั้งให้บทความไม่สามารถ Copy ได้ ดังนั้น ให้ไปโหลดโปรแกรมตัวเต็มมาลองเล่นได้เลยนะครับ ขอบอกว่าโค๊ดยาวมากเพราช่วงที่แอดมินเขียนโปรแกรมนี้ยังไม่ถนัด OOP บางฟังก์ชันยังไม่ได้ทำ และทำให้แอดมินขอไม่เขียนตอนที่ 2 เพราะให้ไปแกะโค๊ดเอา อิอิ ***** 

โปรแกรมตัวเต็ม >>> ดาวน์โหลดโค๊ดที่นี่

Popular posts from this blog

"yes" "yeah" "yep" เหมือนและต่างกันอย่างไร ?

แปลง Word to PDF เนียนขั้นเทพ บรรทัดตรงแป๊ะอย่างกะจับวาง

วิธีตั้งค่า JOOX Music ให้เก็บเพลงแบบ Offline ไว้ที่ SD Card