程式設計二,HW11
繳交截止時間 6/19 晚上 23:00
(a) 請查詢個人登入之帳號及密碼,作為程式繳交之用
查詢網址為 http://140.138.144.66/1062prog/pc2.htm
(b) 使用查詢所得之帳號密碼,以上課介紹之步驟,使用自動評分系統繳交程式
(c) 切勿作弊抄襲,違反規定者一律以零分計算。
程式碼中請勿有 system(“pause”);
以免造成評分系統無法評分(理由已於上課中說明)
各題輸出結果中,除有規定外,最後一列均不再換行
函數相關訊息則以每一橫列顯示,不同函數請換行顯示
題目未以類別方式完成程式者均不計分
第一題:
定義一名為 GeometricObject 之類別,其中包含
(a) 一名為 color 之 private string 成員
(b) ㄧ名為 filled 之 private boolean 成員
(c) 一建構子,無接受參數,負責將 color 指定為 “white”,將 filled 指定為 flase,並印出
“Constructor1”後換行
(d) 一建構子,接受一個 string color 參照及 bool filled 參數,負責將傳遞進來的參數 color
及 filled 分別指定給 color 及 filled 成員,並印出 “Constructor2”後換行
(e) 一傳回 string 之 public getColor 成員函數,無接受參數,傳回 color 成員之值
(f) 一無回傳值之 public setColor 成員函數,接受一個名為 color 的 string 參數,負責
將傳遞進來的參數 color 指定給 color 成員
(g) 一傳回 boolean 之 public isFilled 成員函數,無接受參數,傳回 filled 成員之值
(h) 一無回傳值之 public setFilled 成員函數,接受一個名為 filled 的 boolean 參數,負
責將傳遞進來的參數 filled 指定給 filled 成員
(i) 一傳回 string 之 public toString 成員函數,無接受參數,傳回如下格式之 string
Color: color 成員值 Filled: filled 成員值
其中 color 成員值為 color 成員字串值(“white”, “red”, ….), filled 成員值為 filled 成員
值(True or False)
亦即印出之格式為 “Color:XXX□Filled:XXXXX
XXX 為 white、red、…
XXXXX 為 True 或 False
以上所有成員函數均為 public
另外包含一名為 Circle 且 public 繼承 GeometricObject 之類別,其中包含
(a) 一名為 radius 之 private double 成員
(b) 一建構子,無接受參數,將 radius 成員之值設定為 1,並印出“CConstructor1”後換行
(c) 一建構子,接受接受一個名為 radius 的 double 參數,負責將傳遞進來的參數 radius 指定
給 radius 成員,並印出“CConstructor2”後換行,若傳遞進來之 radius 值小於 0,則印出
“Wrong”後換行,同時將 radius 成員設成 0。
(d) 一建構子,接受接受一個名為 radius 的 double 參數、一個名為 color 的 string 參照、一
個名為 filled 的 bool 參數,負責將傳遞進來的參數 radius 指定給 radius 成員、將傳遞進
來的參數 color 及 filled 分別指定給 color 及 filled 成員,並印出“CConstructor3”後換行,
若傳遞進來之 radius 值小於 0,則印出“Wrong”後換行,同時將 radius 成員設成 0。
(e) 一傳回 double 之 public getRadius 成員函數,無接受參數,傳回 radius 成員之值
(f) 一無回傳值之 public setRadius 成員函數,接受參數一個名為 radius 的 double 參數,
負責將傳遞進來的參數 radius 指定給 radius 成員,若傳遞進來之 radius 值小於 0,則印
出“Wrong”後換行,同時將 radius 成員設成 0。
(g) 一傳回 double 之 public getArea 成員函數,無接受參數,傳回圓面積
(radius*radius*3.14159)
(h) 一傳回 double 之 public getDiameter 成員函數,無接受參數,傳回圓直徑(2*radius)
(i) 一傳回 double 之 public getPerimeter 成員函數,無接受參數,傳回圓周長
(2*radius*3.14159)
(j) 一無回傳值之 public toString 成員函數,無接受參數,傳回如下格式之 string
CColor: color 成員值 Radius: radius 成員值
其中 color 成員值為 color 成員字串值(“white”, “red”, ….), radius 成員值為 radius 成員
值
亦即印出之格式為 “CColor:XXX□Radius:XXXXX
XXX 為 white、red、…
XXXXX 為 radius 成員值(小數點後印出六位)
以上所有成員函數均為 public
另外包含一名為 Rectangle 且 public 繼承 GeometricObject 之類別,其中包含
(a) 一名為 width 之 private double 成員
(b) 一名為 height 之 private double 成員
(c) 一建構子,無接受參數,將 width 成員值設為 1、height 成員值設為 1,並印出
“RConstructor2”後換行,
(d) 一建構子,接受名為 width 及 height 的 double 參數,負責將傳遞進來的參數 width 指定
給 width 成員,及傳遞進來的參數 height 指定給 height 成員。並印出“RConstructor2”後
換行,若傳遞進來之 width 或 height 之值小於 0,則印出“Wrong”後換行,並將傳遞進來
之值為 0 者相對應之 width 或 height 成員設成 0。
(e) 一建構子,接受接受名為 width 及 height 的 double 參數、一個名為 color 的 string 參照、
一個名為 filled 的 bool 參數,負責將傳遞進來的參數 width 指定給 width 成員、傳遞進
來的參數 height 指定給 height 成員、傳遞進來的參數 color 及 filled 分別指定給 color 及
filled 成員。並印出“RConstructor3”後換行,若傳遞進來之 width 或 height 之值小於 0,
則印出“Wrong”後換行,並將傳遞進來之值為 0 者相對應之 width 或 height 成員設成 0。
(f) 一傳回 double 之 public getWidth 成員函數,無接受參數,傳回 width 成員之值
(g) 一傳回 double 之 public getHeight 成員函數,無接受參數,傳回 height 成員之值
(h) 一無回傳值之 public setWidth 成員函數,接受參數一個名為 width 的 double 參數,
負責將傳遞進來的參數 width 指定給 width 成員。若傳遞進來之 width 小於 0,則印出
“Wrong”後換行,並將 width 成員設成 0。
(i) 一無回傳值之 public setHeight 成員函數,接受參數一個名為 height 的 double 參數,
負責將傳遞進來的參數 height 指定給 height 成員。若傳遞進來之 height 值小於 0,則印
出“Wrong”後換行,並將 height 成員設成 0。
(j) 一傳回 double 之 public getArea 成員函數,無接受參數,傳回矩形面積(width*height)
(k) 一傳回 double 之 public getPerimeter 成員函數,無接受參數,傳回矩形周長
(2*(width+height))
(l) 一無回傳值之 public toString 成員函數,無接受參數,傳回如下格式之 string
The Rheight: height 成員值 Rwidth: width 成員值
亦即印出之格式為 “Rheight:XXX□Rwidth:XXXXX
XXX 為 heigth 成員之值,XXXXX 為 width 成員之值 (小數點後印出六位)
以上所有成員函數均為 public
前述定義中,均需檢查所使用的 width、height、radius 等是否合理(因代表長、寬、半徑等,故均
需>=0)
主程式 main 中則須依序包含下列功能程式碼作測試用。
為表示空白,程式中□表示英文空白
實際程式輸入時請把□換成英文空白
int main()
{
GeometricObject shape;
shape.setColor("red");
shape.setFilled(true);
cout << shape.toString() << endl
<< "color:□" << shape.getColor()
<< " filled:□" << (shape.isFilled() ? "true" : "false") << endl;
Circle circle(5);
circle.setColor("black");
circle.setFilled(false);
cout << circle.toString()<< endl
<< "color:□" << circle.getColor()
<< " filled:□" << (circle.isFilled() ? "true" : "false")
<< " radius:□" << circle.getRadius()
<< " area:□" << circle.getArea()
<< " perimeter:□" << circle.getPerimeter() << endl;
Circle circle1(-5);
circle1.setColor("black");
circle1.setFilled(false);
cout << circle1.toString()<< endl
<< "color:□" << circle1.getColor()
<< " filled:□" << (circle1.isFilled() ? "true" : "false")
<< " radius:□" << circle1.getRadius()
<< " area:□" << circle1.getArea()
<< " perimeter:□" << circle1.getPerimeter() << endl;
string strc("red");
Circle circle2(2.5, strc, false);
circle2.setColor("black");
circle2.setFilled(false);
cout << circle2.toString()<< endl
<< "color:□" << circle2.getColor()
<< " filled:□" << (circle2.isFilled() ? "true" : "false")
<< " radius:□" << circle2.getRadius()
<< " area:□" << circle2.getArea()
<< " perimeter:□" << circle2.getPerimeter() << endl;
Rectangle rectangle(2, 3);
rectangle.setColor("orange");
rectangle.setFilled(true);
cout << rectangle.toString()<< endl
<< "color:□" << rectangle.getColor()
<< " filled:□" << (rectangle.isFilled() ? "true" : "false")
<< " width:□" << rectangle.getWidth()
<< " height:□" << rectangle.getHeight()
<< " area:□" << rectangle.getArea()
<< " perimeter:□" << rectangle.getPerimeter() << endl;
Rectangle rectangle1(2, 0);
rectangle.setColor("orange");
rectangle.setFilled(true);
cout << rectangle1.toString()<< endl
<< "color:□" << rectangle1.getColor()
<< " filled:□" << (rectangle1.isFilled() ? "true" : "false")
<< " width:□" << rectangle1.getWidth()
<< " height:□" << rectangle1.getHeight()
<< " area:□" << rectangle1.getArea()
<< " perimeter:□" << rectangle1.getPerimeter() << endl;
return 0;
}
(100%) 未依規定要求項目完成者不計分
版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。