Re: [問題] 請教有無方法簡化我的code

看板C_and_CPP作者 (karatow)時間14年前 (2010/10/05 15:14), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串4/5 (看更多)
※ 引述《chessjim (jim)》之銘言: : ( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) : ( 未必需要依照此格式,文章條理清楚即可 ) : 遇到的問題: (題意請描述清楚) : 我寫了一段code : 發現code中重複的地方很多 : 不知道有沒有方法簡化它 : 希望得到的正確結果: : 能夠簡化我case1,case2,case3中的code : 因為重複的地方很多 : 我的code片段如下 : //pre:level,type分別控制三角形層級與種類 : //post:印出三角形 : void printTriangle(int level,int type){ : int line,cnt; : switch(type){ : case 1: : for(line=1;line<=level;line++){ : for(cnt=1;cnt<=line;cnt++){ : printf("1"); : }//end for-cnt : printf("\n"); : }//end for-line : break; : case 2: : for(line=1;line<=level;line++){ : for(cnt=1;cnt<=line;cnt++){ : printf("%d",cnt); : }//end for-cnt : printf("\n"); : }//end for-line : break; : case 3: : for(line=1;line<=level;line++){ : for(cnt=1;cnt<=line;cnt++){ : printf("%d",line); : }//end for-cnt : printf("\n"); : }//end for-line : break; : default: : printf("你輸入了錯誤的三角形種類!!"); : break; : }//enf switch : }//end : 請神人幫幫忙 : 或者解說為什麼code不能簡化 : 謝謝 void printriangle(int select , int level) { int cnt,line,constant=1; int *number; switch(select) { case 1: number = & constant; break; case 2: number = &cnt; break; case 3: number = &line; break; default: { printf("你輸入了錯誤的三角形種類!!\n"); return; } } for(line=1;line<=level;line++) { for(cnt=1;cnt<=line;cnt++) printf("%d",*number); printf("\n"); } } void main() { while(1) { int select; cout << "請選擇 1. 2. 3. 0.結束" ; cin >> select; if(0 == select) break; printriangle(select,5); } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.231.99

10/05 23:21, , 1F
哇賽!!又學到一種俐落的寫法了,漂亮!!
10/05 23:21, 1F
文章代碼(AID): #1Cgq3KI_ (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Cgq3KI_ (C_and_CPP)