首页 > 编程语言 >2023.5.23编程一小时打卡

2023.5.23编程一小时打卡

时间:2023-05-23 20:15:09浏览次数:43  
标签:pShapes Area double 23 2023.5 CShape 打卡 ptt public

一、问题描述:

定义抽象基类Shape,由它派生出五个派生类:Circle(圆形)、Square(正方形)、Rectangle( 长方形)、Trapezoid (梯形)和Triangle (三角形),用虚函数分别计算各种图形的面积,输出它们的面积和。要求用基类指针数组,每一个数组元素指向一个派生类的对象。PI=3.14159f,单精度浮点数计算。

输入格式:

输入在一行中,给出9个大于0的数,用空格分隔,分别代表圆的半径,正方形的边长,矩形的宽和高,梯形的上底、下底和高,三角形的底和高。

输出格式:

输出所有图形的面积和,小数点后保留3位有效数字。

二、解题思路:

首先,定义一个抽象类作为父类虚函数为计算面积函数,在定义其五个子类,在重新定义计算面积函数,在主函数中,定义一个指针数组,每个指针指向五个子类的地址,最后用父类的指针去调用子类的函数,最后输出其面积的加和。

三、代码实现:

 1 #include <iostream>
 2 #include<iomanip>
 3 using namespace std;
 4 class CShape
 5 {
 6     public:
 7         virtual double Area() { };    
 8 };
 9 class CRectangle:public CShape
10 {
11     public:
12         double w,h;
13         virtual double Area(){return w * h;}    
14 };
15 class CCircle:public CShape
16 {
17     public:
18         double r;
19         virtual double Area(){return 3.14159 * r * r ;}
20 
21 };
22 class CTriangle:public CShape
23 {
24     public:
25         double a,b;
26         virtual double Area(){
27         return a*b/2;
28     }
29 };
30 class Square:public CShape 
31 {
32     public:
33         double w;
34         virtual double Area(){return w*w;}
35 };
36 class Trapezoid:public CShape
37 {
38     public:
39         double d,c,h;     
40         virtual double Area(){return (d+c)*h/2.0;}
41 };
42 CShape *pShapes[100]; 
43 int main()
44 {
45     int i;
46     CRectangle *pr; CCircle *pc; CTriangle *pt;
47     Square *ps;Trapezoid *ptt;
48     for( i = 0;i < 5;++i ) {
49         switch(i) {    
50             case 0:
51             pc  = new CCircle();
52             cin >> pc->r;
53             pShapes[i] = pc;
54             break;
55             case 1: 
56             ps = new Square();
57             cin >> ps->w;
58             pShapes[i] = ps;
59             break;
60             case 2:
61             pr = new CRectangle();
62             cin >> pr->w >> pr->h;
63             pShapes[i] = pr;
64             break;        
65             case 3: 
66             ptt  = new Trapezoid();
67             cin >> ptt->d>> ptt->c>> ptt->h;
68             pShapes[i] = ptt;
69             break;
70             case 4:
71             pt = new CTriangle();
72             cin >> pt->a >> pt->b;
73             pShapes[i] = pt;
74             break; 
75         }        
76     }
77     double count=0;
78     for(i = 0;i <5;++i) 
79     count+=pShapes[i]->Area();
80     cout<<fixed<<setprecision(3)<<count;
81     return 0;
82 }

 

标签:pShapes,Area,double,23,2023.5,CShape,打卡,ptt,public
From: https://www.cnblogs.com/lixinyao20223933/p/17426228.html

相关文章

  • 【2023.03.20】P4710 「物理」平抛运动
    题目传送门:【洛谷】P4710[物理]平抛运动Step1:前置芝士您需要知道并了解以下芝士:数学:三角函数;物理:加速度公式;位移公式;那么如果您并不了解以上芝士,那么请继续向下看;如果您已经掌握以上芝士,那么请跳至“Step2”。三角函数讲解:注意,本题为物理题解,故不会放出......
  • MQCal工程算量V1.2.7.1(20230519)版本发布——土建、水电Excel算量插件工具
    MQCal工程算量加载宏工具是什么?首先说明的是:MQcal不是一个简单的对工程计算式算结果的求值工具。他是我本人结合手工算量经验,充分考虑预算员的需求,从算量表格自己设计、重复项目便捷输入、特殊标记、汇总统计、打印或打印为pdf、造价预估等实用功能一体解决方法。MQCal工程算量......
  • 2023.5.23每日总结
    <%@pageimport="wangzhan.Thesql"%><%@pageimport="wangzhan.Pd_P_assignment"%><%@pageimport="wangzhan.Pd_S_assignment"%><%@pagelanguage="java"contentType="text/html;charset=UTF......
  • 打卡
    1.问题:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?2.思路:填在百位、十位、个位的数字都是1、2、3、4。使用循环排列组合所有情况,再利用判断将组成所有的排列后再去掉不满足条件的排列。3.程序流程图: 4.代码实现:#include<iostream>usingnamespace......
  • 打卡2
    问题描述:爱因斯坦出了一道数学题:有一条长台阶,若每步跨2阶,则最后剩1阶,若跨3,则剩2,若跨5,则剩4,若跨6,则剩5,若跨7,则不剩。问在1~N内,有多少数能满足?流程图:  伪代码:inputNfori<-1toNifi%2=1&&i%3=2&&i%5=4&&i%6=5&&i%7=0outputisum++outputsum代码:#include<iostrea......
  • c++打卡练习(37)
    比较两个分数的大小流程图:伪代码:源代码:#include<iostream>usingnamespacestd;intmain(){ inta1,a2,b1,b2,c1,c2,d1,d2,i; cout<<"输入要比较的两个分数"<<endl; cin>>a1; getchar(); cin>>a2; cin>>b1; getchar(); cin>>b2; if(a2>b2){ ......
  • 5.23
    #include<stdio.h>voidmain(){intinteger,i,max,min,sum;max=-32768;min=32767;sum=0;for(i=0;i<10;i++){printf("Inputnumber%d:",i);scanf("%d",&integer);sum+=integer;if(integer>max)max=integer;if(integer<min)min=intege......
  • 编程一小时2023.5.23
    1.#include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;chartran(charc){return(int)(c-'A'-4)>0?(c-5):(c+21);}stringsd,str,ed,eof="ENDOFINPUT";intmain(){strings;while(getline(ci......
  • 5月23日打卡
    例5-7常成员函举例代码部分: #include<iostream>usingnamespacestd;classR{private:intr1,r2;public:R(intr1,intr2):r1(r1),r2(r2){}voidprint();voidprint()const;};voidR::print(){cout<<r1<<":"&l......
  • 编程打卡:面向对象程序设计
    #include<iostream>#include<iomanip>usingnamespacestd;constfloatPI=3.14159;classShape{public:virtualfloatarea()=0;};classCircle:publicShape{private:floatradius;public:Circle(floatr):radius(r){}......