Thursday, December 26, 2013

โปรแกรมอ่านข้อมูลจาก text file ด้วยภาษา c++

จากบทความโปรแกรมบันทึกข้อมูลลง text file ด้วยภาษา c++ ที่ได้นำเสนอไป ในบทความนี้ผมจะขอนำเสนอโปรแกรมอ่านข้อมูลจาก text file ด้วยภาษา c++ ซึ่งจะเป็นแสดงให้เห็นถึงการใช้ฟังก์ชันต่างๆใน library ของซีและซีพลัสพลัสมากขึ้น โดยโปรแกรมเล็กๆนี้เราสามารถนำไปใช้ในการแก้ปัญหาที่ต้องใช้เวลาในการดำเนินการมากได้เป็นอย่างดี รวมถึงนำไปประยุกต์เป็นฟังก์ชันเล็กๆในโปรแกรมขนาดใหญ่ที่เราจะพัฒนาในลำดับถัดไปครับ ตัวอย่างที่จะนำเสนอในวันนี้คือ การอ่านค่าสมาชิกใน matrix ซึ่งถูกเก็บไว้ใน text file ผ่านตัวแปร Dynamic Array  สมมุติเรามีสมาชิกใน matrix เก็บไว้ใน text file ชื่อ K.txt โดยมีข้อมูลเป็นจำนวนเต็ม matrix 3x3 ดังนี้
1 5 10
2 10 20
3 15 30
ในการอ่านไฟล์ txt เราจะใช้ ฟังก์ชัน fscanf เรามาเขียนโปรแกรมกัน



ผลการรันโปรแกรมจะแสดงผลสมาชิกของ Matrix 3x3 มาดังนี้

1 5 10
2 10 20
3 15 30

จาก Source Code โปรแกรม จะเริ่มจากการสร้างตัวแปร pointer ชนิด FILE เพื่อใช้เปิดไฟล์ text และสร้างตัวแปร K ชนิด Integer เป็น Dynamic Array แบบสองมิติ ขนาด 3x3 
จากนั้นจะทำการเปิดไฟล์ K.txt และตรวจสอบตัวแปร fp เพื่อพิจารณาผลลัพธ์ของการเปิดไฟล์ 
หากเปิดไฟล์ได้ก็จะเริ่มอ่านไฟล์ตั้งแต่แถวที่ 1 จนกระทั่งสิ้นสุดไฟล์ และปิดไฟล์ด้วยฟังก์ชัน fclose() และทำการแสดงสมาชิกที่อ่านเข้ามาเก็บไว้ที่ตัวแปร k 
จากโค้ดโปรแกรมจำนวนแถวของข้อมูลจะถูกเก็บไว้ที่ตัวแปร m ซึ่งสามารถนำไปใช้งานในการกำหนดขนาดของตัวแปร Array อื่นๆได้ครับ 
มาดูฟังก์ชัน fscanf กันครับ หากรูปแบบของข้อมูลใน text file มี , กั้นระหว่างสมาชิก (จะพบในกรณีที่เรา export file .csv จาก Excel) ในการใช้ฟังก์ชัน fscanf ก็จะต้องกำหนดรูปแบบให้สอดคล้องกันดังนี้
หรือในกรณีที่สมาชิกเป็นข้อมูลประเภทมีจุดทศนิยม เราก็ต้องปรับชนิดของตัวแปร k ให้เป็น float หรือ double เพื่อให้สอดคล้องกับข้อมูลมิเช่นนั้นจะเกิดการสูญเสียข้อมูลไป ทำให้เกิดความผิดพลาดจากการนำข้อมูลนี้ไปใช้งานประมวลผลต่อครับ

จากโค้ดนี้ท่านก็จะได้ Matrix 3x3 เก็บไว้ใน ARRAY เรียบร้อย และก็นำไปดำเนินการทาง matrix ได้ต่อไปครับ ไม่ว่าจะเป็น บวก ลบ คูณ หรือเตรียมสำหรับการ แก้ระบบสมการ ด้วยระเบียบวิธีทางตัวเลข (Numerical Method) ต่อไป สำหรับวิศวกร หรือนักวิทยาศาสตร์นะครับ เสริมท้ายก่อนจบ หากท่านมีข้อมูลใน text ไฟล์เป็นพันหรือหมื่นบรรทัด การใช้โปรแกรมนี้ประยุกต์เช้าไปอ่านก็สามารถทำได้โดยง่าย สวัสดีครับ


No comments :

Post a Comment