Re: [問題] 畫菱形

看板C_and_CPP (C/C++)作者 (小馬非馬)時間15年前 (2009/11/19 19:49), 編輯推噓2(2015)
留言17則, 4人參與, 最新討論串3/7 (看更多)
借標題問一下 以爬過菱形的文章,之前有寫過不用絕對值做的,可是非常醜陋, 之後再看完全看不懂,後來爬文得知以下寫法: #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

11/19 19:57, , 1F
本人有提供80x25法 簡單好寫 不用慢慢修改
11/19 19:57, 1F

11/19 19:57, , 2F
還可以擴充為用 * 畫小狗小貓或貼bitmap等(虎爛)
11/19 19:57, 2F

11/19 19:59, , 3F
那個我會了,想知道這種的XD
11/19 19:59, 3F

11/19 20:01, , 4F
我最初是寫上下相反的三角型,不過真的很難懂~
11/19 20:01, 4F

11/19 20:03, , 5F
廣告打完,回到你的問題
11/19 20:03, 5F

11/19 20:03, , 6F
這不就是把菱形當兩個三角形畫嘛…正著畫一遍,倒著再畫
11/19 20:03, 6F

11/19 20:04, , 7F
的時候最底那一層不要畫,所以迴圈從 0 走到 2n-1 啊…
11/19 20:04, 7F

11/19 20:05, , 8F
如果有人可以用單變數公式畫一條螺旋路徑,湊起來剛好
11/19 20:05, 8F

11/19 20:05, , 9F
菱形,還比較令人驚奇哩…
11/19 20:05, 9F

11/19 20:07, , 10F
注意他的 n 是菱形高度的一半
11/19 20:07, 10F

11/19 20:13, , 11F
話說我剛剛試一下,覺得我寫的程式好像怪怪的XD
11/19 20:13, 11F

11/19 20:15, , 12F
是一半沒錯,可是輸出結果不是n給多少就多高,看來要改
11/19 20:15, 12F
※ 編輯: conan77420 來自: 61.229.120.74 (11/19 20:22)

11/19 20:24, , 13F
這種寫法有辦法寫成給n多少,然後就輸出n高度的菱形嗎
11/19 20:24, 13F

11/19 20:31, , 14F
把本來的i++ j++都改成+=2,可是偶數不能用 ..
11/19 20:31, 14F

11/19 20:46, , 15F
會想到乘以2, 個人覺得沒什麼理有, 就是推算過想到了,
11/19 20:46, 15F

11/19 20:46, , 16F
也可能是以前做過參考過, 解題的方法這種事有時候本來
11/19 20:46, 16F

11/19 20:46, , 17F
也會需要靈光一閃的....XD
11/19 20:46, 17F
文章代碼(AID): #1B1J36eo (C_and_CPP)
文章代碼(AID): #1B1J36eo (C_and_CPP)