Design a class named Triangle that extends class GeometricObject, which is given below. The class contains:
Three double data field named side1, side2, and side3 with default values 1.0 to denote three sides of the triangle.
A no-arg constructor that creates a default triangle (side1=side2=side3=1.0).
A constructor that creates a triangle with the specified side1, side2, and side3.
The accessor functions for all three data fields.
A function named getArea() that returns the area of this triangle.
A function named getPerimeter() that returns the perimeter of the triangle.
Hint: For an triangle with sides of lengths a, b, and c, respectively:
s = (a + b + c) / 2;
area = sqrt(s (s - a) (s - b) * (s - c));
EXMAPLE INPUT:
1 1.5 1 yellow
EXMAPLE OUTPUT:
triangle.getColor() = yellow
triangle.getSide1() = 1
triangle.getSide2() = 1.5
triangle.getSide3() = 1
triangle.getArea() = 0.496078
triangle.getPerimeter() = 3.5
主程序 (不能修改)
#include <string>
using namespace std;
class GeometricObject
{
private:
string color;
public:
GeometricObject() {
color = "black";
}
string getColor() {
return color;
}
void setColor(string color2) {
color = color2;
}
string toString() {
return "GeometricObject color=" + color;
}
};
#include "source.cpp"
#include <iostream>
int main() {
double side1;
double side2;
double side3;
cin >> side1;
cin >> side2;
cin >> side3;
string color;
cin >> color;
Triangle triangle(side1, side2, side3);
// cout << "sizeof(Triangle) = " << sizeof(Triangle) << endl;
triangle.setColor(color);
cout << "triangle.getColor() = " << triangle.getColor() << endl;
cout << "triangle.getSide1() = " << triangle.getSide1() << endl;
cout << "triangle.getSide2() = " << triangle.getSide2() << endl;
cout << "triangle.getSide3() = " << triangle.getSide3() << endl;
cout << "triangle.getArea() = " << triangle.getArea() << endl;
cout << "triangle.getPerimeter() = " << triangle.getPerimeter() << endl;
}
我的答案
#include <cmath>
class Triangle : public GeometricObject{
private:
double side1;
double side2;
double side3;
public:
Triangle(double s1,double s2,double s3){
this->side1=s1;
this->side2=s2;
this->side3=s3;
}
Triangle(){
this->side1=1;
this->side2=1;
this->side3=1;
}
double getSide1(){
return side1;
}
double getSide2(){
return side2;
}
double getSide3(){
return side3;
}
double getPerimeter(){
return side1+side2+side3;
}
double getArea(){
double s=(side1+side2+side3)/2;
return sqrt(s * (s - side1) * (s - side2) * (s - side3));
}
};