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
出現type code了, 首先需要做的就是把 int type這個參數
換成列舉型態, 提升可讀性並且也提供靜態型別檢查, 不用
呼叫之後才用default去檢查合法與否(雖然我還想不到這三
種三角形該怎麼敘述他).
http://codepad.org/MCGDiB5G
裡面三個巢狀迴圈可以分開寫成不同函式, 並且使用清楚的
名稱去命名它們 :
http://codepad.org/IL2Kb3by
再來就是 switch 的問題, 如果新增了一種三角形, 這邊是
一定要改的, 所以可以用函數指標陣列, 利用列舉值當索引
來選擇呼叫特定的函式, 這樣要新增也比較方便 :
http://codepad.org/whCDsD8u
以上, 簡化多少不是問題, 能不能讓你未來能少打一點程式
碼, 以及程式好不好加入新功能, 才是最重要的.
--
◢████ ◢█ ◢██◣ ◢█ ◢███ ◢█ T-ara版怎麼去
████◤ ██ ◢██◣█ ██ ████ ██ s ~> T-ara
█/███ ██ ██ ██ █/█ ◢███ █/█ 歡迎您的光臨
████◤ ██ ██ ██ ██◤ ███◤ ██◤ 恩靜、智妍、孝敏
█/███ ██ █/██◤ ██ █/██ ██ 素妍、居麗、寶藍
████◤ █◤ ◥██◤ █◤ ████◤█◤ ψmakigoto123
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.197.115
※ 編輯: loveme00835 來自: 140.121.197.115 (10/05 10:08)
推
10/05 10:11, , 1F
10/05 10:11, 1F
推
10/05 10:19, , 2F
10/05 10:19, 2F
推
10/05 12:24, , 3F
10/05 12:24, 3F
→
10/05 12:38, , 4F
10/05 12:38, 4F
→
10/05 12:39, , 5F
10/05 12:39, 5F
→
10/05 12:40, , 6F
10/05 12:40, 6F
推
10/05 12:41, , 7F
10/05 12:41, 7F
→
10/05 12:42, , 8F
10/05 12:42, 8F
→
10/05 12:42, , 9F
10/05 12:42, 9F
→
10/05 12:42, , 10F
10/05 12:42, 10F
→
10/05 12:45, , 11F
10/05 12:45, 11F
→
10/05 12:45, , 12F
10/05 12:45, 12F
→
10/05 12:46, , 13F
10/05 12:46, 13F
→
10/05 12:47, , 14F
10/05 12:47, 14F
推
10/05 12:51, , 15F
10/05 12:51, 15F
→
10/05 12:51, , 16F
10/05 12:51, 16F
→
10/05 12:52, , 17F
10/05 12:52, 17F
→
10/05 12:56, , 18F
10/05 12:56, 18F
推
10/05 12:58, , 19F
10/05 12:58, 19F
→
10/05 12:58, , 20F
10/05 12:58, 20F
→
10/05 13:02, , 21F
10/05 13:02, 21F
→
10/05 13:03, , 22F
10/05 13:03, 22F
推
10/05 13:03, , 23F
10/05 13:03, 23F
推
10/05 13:04, , 24F
10/05 13:04, 24F
→
10/05 13:05, , 25F
10/05 13:05, 25F
→
10/05 13:05, , 26F
10/05 13:05, 26F
→
10/05 13:06, , 27F
10/05 13:06, 27F
推
10/05 13:07, , 28F
10/05 13:07, 28F
→
10/05 13:10, , 29F
10/05 13:10, 29F
→
10/05 13:10, , 30F
10/05 13:10, 30F
→
10/05 13:11, , 31F
10/05 13:11, 31F
→
10/05 13:12, , 32F
10/05 13:12, 32F
推
10/05 13:12, , 33F
10/05 13:12, 33F
→
10/05 13:12, , 34F
10/05 13:12, 34F
→
10/05 13:13, , 35F
10/05 13:13, 35F
→
10/05 13:14, , 36F
10/05 13:14, 36F
→
10/05 13:15, , 37F
10/05 13:15, 37F
→
10/05 13:15, , 38F
10/05 13:15, 38F
→
10/05 13:15, , 39F
10/05 13:15, 39F
推
10/05 13:16, , 40F
10/05 13:16, 40F
→
10/05 13:16, , 41F
10/05 13:16, 41F
→
10/05 13:16, , 42F
10/05 13:16, 42F
→
10/05 13:16, , 43F
10/05 13:16, 43F
→
10/05 13:18, , 44F
10/05 13:18, 44F
→
10/05 13:18, , 45F
10/05 13:18, 45F
→
10/05 13:19, , 46F
10/05 13:19, 46F
→
10/05 13:20, , 47F
10/05 13:20, 47F
推
10/05 13:20, , 48F
10/05 13:20, 48F
→
10/05 13:20, , 49F
10/05 13:20, 49F
→
10/05 13:20, , 50F
10/05 13:20, 50F
→
10/05 13:21, , 51F
10/05 13:21, 51F
→
10/05 13:22, , 52F
10/05 13:22, 52F
推
10/05 13:22, , 53F
10/05 13:22, 53F
→
10/05 13:28, , 54F
10/05 13:28, 54F
→
10/05 13:29, , 55F
10/05 13:29, 55F
→
10/05 13:29, , 56F
10/05 13:29, 56F
→
10/05 13:32, , 57F
10/05 13:32, 57F
→
10/05 13:33, , 58F
10/05 13:33, 58F
※ 編輯: loveme00835 來自: 140.121.197.115 (10/05 13:38)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 5 篇):