看板 C_and_CPP 關於我們 聯絡資訊
借標題問一下 以爬過菱形的文章,之前有寫過不用絕對值做的,可是非常醜陋, 之後再看完全看不懂,後來爬文得知以下寫法: #include<iostream.h> #include<cmath> using namespace std; int main() { int n=0; cout<<"輸入n:"; cin>>n; for(int j=1;j<=n*2;j++) { for(int i=1;i<=abs(n-j);i++) {cout<<" ";} for(int i=1;i<=(n-abs(n-j))*2-1;i++) {cout<<"*";} cout<<endl; } system("pause"); } 真是乾淨俐落,但是一樣看不懂囧 我想問的是這樣寫的人,一開始在第一層for迴圈怎麼想會去寫j<=n*2 因為一般直覺來說,不都是給菱形高度多少,然後用這個值去滿足演算法嗎? 會想到乘以2的理由是什麼呀? 還有,這題各位可以在一兩次編譯內就完成嗎?還是要慢慢隨結果修改程式呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.229.120.74
MOONRAKER:本人有提供80x25法 簡單好寫 不用慢慢修改 11/19 19:57
MOONRAKER:還可以擴充為用 * 畫小狗小貓或貼bitmap等(虎爛) 11/19 19:57
conan77420:那個我會了,想知道這種的XD 11/19 19:59
conan77420:我最初是寫上下相反的三角型,不過真的很難懂~ 11/19 20:01
MOONRAKER:廣告打完,回到你的問題 11/19 20:03
MOONRAKER:這不就是把菱形當兩個三角形畫嘛…正著畫一遍,倒著再畫 11/19 20:03
MOONRAKER:的時候最底那一層不要畫,所以迴圈從 0 走到 2n-1 啊… 11/19 20:04
MOONRAKER:如果有人可以用單變數公式畫一條螺旋路徑,湊起來剛好 11/19 20:05
MOONRAKER:菱形,還比較令人驚奇哩… 11/19 20:05
MOONRAKER:注意他的 n 是菱形高度的一半 11/19 20:07
conan77420:話說我剛剛試一下,覺得我寫的程式好像怪怪的XD 11/19 20:13
conan77420:是一半沒錯,可是輸出結果不是n給多少就多高,看來要改 11/19 20:15
※ 編輯: conan77420 來自: 61.229.120.74 (11/19 20:22)
conan77420:這種寫法有辦法寫成給n多少,然後就輸出n高度的菱形嗎 11/19 20:24
ammk:把本來的i++ j++都改成+=2,可是偶數不能用 .. 11/19 20:31
VictorTom:會想到乘以2, 個人覺得沒什麼理有, 就是推算過想到了, 11/19 20:46
VictorTom:也可能是以前做過參考過, 解題的方法這種事有時候本來 11/19 20:46
VictorTom:也會需要靈光一閃的....XD 11/19 20:46