PTA 6-1 类的继承和派生

7-2 从Student类和Teacher类派生出Graduate类(pta) 题目内容: 已知基类Person定义如下: class Person { char Name[20]; char Sex; int Age; public: void Register(char name[],int age,char sex); void ShowMe(); }; 请通过继承的方法建立两个派生类,其中 派生类Teacher: 1.新增的数据成员有: char Dept[20]; ... 阅读详情

本题实现类的额继承和派生。已经给出相关的数据结构和类的声明,要求实现类的相关函数,为保证比较的结果,所有的数据均以int类型(除了PI取3.14外),程序运行时,输入一个点p的坐标x和y,接着是圆的中心坐标和半径,接着是三角形的三个顶点,程序运行显示圆的面积和周长,点p是否位于园内,三角形的面积和周长,以及p是否位于三角形内。

函数接口定义:

在这里给出了数据结构和类的声明:
#include <iostream>
#include <math.h>
using namespace std;
const double PI = 3.14;
struct Point{//点的定义
    int x,y;
};
class Shape
{
public:
    int area(){return 0;}//计算图形面积
    int length(){return 0;}//计算图形的周长
    void show(){}//显示相关信息
    bool IsInside(Point p){return false;}//点p是否位于图形内,如果是,返回true
};
class Circle:public Shape{
    Point center;//圆心
    int radius;//半径
public:
    Circle(Point,int);
    int area();
    int length();
    void show();
    bool IsInside(Point p);
};

class TriAngle:public Shape{
    Point a,b,c;//三角形的三个顶点
public:
    TriAngle(Point,Point,Point);
    int area();
    int length();
    void show();
    bool IsInside(Point p);
};

裁判测试程序样例:

在这里给出函数被调用进行测试的例子。例如:
int main()
{
    Point p,center,a,b,c;
    int r;
    cin>>p.x>>p.y;
    cin>>center.x>>center.y;
    cin>>r;
    cin>>a.x>>a.y>>b.x>>b.y>>c.x>>c.y;    
    Circle c1(center,r);
    c1.show();
    if(c1.IsInside(p))
        cout<<"p inside circle"<<endl;
    else
        cout<<"p not inside circle"<<endl;
    TriAngle tri(a,b,c);
    tri.show();
    if(tri.IsInside(p))
        cout<<"p inside triangle"<<endl;
    else
        cout<<"p not inside triangle"<<endl;       
    return 0;
}
/* 请在这里填写答案 */

代码实现如下:

Circle::Circle(Point p1 ,int  r1) //类内函数类外定义记得加类名前缀,此处占位参数,记得补上形参
{
    center=p1;
    radius=r1;
}
 int Circle::area()               //计算面积  
 {
      int area=PI*radius*radius;
      return area;
 }
 int Circle::length()            //计算周长
 {
       int length=2*PI*radius;
       return length;
 }
void Circle::show()
{
    cout<<"Circle:area="<<Circle::area()<<",length="<<Circle::length()<<endl;
}
bool  Circle::IsInside(Point p)      //判断是否在圆内
 {
       double dis1=sqrt(pow(p.x-center.x,2)+pow(p.y-center.y,2));
        if(dis1<=radius)
        {
            return true;
        }
        else return false;
 }
TriAngle::TriAngle(Point p1 ,Point  p2 ,Point p3 )
{
      a=p1;
      b=p2;
      c=p3;
}
    int TriAngle::area()   //当三个点A、B、C的坐标分别为A(x1,y1)、B(x2,y2)、C(x3、y3)时,
                           //三角形面积计算公式:area=√s(s−a)(s−b)(s−c),其中s=(a+b+c)/2。
{                          //pow函数求平方,sqrt函数求开方
           double  c1=sqrt(pow(a.x-b.x,2)+pow(a.y-b.y,2));//c边   
           double b1=sqrt(pow(a.x-c.x,2)+pow(a.y-c.y,2));//b边
           double a1=sqrt(pow(c.x-b.x,2)+pow(c.y-b.y,2)); //a边
           double ps=(a1+b1+c1)/2;     
           int areas=sqrt(ps*(ps-a1)*(ps-b1)*(ps-c1));   //海伦公式的运用
           return areas;
}
int TriAngle::length()
{
         int  d1=sqrt(pow(a.x-b.x,2)+pow(a.y-b.y,2));
         int d2=sqrt(pow(a.x-c.x,2)+pow(a.y-c.y,2));
         int d3=sqrt(pow(c.x-b.x,2)+pow(c.y-b.y,2));
         return  d1+d2+d3;
}
void TriAngle::show()
{
   cout<<"TriAngle:area="<<TriAngle::area()<<",length="<<TriAngle::length()<<endl;
}
bool TriAngle::IsInside(Point p)    //判断点是否在三角形内,通过面积法去判断,
{
        double d1=sqrt(pow(a.x-p.x,2)+pow(a.y-p.y,2));  //ap边
        double d3=sqrt(pow(p.x-c.x,2)+pow(p.y-c.y,2));   //cp边
        double d2=sqrt(pow(p.x-b.x,2)+pow(p.y-b.y,2));  //bp边
        double  c1=sqrt(pow(a.x-b.x,2)+pow(a.y-b.y,2));  //c
        double b1=sqrt(pow(a.x-c.x,2)+pow(a.y-c.y,2));//b
        double a1=sqrt(pow(c.x-b.x,2)+pow(c.y-b.y,2)); //a
        double p1=(d1+d2+c1)/2;
        double p2=(d1+d3+b1)/2;
        double p3=(d3+d2+a1)/2;
        double ps=(a1+b1+c1)/2;
        int area1=sqrt(p1*(p1-d1)*(p1-d2)*(p1-c1));
        int area2=sqrt(p2*(p2-d1)*(p2-b1)*(p2-d3));
        int area3=sqrt(p3*(p3-a1)*(p3-d2)*(p3-d3));
        int areas=sqrt(ps*(ps-a1)*(ps-b1)*(ps-c1));
        if(areas>=(area1+area2+area3))//因为double int型转换间有数据丢失,所以此处是>=而非==
            {
                return true;
            }
           else return false;
}

PTA:多重继承(教师学生类,c++) 声明一个教师(Teacher)类和一个学生(Student)类,用多重继承的方式声明一个研究生(Graduate)派生类。教师类中包括数据成员name(姓名),age(年龄),title(职称)。学生类中包括数据成员name(姓名),age(年龄),score(成绩),输出这些数据。 函数接口定义: 参见题目描述 裁判测试程序样例: /* 请在这里填写答案 */ int main( ) { Graduate grad1("Wang-li",24,'f',"assistant",89.5,1234.5) 阅读详情

相关推荐

惊呆了!Oracle 11g从入门到放弃的保姆级指南(新手必看)

本文为Oracle 11g数据库新手提供了一份详尽的入门指南。内容涵盖从安装配置、SQL*Plus工具使用、核心的SQL增删改查操作,到事务、索引等进阶概念的解析。文章旨在帮助初学者避开常见陷阱,快速掌握这一经典关系型数据库管理系统的基本操作与核心技能,实现从入门到上手。

ooo22的博客 266

pta23面向对象程序设计实验4继承与派生

7-1 定义基类Point和派生类Circle,求圆的周长.分数 10全屏浏览切换布局作者 沙金单位 石家庄铁道大学定义基类Point(点)和派生类Circle(圆),求圆的周长。Point类有两个私有的数据成员float x,y;Circle类新增一个私有的数据成员半径float r和一个公有的求周长的函数getCircumference();主函数已经给出,请编写Point和Circle类。

2301_79963929的博客 1377

医疗大模型实战——从零构建MedicalGPT全流程解析

本文详细解析了从零构建医疗大模型MedicalGPT的全流程实战。基于Qwen-7B模型与约195万条中文医疗数据,完整复现了增量预训练、监督微调与偏好对齐三大核心环节,并分享了如何在有限硬件资源下实现高效训练与部署,为开发者提供了可复现的医疗AI项目实战指南。

weixin_29193259的博客 553

C++ 7-1类的继承与派生(PTA题目)

定义平面二维点类CPoint,有数据成员x坐标,y坐标,函数成员(构造函数复制构造函数、虚函数求面积GetArea,虚函数求体积函数GetVolume、输出点信息函数print。由CPoint类派生出圆类Cirle类(新增数据成员半径radius),函数成员(构造函数、复制构造函数、求面积GetArea,虚函数求体积函数GetVolume、输出圆信息函数print。 再由Ccirle类派生出圆柱体Ccylinder类(新增数据成员高度height),函数成员(构造函数、复制构造函数、求表面积GetArea,

vegitb_ciaken的博客 8941

Frida实战:从adb连接到安卓设备参数加密Hook全流程解析

本文详细解析了使用Frida进行安卓应用动态分析的全流程。通过adb连接设备并部署Frida服务端,结合静态分析与动态Hook技术,精准定位并拦截关键函数,特别是针对参数加密等核心逻辑的实时监控与修改,为逆向分析与安全研究提供了高效实战方案。

weixin_29208077的博客 343

Spine动画在Unity里卡顿、闪烁、排序错乱?这些性能优化与渲染问题一次讲清

本文深入解析了Spine动画在Unity中常见的卡顿、闪烁和排序错乱问题,提供了全面的性能优化与渲染解决方案。从性能瓶颈诊断到材质合并、动态合批优化,再到层级错乱与Alpha闪烁的处理,帮助开发者提升动画表现和运行效率。特别针对Unity和Spine的协同工作进行了详细的技术探讨。

weixin_29967445的博客 379

6-5 汽车类的继承

根据给定的汽车类vehicle(包含的数据成员有车轮个数wheels和车重weight)声明,完成其中成员函数的定义,之后再定义其派生类并完成测试。 小车类car是它的派生类,其中包含载人数passenger_load。每个类都有相关数据的输出方法。 ###Vehicle类声明如下: #include<iostream> using namespace std; class Vehicle { protected: int wheels;

bujianzingguang的博客 1226

SNAP计算哨兵二号的叶面积指数(LAI)

对于哨兵二号数据以及LANDSAT8数据,SNAP提供已经集成好的模块计算LAI。在Optical->Thematic Land Processing->Biopyhsical Processor目录下面。 对于经过Sen2Cor处理好的数据,需经过重采样才可进行计算。重采样工具在Raster->Geometric->Resampling。 如果选择Biopyhsical Processor S2_10m进行计算,需要将所有的波段都重采样为10米(哨兵二号的第二波段为10米,可据此波

gxwwww的博客 9417

PTA-继承与派生

按照要求实现类参见题目描述。参见题目描述。参见题目描述。age=a;title=t;int age;sex=s;score=sco;char sex;/* 请在这里填写答案 */

2302_80129166的博客 1834

2026华为OD机试(C++)真题【E卷+A卷+B卷+C卷+D卷】目录+在线OJ

华为OD机试真题题库【E卷+A卷+B卷+C卷+D卷】目录,C++实现。

MISAYAONE的博客 20万+

3步!Spring Boot+OCR引擎秒提身份证/营业执照?手把手教你从零实现!

OCR技术革新文档识别效率 本文演示了如何利用Spring Boot+Tesseract OCR+OpenCV构建自动化文档识别系统。相比传统人工录入,OCR技术可实现: 5秒极速提取身份证/营业执照关键信息 精准识别中文文本(准确率90%+) 正则过滤自动匹配结构化数据 技术要点: OpenCV图像预处理(灰度化+二值化) Tesseract多语言OCR识别 正则表达式精准提取证件号码 效率提升达100倍,错误率降低90%,适用于金融、政务等需要批量处理证件的场景。

java专栏 904

【C++PTA】7-2 类的继承与派生 (25 分)

定义平面二维点类CPoint,有数据成员x坐标,y坐标,函数成员(构造函数复制构造函数、虚函数求面积GetArea,虚函数求体积函数GetVolume、输出点信息函数print。由CPoint类派生出圆类Cirle类(新增数据成员半径radius),函数成员(构造函数、复制构造函数、求面积GetArea,虚函数求体积函数GetVolume、输出圆信息函数print。 再由Ccirle类派生出圆柱体Ccylinder类(新增数据成员高度height),函数成员(构造函数、复制构造函数、求表面积GetArea,

libertye的博客 2802

QGis软件 —— 2、QGis加载在线地图两种方式(谷歌地图、天地图)

QGis软件 —— 2、QGis加载在线地图两种方式(谷歌地图)

1万+

【PTA/C++】继承与派生

定义基类Point(点)和派生类Circle(圆),求圆的周长。Point类有两个私有的数据成员float x,y;Circle类新增一个私有的数据成员半径float r和一个公有的求周长的函数getCircumference();主函数已经给出,请编写Point和Circle类。//请编写你的代码int main()return 0;输入格式:输入圆心和半径,x y r中间用空格分隔。输出格式:输出圆的周长,小数点后保留2位有效数字。1 2 3输出样例:在这里给出相应的输出。

2403_88108595的博客 1508

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

PTA 6-1 私有继承派生类使用基类的成员函数

按要求完成下面的程序: 1、定义一个Animal类,成员包括: (1)整数类型的私有数据成员m_nWeightBase,表示Animal的体重; (2)整数类型的保护数据成员m_nAgeBase,表示Animal的年龄; (3)公有函数成员set_weight,用指定形参初始化数据成员m_nWeightBase; (4)公有成员函数get_weight,返回数据成员m_nWeightBase的值...

qq_45622493的博客 4963

继承和派生-7-1 动物世界

7-1 动物世界 (15分) 补充程序 : 1、实现Mammal类的方法 2、由Mammal类派生出Dog类,在Dog类中增加itsColor成员(COLOR类型) 3、Dog类中增加以下方法: constructors: Dog()、Dog(int age)、Dog(int age, int weight)、Dog(int age, COLOR color)、 Dog(int age, int ...

weixin_43301331的博客 1650

PTA 6-5 多重继承派生类构造函数 (10分) c++第5章类继承

题目 根据所给的基类Student和Teacher,定义Graduate类 类定义: #include <iostream> #include <string> using namespace std; class Teacher {public: ...

qq_40468936的博客 5623

7.1 类的继承与派生

一、概述 封装:现实世界中的联系 将数据与数据的处理函数结合在一起,隐藏数据,数据的访问只能通过类的共有函数。 继承:持续发展的开放的编程态度 新的类在不破坏类的封装的特性的情况下得到了原有类的功能,并依据新的需求添加新的数据和成员。 多态:对程序通用性的追求 同一名称实现不同的功能,达到行为标识统一。 二、基本概念 继承:保持已有类的特性,而构造新类的过程称为继承。 派生:在已有类的基础上新增自己的特性,而产生新类的过程称为派生。 被继承的类称为基类或父类 派生出的

m0_53359491的博客 330

6 C++继承和派生

1. 继承 在定义B类时,如果该类与已有的A类相似,那么A是基类,B是基类的派生类(也叫子类)。 派生类拥有基类的全部成员和成员变量,不论是private,protected,public。在派生类的成员函数中,不能访问基类中的private成员。 派生类的写法: class 派生类: public 基类名 { }; 2. 类之间的关系 3. 基类/派生类同名成员 基类和派生类有相同名字的成员变量和成员函数。 4. 派生类的构造函数 派生类对象包含基类对象,执行派生类构造函数之

qq_43153757的博客 459

定义多边形类,继承产生矩形类和正多边形类

PTA一道题,依旧没有在规定时间做出来。 #include <iostream> using namespace std; /*定义多边形类*/ class polygon { protected: int number;//边数,最多不超过100条边 private: int side_length[100];//边长数组 public: polygon(); polygon...

mkxiaom的博客 1597

PTA7-1 多重继承实现Birthtime类

已有类Time和Date,要求设计一个派生类Birthtime,它继承类Time和Date,并且增加一个数据成员Childname,用于表示小孩的名字,同时设计主程序,输入2个小孩的姓名、出生日期,并将这两个小孩的姓名、出生日期输出。 类定义.png 输入格式: 一共两行,每行为一个孩子的信息。该行分别为:姓名、年、月、日、小时、分钟、秒 输出格式: 小孩的姓名:出生年月,出生时间 输入样例:...

qq_45622493的博客 2575

C++PTA习题总结(二)

文章目录第五章 继承性:派生类 第五章 继承性:派生类

Lereno的博客 1万+

PTA程序题分析(6)

PTA程序题分析(6)

2301_80864377的博客 1064

面向对象与C++程序设计-类的继承与派生学习笔记

C++ 基类与派生类

Zach_z的博客 1442

【PTA】私有继承派生类使用基类的成员函数

按要求完成下面的程序: 1、定义一个Animal类,成员包括: (1)整数类型的私有数据成员m_nWeightBase,表示Animal的体重; (2)整数类型的保护数据成员m_nAgeBase,表示Animal的年龄; (3)公有函数成员set_weight,用指定形参初始化数据成员m_nWeightBase; (4)公有成员函数get_weight,返回数据成员m_nWeightBase的值;...

lzx's blog 3732

PTA 继承第一次实验(选择题解析)

继承第一次实验 2-1 一个类的私有成员 (2分) 只能被该类的成员函数访问 只能被该类的成员函数和友元函数访问 只能被该类的成员函数、友元函数和派生类访问 以上答案都不对 正确答案:B 解析: 派生类中父类的私有成员为不可访问。 2-2 以下关于C++语言中继承的叙述中,错误的是( )。 (2分) 继承是父类和子类之间共享数据和方法的机制 继承定义了一种类与类之间的关系...

好学者的博客 1万+
上一篇: Switch语句的运用及与If语句的比较
下一篇: PTA---7-1 海量浮点数排序
从一的
博客等级 码龄5年 1995粉丝 213原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值