โปรแกรมบวกลบเมทริกซ์ง่ายๆ 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

วิธีตรวจสอบข้อมูลภาษีของตัวเอง รายได้ทั้งปี และค่าลดหย่อน จบครบที่เดียว

สูตรโกง Regex ใครไม่เก่ง Regular Expression มาทางนี้จ้า

สรุปเนื้อหายูทูปยาวๆ ให้เป็นข้อความอ่านง่าย ภายในไม่กี่นาทีด้วย AI จาก Summarize.tech

คำถามจิตวิทยา และจริยธรรม เมื่อผมสามารถสับสวิตซ์รถไฟ และต้องเลือกชนใครสักคน

แนะนำเว็บจัดการเสียง มีฟังก์ชั่นเด็ดๆโดนๆเพียบ จะแยกเสียงดนตรีกับเสียงร้องก็ทำได้