看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: Win10, Linux, ...) Android app模擬c++ 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)c++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 各位 前輩:您們好。 因為是c++新手,還請幫忙指導以下的問題, 因為還不太熟悉,懇請幫忙提供簡單明瞭的簡單方式解惑,先謝謝 各位了。 感恩。 else if(c*2-1 == a && c+1 <= b ) { cout << "*"; } else if(c*2-1 == b && c+1 <= a ) { cout << "*";} else if(c*2-2 == a && c+2 <= b ) { cout << "*";} else if(c*2-2 == b && c+2 <= a ) { cout << "*";} 這一串程式碼是在兩個for回圈內。 /*需要將以上程式碼取代成以下程式碼。*/ e若是int設定為 數字1或c-2等。 然後在上述的兩個for其中一個放入 e++或e--最多只能顯示一個e值,不能多個e值放入else if內重複判斷結果並顯示結果。 else if(c*2-e == a && c+e <= b ) { cout << e<<"*"; } else if(c*2-e == b && c+e <= a ) { cout << e<<"*";} 請問 該如何修改比較好? 如不符發文規定還請幫忙通知,會嘗試調整文章內容的,謝謝您(們)。 …(@) 餵入的資料(Input): 不適用此欄位,程式已寫出,需要簡化,因為不簡化 可顯示圖像只能限定在特定的輸入 資料顯示,除非自行再次加入else if條件才可。…(*) 預期的正確結果(Expected Output): 同上(*)內容。 錯誤結果(Wrong Output): 同上(*)內容。 程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔) 同上(@)內容。 補充說明(Supplement): 為了減少文章篇幅,所以盡可能縮減程式碼內容,擷取需要詢問的地方,以及使用(*) 及(@)標記符號敘述文章內容。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 115.165.210.129 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1535290983.A.E03.html
commandoEX: 你可以讓e設成陣列變成e[i]就能在迴圈中有很多個e啦 08/26 22:17
stupid0319: 完全看不懂原PO想要表達的內容,看來我還是太淺了 08/26 22:32
MOONRAKER: 看不懂+1 非常深奧 08/26 22:42
jerryh001: 我覺得你最好列出完整code或是完整問題 08/27 00:55
CoNsTaR: Linear types?確保變數只能被使用一遍? 08/27 04:17
s4300026: if(e==1戌e==c-2){則使用修改後的方法} 08/27 08:32
s4300026: 聽起來就是原po有兩種輸入情境(e=1和e=c-2),但他目前 08/27 08:39
s4300026: 只寫了一種判斷方法(e=1),然後他想要一種判斷方法可以 08/27 08:39
s4300026: 一次判斷兩種情境(即他所述的新方法),但他不知道要 08/27 08:39
s4300026: 怎麼過濾掉除了上述兩種情境的方法進入判斷式 08/27 08:39
s4300026: 以上為水晶球腦補的結果 08/27 08:41
sarafciel: I think you can describe your problem in English. 08/27 08:53
sa12e3: 謝謝各位,但發現若要使用陣列 c*2及a,b等數值貌似要一同 08/27 10:51
sa12e3: 轉換成陣列才可運行? s4300026大大的解說是正確的,就是 08/27 10:51
sa12e3: 希望能有此效果,謝謝 您的細部說明。 08/27 10:51
sa12e3: 但又好像是侷限於linear types ,很多不確定的地方,還請 08/27 11:00
sa12e3: 幫忙指點迷津,感謝。 08/27 11:00
sa12e3: e =1 or e = c-2,兩者皆可以,只是轉換的方式在回圈內一 08/27 11:04
sa12e3: 個是遞增,另一個是遞減,不管那一個,只要能將多個e值放 08/27 11:04
sa12e3: 入同一個else if做多次判斷及做出多個判斷後結果顯示即可 08/27 11:04
sa12e3: 。 08/27 11:04
sa12e3: 看來是不用將a,b,c一同轉換成陣列,這邊我誤會了,應該可 08/27 11:06
sa12e3: 行,我再試試看,謝謝各位。 08/27 11:06
sa12e3: 陣列使用了還是只會有一種結果顯示(僅有一個e值進入else 08/27 11:29
sa12e3: if判斷) 這個問題真的是linear types嗎? 08/27 11:29
Killercat: 你這問題其實就是COR(Chain of Responbility)最常解決 08/27 20:46
Killercat: 的問題,不過由於你的statement過短,寫成COR就太搞剛 08/27 20:46
sa12e3: 不好意思,是否可請 前輩提供cor簡單的範例? 謝謝 您。 08/28 09:43
sa12e3: 另外補充,這邊簡化前的程式碼中將被e值取代的值,不只是 08/28 09:43
sa12e3: 1,2可無限延伸(3,4,5…)延伸到哪裡依照使用者輸入的數 08/28 09:43
sa12e3: 值進行規範,足以顯示畫圖的範圍即可。這部分相信自己有 08/28 09:43
sa12e3: 方式可處理此限制範圍的。 但是目前仍卡在將此else if進 08/28 09:43
sa12e3: 行多次判斷的問題。 08/28 09:43
s4300026: 話說可以給一下雙迴圈的變數嗎? 他們跟e有關係嗎? 08/28 12:03
sa12e3: c是使用者輸入條件一個int數字(同時是界定範圍的一個值) 08/28 12:33
sa12e3: ,其他的a,b是兩個for使用的變數。 08/28 12:33
sa12e3: 兩個for中的a,b與e可由c來界定範圍,e可設定為與a或b或c 08/28 12:44
sa12e3: 相關,也可讓e自己設定為與a或b或c無關,但最後不管是哪 08/28 12:44
sa12e3: 個還是要有c來規範e避免造成不需要的影響。 不好意思,好 08/28 12:44
sa12e3: 像說明的不太明白,就跟一般用*畫圖的題目是相同的,還請 08/28 12:44
sa12e3: 前輩幫忙給個引導cor的方式,感謝。 不是很了解cor,查了 08/28 12:44
sa12e3: cor感覺複雜,抓不到用在這裡的重點方法。 08/28 12:44
sa12e3: https://ideone.com/cuV48d 08/28 13:23
sa12e3: 先貼目前的程式碼,之後再附加其他部分。 08/28 13:34
sarafciel: https://ideone.com/jW7G2M 你把問題拆難了 08/28 15:02
sarafciel: 內層的迴圈要記得縮排 還有給變數有意義的名稱 08/28 15:06
sa12e3: 好厲害,謝謝 您,研究一下,知道要給變數有意義的名稱及 08/28 15:18
sa12e3: 縮排很重要,但目前急於學習方法,所以較注重於可先寫出 08/28 15:18
sa12e3: 來內容,之後再更改習慣。 感謝 前輩提供另類寫法及提醒 08/28 15:18
sa12e3: 編寫習慣的重要性。 08/28 15:18
yvb: 若可用 ?: 及 abs() 就更方便 ==> https://ideone.com/lcRBcG 08/28 21:58
sa12e3: 感謝 您的提供,原來還有這樣的寫法。 08/29 08:27
sa12e3: 真的沒有想到, 前輩們果然厲害:) 08/29 08:28
Killercat: COR精神就是連續一大串傳回bool的function, 一個接一個 08/29 21:33
Killercat: 第一個function會檢查自己能否處理 能就丟true 不能就 08/29 21:33
Killercat: false 給下一個處理。你這例子是邏輯過於簡單 COR不合 08/29 21:33
Killercat: 算,只是順便提一下一般大量if-else是用COR處理較常見 08/29 21:34
sa12e3: 謝謝 前輩們的指導,受益良多。 08/31 08:59