เขาเขียนโปรแกรมให้แสดงตัวเลขเป็นรูปพีระมิด ในลักษณะนี้
1
1 2 3
1 2 3 4 5
1 2 3 4 5 6 7
1 2 3 4 5 6 7 8 9
อันนี้คือ พีระมิต 5 ชั้นครับ โดยให้ผู้ใช้กรอกจำนวนชั้นที่ต้องการลงไป แล้วโปรแกรมก็จะทำการแสดงผลพีระมิดออกมา 5 ชั้น
คงจะมีคนคิดว่าปัญหาง่ายๆแค่นี้ใครๆก็แก้ได้ ไม่เห็นจะยากเลย วนลูป 2 - 3 ลูปก็ได้แล้ว
ใช่ครับ มันก็จริงอย่างที่คุณคิด
แต่ผมอยากให้คุณเขียนมันออกมาโดยใช้ลูปแค่ลูปเดียว จะเป็น for, while, หรือ do while ก็ได้
ซึ่งมันก็ทำให้ต้องใช้เวลาในการคิดขึ้นมาอีกนิดหน่อย
ตอนแรกที่เพื่อนให้โจทย์ผมมา ก็เกือบจะได้แล้วครับ ไม่รู้มันติดอะไรเหมือนกัน ฮ่าๆๆๆๆ
พอกลับไปอาบน้ำ อาบน้ำอยู่ดีๆ ดันแก้โจทย์ได้ซ่ะงั้น มาดูโค๊ดผมกันครับ
#include<iostream.h> #include<conio.h> void main(){ clrscr(); int num_rows=5;//number of rows int num_cols=2*num_rows-1; //compute number of columns = 2n-1 int count_cols=1; int count_rows=1; int run=1; do{ //----------------check show result------------------------- if((count_cols < (num_rows-count_rows+1)) || (count_cols > (num_rows+count_rows-1)) ){ cout<<" "; } else { cout<<run<<" "; run++; } //-----------------check new line--------------------------- if(count_cols == num_cols){ cout<<"\n"; run=1; count_cols=0; count_rows++; } count_cols++; }while( (count_rows<=num_rows) && (count_cols<=num_cols) ); getch(); }
อันนี้เขียนใน turbo c/c++ 3.0 ครับ ผลลัพธ์ก็เป็นตามที่กล่าวมาแล้วเป๊ะเลย
1
1 2 3
1 2 3 4 5
1 2 3 4 5 6 7
1 2 3 4 5 6 7 8 9
ลองดูครับใครที่เขียนได้สั้นกว่านี้ ดีกว่านี้ ลองเอามาแชร์ความรู้กันดูน่ะครับ
ผมนี่งงเลย
ตอบลบ1
ตอบลบ222
33333
4444444
555555555
ผมขอฝากทำหน่อยย ผมไปไม่เป็น 5555
ใช้ Loop + Ascii นะ
ลบA
ตอบลบAA
AAA
AAAA
AAAAA
AAAAAA
AAAAAAA
AAAAAAAA
AAAAAAAAA
AAAAAAAAAA
ทำให้เป็นพีระมิด 10 ชั้นนะครับ ช่วยผมด้วย
กลับหัวทำยังงัยหรอค้ะ?
ตอบลบ