2023.5.5 面向对象程序设计实验报告

这篇具有很好参考价值的文章主要介绍了2023.5.5 面向对象程序设计实验报告。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实验项目名称:模板

一、实验目的

1、熟练掌握函数模板和类模板的定义格式。

2、熟练运用函数模板和类模板解决实际问题。

二、实验内容

1、复数类Complex有两个数据成员:a和b, 分别代表复数的实部和虚部,并有若干构造函数和一个重载-(减号,用于计算两个复数的距离)的成员函数。 要求设计一个函数模板

template < class T >

double dist(T a, T b)

对int,float,Complex或者其他类型的数据,返回两个数据的间距。

以上类名和函数模板的形式,均须按照题目要求,不得修改

输入格式:

每一行为一个操作,每行的第一个数字为元素类型,1为整型元素,2为浮点型元素,3为Complex类型,若为整型元素,接着输入两个整型数据,若为浮点型元素,接着输入两个浮点型数据,若为Complex型元素,输入两个Complex型数据(a1 b1 a2 b2),输入0时标志输入结束。

输出格式:

对每个输入,每行输出一个间距值。

输入样例:

1 2 5

3 2 4 5 9

2 2.2 9.9

0

 

输出样例:

3

5.83095

7.7

 

 

2、两个类如下设计:类Time有三个数据成员,hh,mm,ss,分别代表时,分和秒,并有若干构造函数和一个重载-(减号)的成员函数。类Date有三个数据成员,year,month,day分别代表年月日,并有若干构造函数和一个重载>(<)(大于号或者小于号)的成员函数。

要求设计一个函数模板

template <class T>

T maxn(T x[], int len);

对int,float,time和date或者其他类型的数据,返回最大值。

main主函数有如下变量的定义:

int intArray[100];

double douArray[100];

Time timeArray[100];

Date dateArray[100];

其中,hh = 3600 ss, mm = 60 ss, year = 365 day, month = 30 day,对于Time和Date类型,数据在转换成ss或者day后进行运算。

输入格式:

每行为一个操作,每行的第一个数字为元素类型,1为整型元素,2为浮点型元素,3为Time类型,4为Date类型,若为整型元素,接着输入整型数据,以0结束。若为浮点型元素,接着输入浮点型数据,以0结束。若为Time型元素, 输入Time型数据(hh1 mm1 ss1 hh2 mm2 ss2),以0结束。若为Date型数据,输入Date型数据(year1 month1 day1 year2 month2 day2),以0结束。输入-1时表示全体输入结束。

输出格式:

对每次输入,输出一个最大值。

样例输入:

1 4 5 9 3 7 0

2 4.4 5.5 6.9 3.2 2.7 0

3 18 21 22 18 20 31 18 21 49 0

4 2013 5 14 2013 5 15 2013 4 1 0

-1

样例输出:

9

6.9

18 21 49

2013 5 15

 

 

题解:

第一个实验的代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 class Complex {
 5     int real,vir;
 6 public:
 7     Complex(int a,int b):real(a),vir(b){}
 8     ~Complex(){}
 9     
10     double operator - (Complex b1){
11         return sqrt(((double)real-b1.real)*((double)real-b1.real)+((double)vir-b1.vir)*((double)vir-b1.vir));
12     }
13     
14 };
15 
16 template<class T>
17 double dist(T a,T b){
18     double c=a-b;
19     if(c<0) c=-c;
20     return c;
21 }
22 
23 int main(){
24     
25     int op;
26     while(cin>>op,op){
27         if(op==1){
28             int a,b;
29             cin>>a>>b;
30             cout<<dist(a,b)<<'\n';
31         }
32         else if(op==2){
33             float a,b;
34             cin>>a>>b;
35             cout<<dist(a,b)<<'\n';
36         }
37         else{
38             int x1,x2,y1,y2;
39             cin>>x1>>y1>>x2>>y2;
40             Complex a(x1,y1),b(x2,y2);
41             cout<<dist(a,b)<<'\n';
42         }
43     }
44     
45     return 0;
46 }

第二个实验代码:

#include<bits/stdc++.h>
using namespace std;

class Time{
public:
    int hh,mm,ss;
    
    Time(int a=0,int b=0,int c=0):hh(a),mm(b),ss(c){}
    ~Time(){}
    
    bool operator > (Time t2){
        int s1=hh*3600+mm*60+ss;
        int s2=t2.hh*3600+t2.mm*60+t2.ss;
        if(s1>=s2) return true;
        else return false;
    }
    
};

class Date{
public:
    int yy,mm,dd;
    
    Date(int a=0,int b=0,int c=0):yy(a),mm(b),dd(c){}
    ~Date(){}
    
    bool operator > (Date d2){
        int d11=yy*365+mm*30+dd;
        int d22=d2.yy*365+d2.mm*30+d2.dd;
        if(d11>=d22) return true;
        else return false;
    }
    
};

template<class T>
T maxn(T x[],int len){
    T maxx=x[1];
    for(int i=2;i<=len;++i){
        if(x[i]>maxx){
            maxx=x[i];
        }
    }
    
    return maxx;
}

int main(){
    
    ios::sync_with_stdio(false),cin.tie(0);
    
    int op;
    while(cin>>op,op!=-1){
        if(op==1){
            int x,intArray[100],idx=1;
            while(cin>>x,x){
                intArray[idx++]=x;
            }
            int maxx=maxn(intArray,idx-1);
            cout<<maxx<<'\n';
        }
        else if(op==2){
            float x,floatArray[100];
            int idx=1;
            while(cin>>x,x){
                floatArray[idx++]=x;
            }
            float maxx=maxn(floatArray,idx-1);
            cout<<maxx<<'\n';
        }
        else if(op==3){
            int hh,mm,ss,idx=1;
            Time TimeArray[100];
            while(cin>>hh,hh){
                cin>>mm>>ss;
                TimeArray[idx].hh=hh;
                TimeArray[idx].mm=mm;
                TimeArray[idx++].ss=ss;
            }
            Time maxx=maxn(TimeArray,idx-1);
            cout<<maxx.hh<<' '<<maxx.mm<<' '<<maxx.ss<<'\n';
        }
        else{
            int yy,mm,dd,idx=1;
            Date DateArray[100];
            while(cin>>yy,yy){
                cin>>mm>>dd;
                DateArray[idx].yy=yy;
                DateArray[idx].mm=mm;
                DateArray[idx++].dd=dd;
            }
            Date maxx=maxn(DateArray,idx-1);
            cout<<maxx.yy<<' '<<maxx.mm<<' '<<maxx.dd<<'\n';
        }
    }
    
    return 0;
}



文章来源地址https://www.toymoban.com/news/detail-434124.html

到了这里,关于2023.5.5 面向对象程序设计实验报告的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 面向对象程序设计

    【面向对象程序设计】(OOP)与【面向过程程序设计】在思维方式上存在着很大的差别。【面向过程程序设计】中,算法是第一位的,数据结构是第二位的,这就明确地表述了程序员的工作方式。首先要确定如何操作数据,然后再决定如何组织数据,以便于数据操作。而【面

    2023年04月13日
    浏览(32)
  • C++《面向对象程序设计课程设计》

    《面向对象程序设计课程设计》课程说明 适用专业:计算机科学与技术 课程周数:5周 一、根据计算机科学与技术专业人才培养方案制订。 (一)课程设计性质 课程设计是学生对课程所学知识的综合运用,它与课堂听讲、上机实验、课外练习、自学研究相辅相成,构成一个

    2024年02月08日
    浏览(35)
  • Kotlin程序设计(二)面向对象

    我们在前面已经学习了Kotlin程序设计的基础篇,本章我们将继续介绍更多Kotlin特性,以及面向对象编程。 其实函数我们在一开始就在使用了: 我们程序的入口点就是 main 函数,我们只需要将我们的程序代码编写到主函数中就可以运行了,不过这个函数只是由我们来定义,而

    2024年02月01日
    浏览(37)
  • Python-基础篇-类与对象/面向对象程序设计

    “类”是物以类聚的 “类” 类 和 对象 是 面向对象编程的 两个 核心概念 类 是对一群具有 相同 特征 或者 行为 的事物的一个统称,是抽象的, 不能直接使用 特征 被称为 属性 行为 被称为 方法 类 就相当于制造飞机时的 图纸 ,是一个 模板 ,是 负责创建对象的 定义类📚

    2024年01月19日
    浏览(41)
  • 面向对象程序设计第三次bolg

    本次博客针对面向对象程序设计的课程所发的PTA作业7,8以及期末考试中的面向对象编程题的分析和总结,重点介绍课程成绩统计程序系列题目以及期末考试的编程题。 在这次作业中7-1、7-2内容和考点相同,在此我分析一下7-2Hashmap的排序这个问题。 7-2 容器-HashMap-排序 分数

    2024年02月05日
    浏览(43)
  • 面向对象程序设计 之 文件输入输出流

    石 家 庄 铁 道 大 学 实 验 报 告 课程名称 面向对象程序设计 班级   姓名   学号   实验日期 2023.5.16 评分 100   实验项目名称:输入输出流 一、实验目的 掌握文本文件和二进制文件的基本访问方法; 了解一般I/O流和文件流的关系;了解文件与文件流的关系; 了解文件系统

    2024年02月05日
    浏览(33)
  • C++面向对象程序设计 - 类和对象进一步讨论

            在C++中,关于面向对象程序设计已经讲了很大篇幅,也例举很多案例,此篇将通过一些习题来进一步了解对象、静态成员、指针、引用、友元、类模板等等相关知识。         示例代码:         如上代码,运行后结果如下图:          现在将上述代码中,第

    2024年04月16日
    浏览(52)
  • C++面向对象程序设计 - 运算符重载

            函数重载就是对一个已有的函数赋予新的含义,使之实现新的功能。因此一个函数名就可以用来代表不同功能的函数,也就是一名多用。运算符也可以重载,即运算符重载(operator overloading)。         运算符重载的方法是定义一个重载运算符的函数,在需要执行被

    2024年04月25日
    浏览(31)
  • 面向对象程序设计——多文档综合性试验

    1)创建一个多文档应用程序MyMdi,可以在这个多文档中可以输入文本、显示静态图、动态图以及显示对话框进行操作。 2)第一个视图类的基类为CEditView(CView的子类),可以录入字符串。 3)第二个文档画出静态图,包括五种以上图形。 4)在第二个文档菜单栏“画图”中点

    2024年02月09日
    浏览(24)
  • .NET 面向对象程序设计 —— 学习笔记 详细版

            开始考虑通过封装、继承、多态把程序的耦合度降低(传统印刷 术的问题就在于所有的字都刻在同一版面上造成耦合度太高所制),开始用设计模式使得程序更加的灵活,容易修改, 并且易于复用。         大鸟说:“且先不说出题人的意思,单就你现在的

    2024年04月26日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包