You are on page 1of 44

ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์

Engineering Students Union Academic Club

Computer Programming

Array, String & File


Tutor : P’ PondHub Computer Engineering
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

Lecture Computer Programming


© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

Array: แถวลาดับ

การประกาศและการกาหนดค่าของ Array

การรับค่า Array
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

การส่งค่า Array ไปทางานในฟังก์ชันอื่น

Multidimensional Array (Array หลายๆมิต)ิ

Algorithm ที่ควรรู้จัก
- Linear Search
- Bubble Sort
- Binary Search
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

แบบฝึกหัด
1.จงหาผลรันของข้อต่อไปนี้
1.1
#include <iostream>
using namespace std;
int main(){
int a[4][4] = {{5, 1, 8, 6}, {2, 3, 6, 3}, {4, 6, 4, 7},
{8, 1, 3, 3}};
int row[4] = {0};
int column[4] = {0};
for(int i=0; i<4; i++){
for(int j=0; j<4; j++){
row[i] += a[i][j];
column[j] += a[i][j];
}
}
for(int i=0; i<4; i++){
cout << row[i] << endl;
}
for(int i=0; i<4; i++){
cout << column[i] << " ";
}
return 0;
}

1.2 int main() {


const int SIZE = 10;
int a[SIZE] = {2, 4, 6, 8, 10};
for(int i = 0; i < SIZE; i += 2){
cout << a[i] << ' ';
}
return 0;
}
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

1.3 #include <iostream>


using namespace std;
int main(){
const int N = 5;
int arrayA[N][N] = {0};
for(int i=0; i<N; i++){
for(int j=0; j<=i; j++){
if(i==0||i==1)
arrayA[i][j] = 1;
else
arrayA[i][j]=arrayA[i-1][j-1]+arrayA[i-1][j];
}
}
for(int i=0; i<N; i++){
for(int j=0; j<=i; j++)
cout << “ ” << arrayA[i][j];
cout << endl;
}
return 0;
}

1.4 int main() {


char cm[3][3] = { 'a', 'n', 't', 'b', 'a', 't', 'c', 'a', 't'};
for(int i=0; i<3; i++){
for(int j=0; j<3; j++)
cout << cm[j][i] << ' ';
cout << endl;
}
return 0;
}
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

1.5 #include <iostream>


using namespace std;
int main()
{
const int n =5;
int a[3][3] = {{1,2,3},{2,3,4},{3,4,5}};
int b[n][n] = {0};
for(int i=1; i<n-1; i++){
for(int j=1; j<n-1; j++){
if (j!=i)
b[i][j] = a[i-1][j-1] + a[j-1][i-1];
}
}
for(int x=0; x<n; x++){
for(int y=0; y<n; y++){
cout << b[x][y] << ' ';
}
cout << endl;
}
return 0;
}
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

1.6 #include <iostream>


using namespace std;
int main(){
int A[3][3] = {{1,2,3}, {1,2,3}, {1,1,1}};
int rowA[3] = {0};
int colA[3] = {0,0,0};
int allA = 0;
for(int i=0; i<3; i++){
for(int j=0; j<3; j++){
if(A[i][j]==1) rowA[i]++;
colA[j]+=A[i][j];
allA+=A[i][j];
}
}
cout<<"allA = "<<allA<<endl;
cout<<"rowA =";
for(int i=0; i<3; i++) cout<<"\t"<<rowA[i]<<endl;
cout<<"colA = ";
for(int i=0; i<3; i++) cout<<colA[i]<<" ";
return 0;
}

1.7 #include <iostream>


using namespace std;
int main() {
int myArray[4][4], index1, index2;
for(index1 = 0; index1 < 4; index1++)
for(index2 = 0; index2 < 4; index2++)
myArray[index1][index2] = index2;
for(index1 = 0; index1 < 4; index1++){
for(index2 = 0; index2 < 4-index1; index2++)
cout<<myArray[index1][index2]<<" ";
cout<<endl;
}
return 0;
}
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

1.8 #include <iostream>


using namespace std;
main() {
int a[2][5] = {{1,2,3,4,5}, {0,0,0,0,0}};
for (int i=0; i<5; i++)
cout << a[0][i] << “ ”;
cout << endl;
for (int i=1;i<4;i++)
a[1][i] = a[0][i-1];
for(int i=0; i<5; i++)
cout << a[1][i] << “ ”;
cout << endl;
int b[5];
b[0] = 1;
b[1] = b[0] + 1;
b[2] = a[0][3];
b[3] = b[0] + b[1];
b[4] = b[b[0] + 1];
for(int i=0;i<5;i++)
cout << b[i] << “ “;
cout << endl;
int c[2][2][2] = {{{1,2},{3,4}},{{5,6},{7,8}}};
cout << c[0][1][0] << endl;
return 0;
}
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

1.9 #include <iostream>


using namespace std;
int A(int arr[][5], int r, int c) {
int m = arr[0][0];
for (int i = 0; i < r; i++)
for (int j = 0; j < c; j++)
if (arr[i][j] < m) m = arr[i][j];
return m;
}
float B(int arr[][5], int r, int c) {
float temp=0;
for (int i = 0; i < r; i++)
for (int j = 0; j < c; j++)
temp+=arr[i][j];
return temp/(r*c);
}
int C(int arr[][5], int x, int r, int c) {
for (int i = 0; i < r; i++)
for (int j = 0; j < c; j++)
if(x==arr[i][j])
return i+j;
return -1;
}
int main() {
int x[3][5] = {{13,4,35,22,3}, {30,3,7,9,2},
{3,4,4,9,2}};
cout << A(x, 3, 5) << endl;
cout << B(x, 3, 5) << endl;
cout << C(x,9,3,5) << endl;
cout << C(x,12,3,5) << endl;
return 0;
}
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

1.10 #include <iostream>


using namespace std;
void printA(int []);
int main() {
int a[5] = {1,2,3,4,5};
int b[5];
printA(a);
for(int i=0;i<4;i++) {
a[i] = a[i+1];
}
printA(a);
a[0]=1; a[1]=2;a[2]=0;a[3]=0;a[4]=0;
printA(a);
for(int i=0;i<5;i++) {
b[i] = a[4-i];
}
printA(b);
int c[2][5] ={ {1,2,3,4,5},{5,4,3,2,1} };
int d[5] = {0};
int i = 1;
d[0] = c[1][2] + c[2][3];
d[i] = c[i][i];
d[i+1] = c[i][i+1];
printA(d);
return 0;
}
void printA(int x[]) {
for (int i=0;i<5;i++) {
cout << x[i] << " ";
}
cout << endl;
}
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

2. จงเขียนโปรแกรมเพื่อให้ได้ผลรันที่ถูกต้อง

2.1 จงเขียนโปรแกรมภาษา C++ เพือ่ ทาการอ่านอาเรย์ของเลขจานวนเต็ม 5 จานวนสองอาเรย์แล้ว


ทาการรวมอาเรย์ทั้งสองเพือ่ สร้างอาเรย์ใหม่ หลังจากนั้นทาการจัดเรียงข้อมูลจากน้อยไปมากแล้วแสดงผล

ตัวอย่างผลรัน เมื่อผู้ใช้ปอ้ นค่าอาเรย์ A เป็น 4 1 3 5 2 และ ป้อนค่าอาเรย์ B เป็น 10 6 9 8 7


Enter array A: 4 1 3 5 2
Enter array B: 10 6 9 8 7
Result : 1 2 3 4 5 6 7 8 9 10
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

2.2 จงเขียนโปรแกรมภาษา C++ เพือ่ รับค่าข้อมูลเมทริกซ์จานวนเต็มขนาด 4x4 ตามตัวอย่างผลการทางาน


ด้านล่าง จากนั้นให้รบั ค่าจานวนเต็ม x ที่ต้องการค้นหาในเมทริกซ์ ทาการค้นหา แล้วแสดงตาแหน่งที่ค้นหาเจอเป็น
ตาแหน่งแรกออกทางจอภาพ โดยให้ทาการค้นหาจากซ้ายไปขวาและบนลงล่าง ถ้าไม่เจอจานวนเต็ม x ในเมทริกซ์ให้
แสดงข้อความออกทางจอภาพว่า “Not Found!”
ตัวอย่ างผลรันที่ 1 (ตัวหนาคือค่าที่ผ้ ใู ช้ ป้อนเข้ าไป) ตัวอย่างผลรันที่ 2
Input matrix A: Input matrix A:
Row 0: 1 2 3 4 Row 0: 1 2 3 4
Row 1: 4 5 6 5 Row 1: 4 5 6 5
Row 2: 7 8 9 1 Row 2: 7 8 9 1
Row 3: 4 5 6 0 Row 3: 4 5 6 0
Enter search value: 6 Enter search value: 77
Found 6 at A[1][2] Not Found!
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

2.3 การแก้ระบบสมการเส้นตรงทีม่ ีสมการตัง้ แต่ 1 สมการขึน้ ไป ทาได้โดยแทนระบบสมการให้อยู่ในรูป


เมทริกซ์ (เรียกกันว่า เมทริกซ์แต่งเติม) แล้วใช้กระบวนการที่เรียกว่า การดาเนินการตามแถวขั้นมูลฐาน ในการหา
คาตอบ การดาเนินการตามแถวขั้นมูลฐาน ประกอบไปด้วย 3 การดาเนินการ คือ
1) การคูณแถวใดแถวหนึ่งด้วยเลขจานวนจริง
2) การสลับแถวสองแถว
3) การเอาแถวใดแถวหนึ่งคูณกับจานวนจริงแล้วบวกกับอีกแถว
จงเขียนโปรแกรมภาษา C++ เพื่อรับค่าเมทริกซ์ขนาด 3x3 แล้ววนรับคาสัง่ ของผู้ใช้ ดังนี้
 เมื่อผู้ใช้ป้อนคาสัง่ เป็น 1 ให้รับตัวเลขแถว และเลขจานวนจริงแล้วทาการคูณแถวนั้นด้วยเลขจานวนจริง
 เมื่อผู้ใช้ป้อนคาสัง่ เป็น 2 ให้รับเลขแถวสองแถว แล้วทาการสลับแถว
 เมื่อผู้ใช้ป้อนคาสัง่ เป็น 3 ให้รับเลขแถวสองแถว (rowA และ rowB) และเลขจานวนจริง (x) แล้วแทนที่แถว
แรกที่ปอ้ นด้วยแถวแรก บวกด้วยแถวที่สองคูณด้วยจานวนจริง นั่นคือ rowA = rowA + x*rowB
 เมื่อผู้ใช้ป้อนคาสัง่ เป็น 0 ให้ออกจากโปรแกรม
 เมื่อผู้ใช้ป้อนค่าอื่นๆ ไม่ต้องดาเนินการใดๆกับเมทริกซ์

แสดงผลที่ได้ ดงั ตัวอย่างต่อไปนี ้ โดยตัวหนาคือค่าที่ผ้ ใู ช้ ปอ้ นเข้ าไป


Enter your matrix: 1 2 3 4 5 6 7 8 9
Enter your command: 1
Enter row number: 1
Enter constant: 2
Output:
2 4 6
4 5 6
7 8 9
Enter your command: 2
Enter two rows number to swap: 2 3
Output:
2 4 6
7 8 9
4 5 6
Enter your command: 3
Enter 1st row, 2nd row and constant: 3 1 -2
Output:
2 4 6
7 8 9
0 -3 -6
Enter your command: 9
Output:
2 4 6
7 8 9
0 -3 -6
Enter your command: 0
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

2.4 รูปภาพสามารถแทนด้วย array 2 มิติ โดยมีข้อมูลใน array เป็นจานวนเต็ม ในการกลับรูปภาพ (flip)


สามารถทาได้โดยการกลับข้อมูลใน array โดยปกติการกลับรูปสามารถทาได้ 2 แนว คือ แนวตั้ง (horizontal) หรือ
แนวนอน (vertical)
 จงเขียนฟังก์ชัน flip ที่ไม่ส่งข้อมูลกลับ (void function) โดยรับส่งค่า array 2 มิติ ขนาด 100 x 100
และวิธีการกลับเป็นค่าจานวนเต็ม โดย 0 เป็นการกลับรูปแนวตั้งและ 1 เป็นการกลับรูป แนวนอน โดยฟังก์ชัน ทาการ
flip ค่าใน array ตามวิธีการกลับภาพและ
 จงเขียนโปรแกรม main ที่เรียกใช้ฟังก์ชันดังกล่าว
การกลับรูปแนวตั้งทาได้โดยสลับที่ข้อมูลคอลัมน์แรกกับข้อมูลคอลัมน์สุดท้าย ข้อมูลคอลัมน์ ตัวถัดมากับข้อมูล
คอลัมน์รองสุดท้าย ทาจนกระทั่งถึงข้อมูลตัวตรงกลางการกลับรูปแนวนอนทาได้โดยสลับที่ข้อมูลแถวแรก
กับข้อมูลแถวสุดท้าย ข้อมูลแถวตัวถัดมากับข้อมูลแถว รองสุดท้าย ทาจนกระทั่งถึงข้อมูล ตัวตรงกลาง
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

2.5 จงเขียนโปรแกรมเพื่อคานวณค่า Pascal’s Triangle ในรูปแบบของ Array 2 มิติขนาด 4x4 ตาม


ตัวอย่างดังนี้

โดยโปรแกรมจะต้องใช้ for loop คานวณค่าและเก็บค่าที่คานวณได้ใน array แล้วทาการแสดงผลทางจอภาพ โดย


ค่าที่ อยู่ใน array จะต้องทาการคานวณจากวิธีดังต่อไปนี้
1. ให้ใส่ค่าใน array แถวแรกดัวย 1 และคอลัมน์แรกด้วย 1
2. ค่าในแต่ละช่องหลังจากนั้นจะเท่ากับค่าในช่องก่อนหน้าในแถวเดียวกันบวกด้วยค่าในช่องข้างบนที่คอลัมน์
ตรงกัน
3. การคานวณจะต้องทาจากซ้ายไปขวาและจากบนลงล่าง โดยเริ่มจากตัวถัดจากตัวแรกและแถวถัดจากแถว
แรก
4. พิมพ์ผลลัพธ์ตามตัวอย่าง คือตั้งความกว้าง 4 ตัวอักษร
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

2.6 จงเขียนโปรแกรมสาหรับสร้างเมทริกซ์ (matrix) สมมาตรจากสมการ B = A + AT กาหนดให้ A และ B


เป็นเมทริกซ์ของเลข จานวนเต็มขนาด 4x4 กาหนดให้รบั ค่าสมาชิกในเมทริกซ์ A ทั้งหมดจากแป้นพิมพ์เก็บไว้ใน
อาเรย์ 2 มิติ คานวณและเก็บผลลัพธ์ใน เมทริกซ์ B แล้วแสดงผลออกทางจอภาพ (12 คะแนน)
Note: AT คือเมทริกซ์สลับเปลี่ยน (transpose) ของ A
ตัวอย่างผลรัน

Input values for the matrix A:


Row0: 0 1 2 3
Row1: 0 0 1 2
Row2: 0 0 0 1
Row3: 0 0 0 0
Matrix B =
0 1 2 3
1 0 1 2
2 1 0 1
3 2 1 0
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

2.7 จงเขียนโปรแกรมรับค่าข้อมูลเมทริกซ์จานวนเต็มสองเมทริกซ์ ขนาด 3x3 และ 3x3 คานวณหาผลคูณ


แล้วแสดงค่าที่คานวณได้ทางจอภาพ โดยใช้ for loop ให้แสดงผลเหมือนกับตัวอย่างผลการทางาน (12 คะแนน)
โดยที่สมาชิกแต่ละตัวของเมทริกซ์ผลคูณคือ

ตัวอย่างผลรัน (ตัวหนาคือข้อมูลทีป่ ้อน)


© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

2.9 จงเขียนโปรแกรมภาษา C++ รับค่าสมาชิกของอาร์เรย์ a ขนาด 3 x 3 ผ่านทางแป้นพิมพ์ แล้วทาการ


สลับคอลัมน์ของอาร์เรย์ a จากคอลัมน์สุดท้ายมาเป็นคอลัมน์แรก เก็บผลการสลับในอาร์เรย์ b แล้วแสดงผลลัพธ์ของ
อาร์เรย์ b ออกทางจอภาพ เมือ่ กำหนดให้
า ค่าสมาชิกในอาร์เรย์มีค่าเป็นจาำนวนเต็ม (12 คะแนน)
ตัวอย่างผลรัน เมื่อป้อนค่า (1,2,3) (4,5,6) (7,8,9) ให้กับอาร์เรย์ a ตามลาดับ
Input numbers for array a:
1 2 3
4 5 6
7 8 9
Result in array b:
3 2 1
6 5 4
9 8 7
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

2.10 จงเขียนโปรแกรมภาษา C++ คานวณและแสดงค่าเฉลี่ย (Mean) และค่าเบี่ยงเบนมาตรฐาน(Standard


Deviation) ของคะแนนสอบในห้องที่มีนกั เรียนจานวน 15 คน โดยมีข้อกาหนดดังต่อไปนี้
• รับค่าคะแนนสอบ (เต็ม 10 คะแนน) ของนักเรียนแต่ละคนจากแป้นพิมพ์เข้ามาเก็บไว้ในอาร์เรย์ A
• หาค่าเฉลี่ยจากสูตร

หาค่าเบี่ยงเบนมาตรฐานจากสูตร

ตัวอย่างผลรัน

Please enter scores for 15 students:


3 10 4 2 3 6 9 3 10 10 3 7 0 6 1
Mean = 5.13333
SD = 3.30387
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

มาถึงครึ่งทางแล้ว สู้ๆนะจ๊ะ
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

STRING
สตริง (String) ในภาษา C ก็คือ อาร์เรย์ของตัวอักษร ที่มีข้อมูลชนิดตัวอักษรเรียงกันไปแต่จะต้องมีจุดสิ้นสุด
ด้วย โดยจะใช้ตัวอักษรวางหรือ Null Character เป็นจุดสิ้นสุดของสตริง

“Hello” H e l l o \0

“A String”

เนื่องจากสตริงอยู่ในคลาส <string> ในการใช้งานจะต้องมีการ #include <string> ด้วย

#include <string>
using namespace std; // Or using std::string;

string s1; // s1 = ""


string s2( "abcdef" ); // s2 = "abcdef"
string s3( s2 ); // s3 = "abcdef"
string s4( s2, 1 ); // s4 = "bcdef"
string s5( s2, 3, 2 ); // s5 = "de"
string s6( 10, '-' ); // s6 = "----------"

Input/Output String
cin >> stringObject; //it skips over whitespace

getline( cin, s); //does not skip over whitespace


//delimited by newline
//reads an entire line of characters into s
cout >> stringObject;

ตัวดาเนินการกับ String ( +, >, ==, != )


string s2 = “AB*”;
string s5 = “DEF”;
s2 += s5; //changes s2 to “AB*DEF”
s2[2] = E; //changes s2 to “ABCDEF”
s2 = s2 + “GHI” //changes s2 to “AB*DEFGHI”

If(s2 < s5)


cout << “s2 lexicographically precedes s5 \n”;
while(s4==s3) //เป็ นต้น
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

String Functions

s.length()

s.append( string, s)

s.substr( index, length)

s.find( string)

s.erase( index, length)

s.replace( index, length, string)


© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

แบบฝึกหัด
1. กาหนดให้
string s = "Computer Programming";
จงเขียนคาสั่งในการจัดการ string s เพื่อแสดงผลให้ได้ข้อความดังต่อไปนี้ [1/2007]
1.1 แสดงข้อความ "Program" (1 คะแนน)
__________________________________________________
__________________________________________________

1.2 แสดงความยาวของ string s (1 คะแนน)


__________________________________________________
__________________________________________________

1.3 แสดงตาแหน่งแรกที่พบข้อความ "min" (1 คะแนน)


__________________________________________________
__________________________________________________

1.4 แสดงข้อความ "188110 Computer Programming" (1 คะแนน)


__________________________________________________
__________________________________________________

1.5 แสดงข้อความ "Computing" (1 คะแนน)


__________________________________________________
__________________________________________________
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

2. จงหาผลการทางานของส่วนของโปรแกรม ต่อไปนี้

string d = "15/09/2555";
string d1 = d.substr(6,4) + "-" + d.substr(3,2) + "-" + d.substr(0,2);
cout << d1;

__________________________________________________
__________________________________________________

string filename = "input.txt";


int dot = filename.find(".");
string fname = filename.substr(0,dot);
string ext = filename.substr(dot + 1,filename.length());
cout << fname << endl;
cout << ext << endl;

__________________________________________________
__________________________________________________

string noun = "Computer";


string noun2 = noun.replace(6,2,"ing");
cout << noun2;

__________________________________________________
__________________________________________________

string star(5,'*');
cout << star;

__________________________________________________
__________________________________________________

string u = "Khon Kaen Unviersity";


cout << u[0] << u[5] << u[10];

__________________________________________________
__________________________________________________
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

3. จงหาผลรันของโปรแกรมต่อไปนี้ (หมายเหตุ ___ หมายถึงการแสดงผลรัน 1 อักขระ)

3.1 #include <iostream>


#include <string>
using namespace std;
int main (){
string s1 = "Faculty of Sciences";
string s2 = "Faculty of Associated Medical Sciences";
cout << "1: " << (s1 < s2) << endl;
cout << "2: " << s2.substr (22, 5) << endl;
cout << "3: " << s2.length () << endl;
cout << "4: " << s1.replace (0, 10, "Applied") << endl;
return 0;
}

3.2 #include <iostream>


#include <string>
using namespace std;
int main(){
string s1 = "Computer Engineering";
string s2 = "Faculty of Engineering";
string s3, s4;
s3 = s1.substr(0, 8);
s4 = s2.replace(0, 7, "Mechanical");
cout << s1 + '\n' + s2 <<endl;
cout << s3 << endl;
cout << s4 << endl;
cout << "Length of s3: " << s3.length() << endl;
}
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

4. จงหาผลรันของโปรแกรมต่อไปนี้ (หมายเหตุ ___ หมายถึงการแสดงผลรัน 1 อักขระ)

#include <iostream>
#include <string>
using namespace std;
int main()
{
string s1 = "computer programming";
cout << "answer 1: ";
cout << s1.substr(10,2) << s1.substr(4,2) << s1.substr(17,3) << endl;
string s2 = s1.replace(s1.find("programm"),8,"engineer");
cout << "answer 2: " << s2 << endl;
string s3 = s2.erase(s1.find("engineer"),11) + "sciences";
cout << "answer 3: " << s3 << endl;
if (s1 < s3) cout << "answer 4: " << s1 << endl;
else cout << "answer 4: " << s3 << endl;
return 0;
}
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

5. จงหาผลรันของโปรแกรมต่อไปนี้ (หมายเหตุ ___ หมายถึงการแสดงผลรัน 1 อักขระ)

#include <iostream>
using namespace std;
int main(){
string s1="Overdue";
string s2="Overtime";
string s3="Overdose";
string all = s3 + " of " + s1 + " on " + s2;
cout << "all = " << all << endl;
cout << "Found " << s1 << " in [all] at " << all.find(s1) << endl;
if(s1 < s2)
cout << s1 << " come before " << s2 << endl;
else if(s1 > s2)
cout << s1 << " come after " << s2 << endl;
else
cout << s1 << " and " << s2 << " are equal" << endl;
cout << "s3.substr(5,2) = " << s3.substr(5,2) << endl;
cout << "\ts3 = " << s3 << endl;
s3.replace(5,2,"u");
cout << "After s3.replace(5,2,\"u\")" << endl;
cout << "\ts3 = " << s3 << endl;
return 0;
}
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

6. จงเขียนโปรแกรมภาษา C++ รับสตริงผ่านทางแป้นพิมพ์เพื่อเข้ารหัส แล้วแสดงผลการเข้ารหัสออกทางจอภาพ


โดยเงื่อนไขการเข้ารหัสคือ ตัวอักขระในสตริงจะถูกเปลี่ยนเป็นตัวอักขระในสตริงสองตัวถัดไป โดยที่อักขระสองตัวแรก
จะวนกลับไปต่อท้ายสตริง
ตัวอย่างผลรัน เมื่อกรอกข้อความ Zebra
Enter your code : Zebra
Your encrypted code is braZe
ตัวอย่างผลรัน เมื่อกรอกข้อความ Suarez
Enter your code : Suarez
Your encrypted code is arezSu
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

File
ภาษา C++ ได้เตรียมคลาสในการทางานร่วมกับไฟล์ทจี ะนามาใช้เป็นอินพุต และเอาต์พุตไว้คล้ายกับ
โปรแกรมคอมพิวเตอร์ส่วนใหญ่แล้วคือคลาส fstream สาหรับจัดการไฟล์ทเี่ ป็นอินพุตและเอาต์พุต จึงต้องมีการ
#include<fstream> หากต้องการเขียนไฟล์จะใช้อ็อบเจ็กต์จากคลาส ofstream กรณีต้องการอ่านข้อมูลจาก
ไฟล์จะใช้อ็อบเจ็กต์จากคลาส ifstream

1. การบันทึกสตริงเขาไฟล

ofstream writeText(“Data.txt”)
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

2. การอ่านสตริงจากไฟล

ifstream readText(“Data2.TXT”);
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

7. กาหนดให้ไฟล์ deposit.txt เก็บยอดเงินรับฝากเป็นจานวนเต็มบรรทัดละ 1 ค่า จงเขียนโปรแกรมภาษา


C++ อ่านค่ายอดเงินรับฝากจากไฟล์ deposit.txt เพื่อคานวณหาผลรวมของยอดเงินรับฝากทัง้ หมดบันทึกลงในไฟล์
ชื่อ balance.txt (12 คะแนน) [1/2008]

ตัวอย่างผลรัน เมื่อไฟล์ deposit.txt มีข้อมูลเป็น


1200
500
2000

จะได้ผลลัพธ์ในไฟล์ balance.txt เป็น 3700


3700
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

8. จงเขียนโปรแกรมภาษา C++ รับข้อมูลจานวนเต็มผ่านทางแป้นพิมพ์ โดยโปรแกรมจะพิจารณาว่า ถ้าจานวนเต็ม


เป็นจานวนคี่ จะบันทึกค่าลงในไฟล์ชื่อ odd.dat แต่ถ้าเป็นจานวนคู่ จะบันทึกค่าลงในไฟล์ชื่อ even.dat
โปรแกรมจะสิ้นสุดการทางานเมื่อผู้ใช้ป้อนค่าจานวนเต็ม

ตัวอย่างผลรัน เมื่อป้อนตัวเลข 5 2 4 6 8 1 0
ที่หน้าจอคอมพิวเตอร์
Please enter integers (0 to quit): 5 2 4 6 8 1 0

ในไฟล์ odd.dat ในไฟล์ even.dat


5 1 2 4 6 8 0
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

9. จงเขียนโปรแกรมภาษา C++ รับ ชื่อและคะแนน (จานวนเต็ม) ผ่านทางแป้นพิมพ์ แล้วทาการตรวจสอบว่าคะแนน


ที่ได้รับผ่านเกณฑ์การประเมินผล (50 คะแนนขึ้นไป) หรือไม่ ถ้าผ่านให้บันทึกชื่อและคะแนนลงในแฟ้มข้อมูลชื่อ
“pass.txt” แต่ถ้าไม่ผ่าน ให้บันทึกชื่อและคะแนนลงในแฟ้มข้อมูลชื่อ “fail.txt” โดยโปรแกรมจะสิ้นสุด
การประมวลผลเมื่อผู้ใช้ปอ้ นค่าชื่อเป็นข้อความว่า “eof ”

ตัวอย่างการป้อนผ่านแป้นพิมพ์ ไฟล์ pass.txt ไฟล์ fail.txt

Enter name: nadej nadej 85 jameji 40


Enter score: 85 yaya 84 bella 30
Enter name: yaya mario 75
Enter score: 84
Enter name: jameji
Enter score: 40
Enter name: mario
Enter score: 75
Enter name: bella
Enter score: 30
Enter name: eof
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

10. จงเติมคาในช่องว่างให้ถูกต้อง

#include <iostream>
#include __________
using namespace std;
int main() {
________ infile("input.txt");
ofstream ________("output.txt");
string word;
char c;
while ( _________ >> word) {
if (word[0] >= 'a' && word[0] <= 'z')
word[0] += 'A' - 'a';
outfile << word;
infile.___________(c);
______________.put(c);
}
infile.close();
outfile.close();
return 0;

}
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

11. จงเขียนโปรแกรมภาษา C++ รับตัวเลขจานวนเต็มผ่านทางแป้นพิมพ์ แล้วบันทึกข้อมูลลงในแฟ้ม square.txt


เป็นรูปสี่เหลี่ยมจัตรุ ัสความยาวด้านเท่ากับจานวนเต็มทีร่ ับเข้ามา ดังตัวอย่างต่อไปนี้
Input an integer: 5
ข้อมูลที่โปรแกรมบันทึกในไฟล์ square.txt

* * * * *
* *
* *
* *
* * * * *

Input an integer: 8
ข้อมูลที่โปรแกรมบันทึกในไฟล์ square.txt

********
* *
* *
* *
* *
* *
* *
********
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

12. จงหาผลรันของโปรแกรมต่อไปนี้
#include <fstream>
#include <iostream>
using namespace std;
int main() {
ifstream infile("input.txt");
ofstream outfile1("output1.txt");
ofstream outfile2("output2.txt");
ofstream outfile3("output3.txt");
string checkword;
string word1;
string word2;
char c;
while (infile >> word1){
checkword = word1.substr(2,3);
outfile1 << checkword<<endl;
outfile2 << word1.replace(1,2,checkword) << endl;
}
outfile2.close();
ifstream infile2("output2.txt");
while (infile2 >> word2){
outfile3 << word2.length() << endl;
}
infile.close();
infile2.close();
outfile1.close();
outfile3.close();
return 0;
}

ข้อมูลในไฟล์ input.txt
Faculty of Engineering
Khon Kaen University
Thailand

ข้อมูลในไฟล์ output1.txt ข้อมูลในไฟล์ output2.txt ข้อมูลในไฟล์ output3.txt


© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

13. จงหาผลรันของโปรแกรมต่อไปนี้

13.1
#include <iostream>
using namespace std;
int main() {
string s1 = "Computer";
string s2 = "Engineer";
if (s1 < s2)
cout << s1 << endl;
else
cout << s2 << endl;
cout << s1.find("put") + s2.length() << endl;
cout << s1.substr(5,2) + s2.substr(1,1) << endl;
cout << s1.replace(4,4,s2.erase(3,5)) << endl;
return 0;
}

__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

13.2
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream infile("score.txt");
ofstream outfile("result.txt");
string name;
int score, nPass = 0, nFail = 0;
while (infile >> name) {
outfile << name << '\t';
infile >> score;
if (score >= 60) {
outfile << "Pass\n";
nPass++;
} else {
outfile << "Fail\n";
nFail++;
}
}
cout << "Passes = " << nPass << endl;
cout << "Fails = " << nFail << endl;
return 0;
}

เมื่อกาหนดให้ “score.txt” เก็บข้อมูล

ผลรันทีป่ รากฏใน “result.txt”


__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
ผลรันทีป่ รากฏบนจอภาพ
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

14. จงเขียนโปรแกรมภาษา C++ สาหรับอ่านไฟล์ข้อความชื่อ input.txt ภายในไฟล์ประกอบด้วยตัวเลข 0 และ 1


เป็นค่าตรรกะอินพุตของวงจรขนาด 4 บิต คือ a, b, c และ d ตามตาแหน่งของบิต มีจานวนข้อมูลไม่เกิน 16 บรรทัด
กรณีที่มีค่าเป็น 0 จะแทนด้วยสัญลักษณ์ a’ หรือ b’ หรือ c’ หรือ d’ ตามแต่ละตาแหน่งของบิต และแทนค่า 1 ด้วย
สัญลักษณ์ a หรือ b หรือ c หรือ d ตามแต่ละตาแหน่งของบิต ให้แปลงค่าตัวเลขทั้งหมดเป็นสัญลักษณ์และนาไปเก็บ
ไว้ในไฟล์ชื่อ variable.txt พร้อมทั้งแสดงผลการแปลงไปที่หน้าจอมอนิเตอร์ (12 คะแนน)
Note: ตัวเลข 0 และ 1 ใน input.txt คั่นด้วยช่องว่าง
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

ฮั่นแน่ ~~ มาได้ขนาดนี้เชียวหรอม
อย่าลืมส่งใบคอมเม้นด้วยนะ!!!
© ชุมนุมวิชาการ สโมสรนักศึกษาคณะวิศวกรรมศาสตร์ (Engineering Students Union Academic Club)

แสดงความคิดเห็น
โครงการเตรียมความพร้อมก่อนสอบ ปีการศึกษา 2562
นายปวเรศ นิยมเหลา (P’PondHub) ภาควิชาวิศวกรรมคอมพิวเตอร์

You might also like