阿摩線上測驗 登入

申論題資訊

試卷:103年 - 103年專門職業及技術人員高等建築師、技師、第二次食品技師暨普通不動產經紀人、記帳士考高等_資訊技師#29113
科目:程式設計
年份:103年
排序:0

題組內容

二、假設有一灰階影像 img1,其類別為 Image 如下:
class Image {
private:
int width; // 寬
int height; // 高
unsigned char **pixel; // 像素
public:
Image(int w, int h); // 建構子
unsigned char getpixel(int r, int c); // 取出 pixel[r][c]值
void setpixel(int r, int c, unsigned char g);// 設定 pixel[r][c]值為 g
int getwidth(); // 取出影像的寬度
int getheight(); // 取出影像的高度
}
其寬為 width,高為 height,其像素值存在一個二維陣列 pixel 中,資料型態為 unsigned
char。今欲將此灰階影像 img1 順時針旋轉 90 度,並儲存在另一新的灰階影像 img2。

申論題內容

⑴試寫出 Image 類別的建構子,依據參數 w(代表寬度)與 h(代表高度),可以動
態配置二維陣列 pixel。(10 分)

詳解 (共 2 筆)

詳解 提供者:Triple w.
todo
 
詳解 提供者:hchungw
在C++中,二維陣列可以使用指針的指針來動態分配記憶體。以下是Image類別的建構子實作,它會根據提供的寬度w和高度h動態分配一個二維陣列pixel。
cpp
Copy code
class Image {
private:
    int width; // 寬
    int height; // 高
    unsigned char **pixel; // 像素
public:
    // 建構子
    Image(int w, int h) : width(w), height(h) {
        // 為每一行分配記憶體
        pixel = new unsigned char*[height];
        
        // 為每一列分配記憶體
        for (int i = 0; i < height; ++i) {
            pixel[i] = new unsigned char[width];
        }
    }
    
    // 其他成員函式的宣告...
};
在這個建構子中,首先初始化width和height成員變量。然後,我們為pixel變量分配了一個指針陣列,每個指針代表圖像中的一行。接下來,對於每行,我們再分配一個指針陣列,每個指針代表該行中的一個像素。
注意:在這個類別中,你可能還會需要一個解構子來釋放分配的記憶體,以防止記憶體洩漏。这里没有包括解构函数和其他成员函数的实现,因为题目没有要求。