Re: [問題] 請教有無方法簡化我的code
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 5 篇):