編寫一個程式,宣告抽象基類Shape,由它派生出3個派生類: Circle(圓形)、Rectangle(矩形)、Triangle(三角形),用一個函式printArea分別輸出以上三者的面積(結果保留兩位小數),3個圖形的資料在定義物件時給定。
YTU-OJ-Problem C: C++習題 抽象基類
Problem C: C++習題 抽象基類
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 717 Solved: 529
[Submit][Status][Web Board]
Description
Input
圓的半徑
矩形的邊長
三角形的底與高
Output
圓的面積
矩形的面積
三角形的面積
Sample Input
12.6
4.5 8.4
4.5 8.4
Sample Output
area of circle = 498.76
area of rectangle = 37.80
area of triangle = 18.90
HINT
主函式已給定如下,提交時不需要包含,會自動新增到程式尾部
/* C++程式碼 */
int main()
{
float r,a,b,w,h;
cout<<fixed<<setprecision(2);
cin>>r;
Circle circle(r);
cout<<"area of circle = ";
printArea(circle);
cin>>a>>b;
Rectangle rectangle(a,b);
cout<<"area of rectangle = ";
printArea(rectangle);
cin>>w>>h;
Triangle triangle(w,h);
cout<<"area of triangle = ";
printArea(triangle);
return 0;
}
#include<iostream>
#include<cstdio>
#include<iomanip>
using namespace std;
class Shape
{
public:
virtual float printArea() const=0;
};
class Circle:public Shape
{
public:
Circle(float r):radius(r) {}
virtual float printArea()const
{
return 3.141592*radius*radius;
}
private:
float radius;
};
class Rectangle:public Shape
{
public:
Rectangle(float l,float w):length(l),width(w) {}
virtual float printArea()const
{
return length*width;
}
private:
float length;
float width;
};
class Triangle:public Shape
{
public:
Triangle(float h,float w):hight(h),width(w) {}
virtual float printArea()const
{
return 0.5*hight*width;
}
private:
float hight;
float width;
};
void printArea(Circle&t)
{
cout<<t.printArea()<<endl;
}
void printArea(Rectangle&t)
{
cout<<t.printArea()<<endl;
}
void printArea(Triangle&t)
{
cout<<t.printArea()<<endl;
}
int main()
{
float r,a,b,w,h;
cout<<fixed<<setprecision(2);
cin>>r;
Circle circle(r);
cout<<"area of circle = ";
printArea(circle);
cin>>a>>b;
Rectangle rectangle(a,b);
cout<<"area of rectangle = ";
printArea(rectangle);
cin>>w>>h;
Triangle triangle(w,h);
cout<<"area of triangle = ";
printArea(triangle);
return 0;
}
相關文章
- C++中的抽象基類(Abstract Base Class)C++抽象
- C++ 抽象類快速使用C++抽象
- YTU-OJ-Problem B: 抽象一個形狀類抽象
- C++:純虛擬函式與抽象類C++函式抽象
- YTU-OJ-Problem D: C++習題 虛擬函式-計算圖形面積C++函式
- C++習題C++
- C#抽象類C#抽象
- C++模板類複習C++
- C++抽象設計目的C++抽象
- C++快速入門--12--抽象類和介面模擬C++抽象
- JavaSE基礎:抽象類Java抽象
- JAVA抽象類、介面和C++的虛擬函式對比Java抽象C++函式
- c++ 模板之 抽象工廠C++抽象
- JavaSE基礎知識學習—–抽象類和介面Java抽象
- JavaSE基礎知識學習-----抽象類和介面Java抽象
- 有關C#抽象類C#抽象
- C++學習 類定義(一)C++
- C++學習 2.5 string類C++
- c# abstract抽象類及抽象方法_繼承C#抽象繼承
- C++基礎學習1C++
- C++基礎學習6C++
- Java —— 流的抽象基類Java抽象
- Python抽象基類abcPython抽象
- C++中抽象類、虛擬函式和純虛擬函式C++抽象函式
- Java 基礎學習總結(一)抽象類和介面Java抽象
- C++智慧指標模板類複習C++指標
- 零基礎如何學習C/C++C++
- 研發類C++筆試題目C++筆試
- C++ -> Java快速學習-基礎C++Java
- C++的基礎學習5C++
- c++ primer 習題7.31 自己編寫Sales_item類C++
- Java基礎-抽象類和介面Java抽象
- c# abstract抽象類_非抽象類_virtual_虛方法_override重寫C#抽象IDE
- C++派生類物件訪問基類的protected成員C++物件
- 大資料學習:抽象類大資料抽象
- c++中的抽象概念詳解C++抽象
- C++實戰之資料抽象 (轉)C++抽象
- binder c++ 類C++