顯示廣告
隱藏 ✕
看板 Programming
作者 Knuckles (阿德)
標題 Re:
 本來要出給學弟當練習的題目
時間 2010年11月12日 Fri. PM 04:27:25


※ 引述《abc1231qa》之銘言:
> 讓使用者輸入一個奇數
> 然後用*畫成正方形 一圈一圈的畫出
> 如下
N=9

改一下座標,(x,y)為(i,j)位移 -(N-1)/2 = -4

    0 1 2 3 4 5 6 7 8 →i
   -4-3-2-1 0 1 2 3 4 →x
 -4*********
 -3*       *
 -2* ***** *
 -1* *   * *
  0* * * * *
  1* *   * *
  2* ***** *
  3*       *
  4*********
 
 y

中間的*: (0,0)

第一圈*: |x|,|y|都小於等於2 且 |x|=2或|y|=2時 → |x|與|y|的最大值為2時

任一點(x,y): 設 r = max(|x|,|y|),若 r 為偶數,則該點為*

程式隨便寫寫
[code=cpp]
for(i=0;i<N;i++){
	
for(j=0;j<N;j++){
	
	
x = i - (N-1)/2;
	
	
y = j - (N-1)/2;
	
	
r = max(abs(x),abs(y));
	
	
if(r%2==0) cout << "*";
	
	
else       cout << " ";
	
}
	
cout << "\n";
}
其中 max(a,b) 為取a,b的最大值,abs(x)為取x的絕對值


--
※ 來源: Disp BBS 看板: Programming 文章連結: http://disp.cc/b/33-KkK
※ 作者: Knuckles  時間: 2010-11-12 16:27:25  來自: 111-248-4-134.dynamic.hinet.net
※ 看板: Programming 文章推薦值: 3 目前人氣: 0 累積人氣: 1020 
( ̄︶ ̄)b water5251 說讚!
1樓 時間: 2010-11-12 17:17:26 (台灣)
  11-12 17:17 TW
x=i-floor(N/2); y=i-floor(N/2);
2樓 時間: 2010-11-12 17:28:19 (台灣)
  11-12 17:28 TW
N確定是奇數的話-1就可以啦
3樓 時間: 2010-11-12 17:37:18 (台灣)
  11-12 17:37 TW
考慮到不同程式語言的特性,floor是最安全的做法
4樓 時間: 2010-11-12 18:17:41 (台灣)
  11-12 18:17 TW
其實我寫的時候有想到floor跟絕對值的問題 不過本來是要寫給大一看的 想說不要用這麼多東西 寫完才發現老師應該不會這樣考
5樓 時間: 2010-11-12 18:25:53 (台灣)
  11-12 18:25 TW
可是我覺得你那個落落長的程式更難看懂 XD
6樓 時間: 2010-11-12 18:31:03 (台灣)
  11-12 18:31 TW
這個題目比較偏向演算法而不是程式設計,重點是想出
if(max(abs(i-floor(N/2),abs(j-floor(N/2))%2) 這條試子
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇
看板名稱: 確定(Enter) 取消(Esc) 搜尋(Space)
查詢帳號: 確定(Enter) 取消(Esc) 搜尋(Space)
搜尋: m)m文 b)進板 c)未分類 a)作者 /)標題 q)取消?[q]

搜尋 送出(Enter) 取消(Esc)

回覆文章至: f)看板 m)作者信箱 b)兩者皆是 q)取消?[f]
要引用原文嗎? y)引用原文 n)不引用 a)全部回覆 r)複製原文 q)取消?[y]
轉錄本文章於看板: 1)使用連結 2)使用複製 q)取消 ?[1]
轉寄至站內信箱於使用者: 確定(Enter) 取消(Esc)
轉寄至站內信箱於使用者: 確定(Enter) 取消(Esc)
修改文章標題為: 確定(Enter) 取消(Esc)
修改文章標題為: 確定(Enter) 取消(Esc) 全部(a)

確定要刪除這篇文章?(可按大U救回) 確定(Enter) 取消(Esc)

刪除理由:

確定(Enter) 取消(Esc)
加到這個分類: 確定(Enter) 下一層(→) 回上層(←) 取消(Esc)
你覺得這篇文章: 1)真讚 2)真瞎 q)取消?[1] (再選一次即可收回)
你覺得這篇文章: 1)值得推薦 2)表示反對 3)單純註解 q)取消?[3]
guest
預覽(Enter) 取消(Esc)
上傳圖片
按ctrl+Enter可輸入下一行。
guest
確定要送出? 確定(Enter) 取消(Esc) 繼續(e)
搜尋: 送出(Enter) 取消(Esc)

▏▎▍▌▋▊▉ 請按任意鍵繼續