顯示廣告
隱藏 ✕
看板 Knuckles
作者 Knuckles(阿德)
標題 為了找工作的C++課程--作業4
時間 2008年08月21日 Thu. PM 06:26:22


看完ch8函數及ch9動態陣列後

1. 巨集函數(Macro function)

   使用一個 4 byte的 unsigned long 用來存一個像素的RGB色彩
   其中三個顏色的存放位置為:0x00bbggrr
   00的位置不使用,而bb、gg、rr分別為Blue、Green、Red的16進位值 00~FF

   請使用巨集函數的方法,寫一個 RGB(r,g,b)
   用來將三個顏色的值轉成一個 long 值,例如:
   unsighed long color = RGB(255,0,0) //產生一個代表紅色的變數 color = 0x000000FF

   接著寫出三個巨集函數 GetRValue, GetGValue, GetBValue
   用來將一個 long 值轉為三個顏色的值,例如:
   int red = GetRValue(color) //取得color的紅色值 red = 255


2. 遞迴(Recursive)

   用遞迴的方法求組合公式

   C(n,x) = 1,      when x=0 and x=n

          = C(n-1,x-1) + C(n-1,x), when 0 < x < n

   或

   C(n,x) = 1,      when x = 0

          = C(n,x-1) * (n-x+1)/x , when 0 < x <= n

   利用C(n,x)畫出巴斯卡三角形


3. 動態二維陣列

    讓使用者輸入矩陣的大小,產生一個 M*N 的隨機矩陣
--
※ 來源: 台大電信 DISP 實驗室 (http://disp.twbbs.org)
※ 作者: Knuckles  來自: 140.112.175.128  時間: 2008-08-21 18:26:22
※ 編輯: Knuckles  來自: 140.112.175.128  時間: 2008-10-13 04:07:30

1. ans.

typedef unsigned char  BYTE;  // 1 byte
typedef unsigned short WORD;  // 2 byte
typedef unsigned long  DWORD; // 4 byte

#define RGB(R,G,B) ( (DWORD)R + ((DWORD)G<<8) + ((DWORD)B<<16) )
#define GetRValue(color) ((BYTE)((color & 0x000000FF)    ))
#define GetGValue(color) ((BYTE)((color & 0x0000FF00)>>8 ))
#define GetBValue(color) ((BYTE)((color & 0x00FF0000)>>16))

※ 編輯: Knuckles  來自: 140.112.175.128  時間: 2008-10-19 02:06:12
※ 看板: KnucklesNote 文章推薦值: 0 目前人氣: 0 累積人氣: 1065 
※ 文章分類: 程式設計 C/C++
iloveyouever 轉錄至看板 my_time_my_heart 時間:2010-08-03 21:02:19
terrykyo 轉錄至看板 terrykyo 時間:2011-04-04 01:51:40
TL 轉錄至看板 TL (使用複製) 時間:2012-12-08 19:46:30
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇