โปรแกรมบวกลบเมทริกซ์ง่ายๆ by C++ (ตอนที่ 1)
สวัสดีครับชาวเอนจิเนียร์อินดี้ เจอกันอีกแล้ว
โพสนี้แอดมินจะเอาเทอมโปรเจคสายโปรแกรมมิ่งแบบง่ายๆ (ย้ำ ง่ายๆ) มาฝาก
เป็นโปรแกรมบวกลบเมทริกซ์ ซึ่งจะใช้ภาษาซีพลัสพลัสเขียน
ตัวโปรแกรมเหมาะมากสำหรับการเรียนรู้โปรแกรมมิ่ง เพราะครอบคุมส่วนต่างๆในการเรียนโปรแกรมมิ่งขั้นพื้นฐานทั่วไป ทั้งการแสดงผลทางหน้าจอ การรับอินพุต If-Else, Loop, Array, Struct และอื่นๆ
ดังนั้นโปรแกรมนี้จึงเหมาะสำหรับผู้สนใจโปรแกรมมิ่งเบื้องต้นอย่างมาก
และสามารถเป็นแนวทางต่อผู้ที่จะนำไปทำเป็นเทอมโปรเจค (สายฟรีดอม) ได้อีกด้วย
เพื่อไม่ให้เสียเวลาไปเริ่มกันเลยดีกว่า
เออลืมบอกไปอีกอย่างนะ ดูไปแค่คอนเซปก็พอ เพราะตัวโปรแกรมบั๊คเพียบเลย ฮะๆ
เออลืมบอกไปอีกอย่างนะ ดูไปแค่คอนเซปก็พอ เพราะตัวโปรแกรมบั๊คเพียบเลย ฮะๆ
เมทริกซ์คือ ???
หลายท่านคงจะทราบกันดีหรือถ้ายังไม่ทราบก็จะอธิบายตรงนี้ว่า
มันคือ ตารางสี่เหลี่ยมที่แต่ละช่องบรรจุจำนวนหรือโครงสร้างทางคณิตศาสตร์ที่สามารถนำมาบวกและคูณกับตำเลขได้ เราสามารถใช้เมทริกซ์แทนระบบสมการเชิงเส้น และใช้เก็บข้อมูลที่ขึ้นกับตัวแปลต้นสองตัว เมทริกซ์จึงเป็นแนวคิดที่มีความสำคัญต่อพีชคณิตเชิงเส้นอย่างมาก #Wikipedia
สำหรับ ม.6 คงได้เรียนกันมาบ้าง ใครสนใจลองศึกษาดูไม่ยากครับ
ออกแบบโปรแกรม
- โปรแกรมต้อง Insert เมทริกซ์ได้ก่อน
- มีบวกกับลบเมทริกซ์
- มี Transpose (มันก็คือการสลับสมาชิกจากแถวเป็นหลัก จากหลักเป็นแถว)
- เมทริกซ์ต้องคูณกับค่าคงที่ได้
ส่วนนี้คือออกแบบว่าอยากให้โปรแกรมมีอะไรบ้างก็เขียนไป
เริ่มเขียนกันเลย
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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; | |
} |
ใน matrix ก็ต้องมี
- ชื่อ matrix
- ขนาดเมทริกซ์ ผมเก็บไว้ในตัวแปล x,y
- ตัวสำคัญก็คือ อาเรย์ 2 มิติครับ
แล้วก็สร้างเมทริกมาหนึ่งตัวชื่อ one เหมือนเป็นการ new เรียกเอามาใช้งานครับ
ในเมนตอนนี้ก็ยังไม่มีอะไรครับ แสดงคำสั่งว่าจะให้ผุ้ใช้กดอะไรได้มั่ง
สร้างฟังก์ชัน Insert Matrix เนื่องจากไม่ Return ค่าดังนั้นใช้เป็น Void นะครับ
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 ด้วยนะครับ
ไปดูในฟังก์ชันเลย
- ให้ผู้ใช้กรอกชื่อของเมทริกซ์
- กรอกขนาดของแถว
- กรอกขนาดของหลัก
- วนลูปตามการคำนวณหลักและแถว เพื่อให้ผู้ใช้กรอกข้อมูลทีละช่อง เช่นเมริกซ์ขนาด 2*3 ผู้ใช้จะต้องกรอกข้อมูลทั้งหมด 6 ตัว เป็นต้น
- วนลูปเพื่อแสดงชื่อและเมทริกซ์ของผู้ใช้
เพราะต้องใช้ Struct ร่วมกับ Array 2 มิติ
จากนั้นในเมนให้ใส่เพิ่มไปประมาณนี้ ก่อนหน้าคำสั่ง getch();
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); |
โดยที่การกด 5 จะเป็นการออกจากโปรแกรม
สุดท้ายจะได้ประมาณนี้
![]() |
คร่าวๆล่ะกันเนาะ อันไหนผมใส่ตัวเลขก็ใส่ตามผมนะ อย่าไปลองใส่ตัวอักษรล่ะ เดี๋ยวบั๊คกระจาย |
เอาเป็นว่าลองไปเล่นดูก่อนล่ะกัน
เพื่อจะมีไอเดียอะไรเพิ่ม หรือถ้าใครคิดได้แหล่มกว่าแอดมินลองเอามาแชร์กันนะ
โพสนี้เท่านี้ก่อนแล้วกัน เดี๋ยวมาต่อ
ที่สำคัญอย่างที่เคยบอกไปตอนต้นคือ บั๊คมันเยอะ เอาไปแค่คอนเซปล่ะกัน
และสำหรับยูสเซอร์อ่านคำสั่งดีๆ ถ้าเค้าให้ใส่ตัวเลขก็ใส่ตัวเลขนะ อย่าทะลึ่งใส่ตัวอักษร
ไม่อย่างนั้นจะหาว่าไม่เตือน อิอิ
***** (02/03/2013) พอดีแอดมินตั้งให้บทความไม่สามารถ Copy ได้ ดังนั้น ให้ไปโหลดโปรแกรมตัวเต็มมาลองเล่นได้เลยนะครับ ขอบอกว่าโค๊ดยาวมากเพราช่วงที่แอดมินเขียนโปรแกรมนี้ยังไม่ถนัด OOP บางฟังก์ชันยังไม่ได้ทำ และทำให้แอดมินขอไม่เขียนตอนที่ 2 เพราะให้ไปแกะโค๊ดเอา อิอิ *****
โปรแกรมตัวเต็ม >>> ดาวน์โหลดโค๊ดที่นี่