永发信息网

C++程序题!急求代码!!!!

答案:2  悬赏:10  手机版
解决时间 2021-04-21 11:46

麻烦会的给出代码!谢谢了!最好是VC6编译的!!谢谢了!!!!

最佳答案
参考楼上公式改写:

#include <iostream>
#include <vector>
#include <fstream>
#include <iomanip>
#include <cmath>
using namespace std;

class shape {
public:
enum type { C, R, T };
virtual double area() const = 0;
type getType() const
{
return t;
}
virtual ~shape() { }
protected:
type t;
};

class circle : public shape {
public:
circle( double _x, double _y, double _r )
: x( _x ), y( _y ), r( _r )
{ shape::t = C; }
double area() const
{
return PI * r * r;
}
double getRadius() const
{
return r;
}
private:
double x, y , r;
static const double PI;
};
const double circle::PI = 3.1415926;

class rectangle : public shape {
public:
rectangle( double _x1, double _y1, double _x2, double _y2 )
: x1( _x1 ), y1( _y1 ), x2( _x2 ), y2( _y2 )
{ shape::t = R; }
double area() const
{
return fabs( x1-x2 ) * fabs( y1-y2 );
}
private:
double x1, y1, x2, y2;
};
class triangle : public shape {
public:
triangle( double _x1, double _y1, double _x2, double _y2, double _x3, double _y3 )
: x1( _x1 ), y1( _y1 ), x2( _x2 ), y2( _y2 ), x3( _x3 ), y3( _y3 )
{ shape::t = T; }
double area() const
{
return fabs( x1*y2 + y1*x3 + x2*y3 - x1*y3 - y1*x2 - y2*x3 ) / 2;
}
private:
double x1, y1, x2, y2, x3, y3;
};

int main()
{
vector<shape*> v;
ifstream inFile( "shape.txt" );
while( inFile ) {
char c = inFile.get();
if ( c == 'C' ) {
double x, y, r;
inFile >> x >> y >> r;
v.push_back( new circle( x, y, r ) );
} else if ( c == 'R' ) {
double x1, y1, x2, y2;
inFile >> x1 >> y1 >> x2 >> y2;
v.push_back( new rectangle( x1, y1, x2, y2 ) );
} else if( c == 'T' ) {
double x1, y1, x2, y2, x3, y3;
inFile >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
v.push_back( new triangle( x1, y1, x2, y2, x3, y3 ) );
} else if ( c == 'X' ) {
inFile.close();
}
}
const char* p[] = { "Circle", "Rectangle", "Triangle" };
cout.setf( ios::fixed | ios::left );
cout << setw( 12 ) << "Type" << setw( 20 ) << "Area" << setw( 10 ) << "Radius" << "\n\n";
for ( size_t i = 0; i < v.size(); ++i ) {
shape::type t = v[i]->getType();
cout << setw( 12 ) << p[t] << setw( 20 ) << v[i]->area();
if ( t != shape::C )
cout << setw( 10 ) << "/" << '\n';
else
cout << dynamic_cast<circle*>(v[i])->getRadius() << "\n";
}
}


望采纳
全部回答

#include<iostream> #include<cmath> using namespace std;

const double PI=3.14;

class Shape { public: char c; virtual double Area() { return 0; } };

class Circle: public Shape { public: double x,y,r; double get() { return r; } double Area() { return PI*r*r; } };

class Rectangle:public Shape { public: double x1,y1,x2,y2; double Area() { return fabs(x1-x2)*fabs(y1-y2); } };

class Triangle:public Shape { public: double x1,y1,x2,y2,x3,y3; double Area() { return fabs(x1*y2+y1*x3+x2*y3-x1*y3-y1*x2-y2*x3)/2; } };

int main() {

Shape *sp; char c; while(cin>>c) { if(c=='X') break; if(c=='C') { Circle cp; cin>>cp.x>>cp.y>>cp.r; sp=&cp; } else if(c=='T') { Triangle tp; cin>>tp.x1>>tp.y1>>tp.x2>>tp.y2>>tp.x3>>tp.y3; sp=&tp; } else if(c=='R') { Rectangle rp; cin>>rp.x1>>rp.y1>>rp.x2>>rp.y2; sp=&rp; } cout<<"面积是:"<<sp->Area()<<endl; } return 0; }

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
看看我新飞飞赚钱方法.再提供你的意见和更好
四大名著哪个版本好,四大名著青少年版哪个版
DNF里的狂战是怎样放无限吸的?
谁能告诉我09年建筑行业的就业分析情况?
考试时紧张怎么办?如何做到不紧张?
哈市 延寿县最晚几点车?跪求!!!!!
miss.秀这个地址在什么地方,我要处理点事
对不起都能换回没关系吗?
高压包输出来得电是连续的还是间断的呢
爱情里卧薪尝胆的诗词,关于越王勾践的名言名
兰花园宾馆怎么去啊,有知道地址的么
什么样的女生男生最喜欢
如何查联通电话清单,联通网上营业厅官网怎么
易建联是否退出NBA了?为什么?
阿呆与阿瓜电影台词,求一些魔兽世界的BOSS对
推荐资讯
华北一区一套紫怒灵多少钱?
QQ华夏23级到那练!除了鬼目!
天下贰太虚装备和加点
一九八九年农历八月初四什么星座
手机上在哪里写小说,想在手机起点写小说,到
卢广仲loving you 歌词
我现在偷一直很痛做了CT没照出什么来,可就是
哪位遵义的朋友知道红花碗井为什麽会消失,谢
老鼠英文怎么读发音,老鼠的英文怎么读
山东话老八是什么意思,济南人说的“老八”是
dnf 怎么加武器好上一些?
烽火和战地什么时候可以点亮
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?