886201 หลักการ โปรแกรม 1
DESCRIPTION
886201 หลักการ โปรแกรม 1. Lecture 10: การวนซ้ำแบบมีโครงสร้างการวนซ้ำซ้อนกัน. Nested Loops. Nested loop มักจะถูกใช้กับข้อ มูลที่มีลักษณะเป็นตาราง มีแถวและคอลัมน์ การประมวลผลข้อมูลแต่ละแถวแต่ละหลักจะเป็นลักษณะ loop ซ้อน loop - PowerPoint PPT PresentationTRANSCRIPT
886201 หลั�กการโปรแกรม 1Lecture 10: การวนซ้ำ��าแบบม�โครงสร�างการวนซ้ำ��าซ้ำ�อนก�น
Nested Loops
• Nested loop ม�กจะถู�กใช้�ก�บข้�อม�ลัที่� ม�ลั�กษณะเป$นตาราง ม�แถูวแลัะคอลั�มน&
• การประมวลัผลัข้�อม�ลัแต(ลัะแถูวแต(ลัะหลั�กจะเป$นลั�กษณะ loop ซ้ำ�อน loop
• ม� loop นอก แลัะ loop ใน ส�าหร�บวนประมวลัผลัข้�อม�ลัแต(ลัะแถูวแต(ลัะหลั�ก
Nested Loops
ลัองเข้�ยนโปรแกรมเพื่+ อแสดงข้�อม�ลัด�งตารางต(อไปน��
Nested Loops
• จากโจที่ย&ข้�างต�น จะเห.นว(าข้�อม�ลัม� 4 คอลั�มน& ส�าหร�บแสดงค(า x1 ถู/ง x4
• ข้�อม�ลัแต(ลัะแถูวในตาราง เป$นค(า x ต��งแต( 1 ถู/ง 10
Nested Loops
• ข้�อม�ลัแต(ลัะแถูวในตาราง เป$นค(า x ต��งแต( 1 ถู/ง 10
Nested Loops
#include <iostream>#include <iomanip>#include <cmath>using namespace std;
int main(){ const int NMAX = 4; const double XMAX = 10;
// Print table header for (int n = 1; n <= NMAX; n++) { cout << setw(10) << n; } cout << endl; for (int n = 1; n <= NMAX; n++) { cout << setw(10) << "x "; } cout << endl << endl;
The Complete Program for Table of Powers
// Print table body for (double x = 1; x <= XMAX; x++) { // Print table row for (int n = 1; n <= NMAX; n++) { cout << setw(10) << pow(x, n); } cout << endl; }
return 0;}
The program run would be:
ต�วอย(าง 1• เข้�ยนโปรแกรมร�บค(า n แลัะแสดงผลัลั�พื่ธ์& ด�งน��
จ�านวนแถูว (i) ข้/�นอย�(ก�บจ�านวนคอลั�มน& (j) ข้/�นอย�(ก�บ
n
n
for ( int i = 1; i <= n; i++ ) {
for ( int j = 1; j <= n; j++ ) {
cout << “A”;} cout << endl;
}
for i from 1 to n for j from 1 to n
print “A” end forend for
ต�วอย(าง 2• เข้�ยนโปรแกรมร�บค(า n แลัะแสดงผลัลั�พื่ธ์& ด�งน��
n
i
จ�านวนแถูว (i) ข้/�นอย�(ก�บจ�านวนคอลั�มน& (j) ข้/�นอย�(ก�บ
for i from 1 to n for j from 1 to i
print “A” end forend for
for ( int i = 1; i <= n; i++ ) {
for ( int j = 1; j <= i; j++ ) {
cout << “A”;}cout << endl;
}
แบบฝึ2กห�ดที่� 1• ลัองเข้�ยนโปรแกรมเพื่+ อร�บค(า n แลัะแสดงผลัลั�พื่ธ์& ด�งน�� จ�านวนแถูว (i) ข้/�นอย�(ก�บ n
จ�านวนคอลั�มน& (j) ข้/�นอย�(ก�บi
แบบฝึ2กห�ดที่� 2• ลัองเข้�ยนโปรแกรมเพื่+ อร�บค(า n แลัะแสดงผลัลั�พื่ธ์& ด�งน�� จ�านวนแถูว (i) ข้/�นอย�(ก�บ
จ�านวนคอลั�มน& (j) ข้/�นอย�(ก�บni
แบบฝึ2กห�ดที่� 3• ลัองเข้�ยนโปรแกรมเพื่+ อร�บค(า n แลัะแสดงผลัลั�พื่ธ์& ด�งน�� จ�านวนแถูว (i) ข้/�นอย�(ก�บ
จ�านวนคอลั�มน& (j) ข้/�นอย�(ก�บnn
ต�วอย(าง 3• เข้�ยนโปรแกรมร�บค(า n จากน��นแสดงผลัที่��งหมด n บรรที่�ด• ถู�าเป$นบรรที่�ดแรก หร+อ บรรที่�ดส3ดที่�าย แสดง * จ�านวน n ต�ว
• บรรที่�ดอ+ น ๆ แสดง A จ�านวน n ต�ว
จ�านวนแถูว (i) ข้/�นอย�(ก�บจ�านวนคอลั�มน& (j)ข้/�นอย�(ก�บ
nn
for i from 1 to n for j from 1 to n
if i = 1 or i = n
print *else
print Aend if
end forend for
ต�วอย(าง 4• เข้�ยนโปรแกรมร�บค(า n จากน��นแสดงผลัที่��งหมด n บรรที่�ด• ถู�าเป$นบรรที่�ดค� แสดง ^ จ�านวน n ต�ว• ถู�าเป$นบรรที่�ดค�( แสดง v จ�านวน n ต�ว
จ�านวนแถูว (i) ข้/�นอย�(ก�บจ�านวนคอลั�มน& (j)ข้/�นอย�(ก�บ
nn
for i from 1 to n for j from 1 to n
if i is oddprint ^
elseprint v
end if end forend for
แบบฝึ2กห�ดที่� 4• ลัองเข้�ยนโปรแกรมเพื่+ อร�บค(า n จากน��นแสดงผลัที่��งหมด n บรรที่�ด• ถู�าเป$นบรรที่�ดค� แสดง [ ] จ�านวนเที่(าก�บ หมายเลัข้บรรที่�ด
• ถู�าเป$นบรรที่�ดค�( แสดง ( ) จ�านวนเที่(าก�บ หมายเลัข้บรรที่�ด จ�านวนแถูว (i) ข้/�นอย�(ก�บ
จ�านวนคอลั�มน& (j) ข้/�นอย�(ก�บni
ต�วอย(าง 5• เข้�ยนโปรแกรมร�บค(า n แลัะแสดงผลัลั�พื่ธ์& ด�งน��
int j;for ( int i = 1; i <= n; i++ ) { for ( j=1; j<=n-i; j++ ) { cout << “ ”; } for( ; j <= n; j++) { cout << i; } cout << endl;}
i ช้(องว(าง
ต�วเลัข้
1 3 1
2 2 2
3 1 3
4 0 4
ต�วอย(าง 6• เข้�ยนโปรแกรมร�บค(า n แลัะแสดงผลัลั�พื่ธ์& ด�งน��
for ( int i = 0; i < n; i++ ) { for ( int j=0; j < i; j++ ) { cout << “ ”; } for ( int j = i ; j < n ; j++ ) { cout << n - i; } cout << endl;}
i ช้(องว(าง
ต�วเลัข้
0 0 4
1 1 3
2 2 2
3 3 1
แบบฝึ2กห�ดที่� 5• ลัองเข้�ยนโปรแกรมเพื่+ อร�บค(า n แลัะแสดงผลัลั�พื่ธ์& ด�งน��
แบบฝึ2กห�ดที่� 6
for (i = 1; i <= 4; i++) for (j = 1; j <= i; j++) cout << "*";cout << endl;
โปรแกรมต(อไปน��ให�ผลัลั�พื่ธ์&อย(างไร
for (i = 1; i <= 4; i++) for (j = 1; j <= i; j++) cout << "*";cout << endl;
** ** * ** * * *
โปรแกรมต(อไปน��ให�ผลัลั�พื่ธ์&อย(างไร
for (i = 1; i <= 3; i++) { for (j = 1; j <= 5; j++) { if (i + j % 2 == 0) { cout << "*"; } else { cout << " "; } } cout << endl;}
แบบฝึ2กห�ดที่� 7โปรแกรมต(อไปน��ให�ผลัลั�พื่ธ์&อย(างไร
for (i = 1; i <= 3; i++) { for (j = 1; j <= 5; j++) { if (i + j % 2 == 0) { cout << "*"; } else { cout << " "; } } cout << endl;}
The output will be:
* * * * ** * *
โปรแกรมต(อไปน��ให�ผลัลั�พื่ธ์&อย(างไร