C++实验4

实验结论

1.实验内容 2

(1)先求出每行的字符数,再通过比较位置下标的大小关系,判断输出空格还是符号

(2)源码

main.cpp

#include <iostream>
#include "graph.h"
using namespace std;

int main() {
    Graph graph1(‘*‘,5), graph2(‘$‘,7) ;  // 定义Graph类对象graph1, graph2
    graph1.draw(); // 通过对象graph1调用公共接口draw()在屏幕上绘制图形
    graph2.draw(); // 通过对象graph2调用公共接口draw()在屏幕上绘制图形

    return 0;
} 

graph.h

#ifndef GRAPH_H
#define GRAPH_H

// 类Graph的声明
class Graph {
    public:
        Graph(char ch, int n);   // 带有参数的构造函数
        void draw();    // 绘制图形
    private:
        char symbol;
        int size;
};

#endif

graph.cpp

// 类graph的实现

#include "graph.h"
#include <iostream>
using namespace std;

// 带参数的构造函数的实现
Graph::Graph(char ch, int n): symbol(ch), size(n) {
}

// 成员函数draw()的实现
// 功能:绘制size行,显示字符为symbol的指定图形样式
//       size和symbol是类Graph的私有成员数据
void Graph::draw() {
    int i,j,n;
    for(i=0;i<size;i++)
    {
        n=2*size-1;//n为每行输出的字符数
        for(j=1;j<=n;j++)
        {
            if(j<size-i||j>size+i)
            cout<<" ";
            else
            cout<<symbol;
        }
        cout<<endl;
    }
}

(3)程序运行环境:Dev-C++ 5.10

运行测试截图

2.实验内容 3

(1)类Fraction的类图

(2)源码

main.cpp

#include <iostream>
#include"fraction.h"
using namespace std;
int main()
{
    Fraction a;
    Fraction b(3,4);
    Fraction c(5);
    cout<<"a:",a.show();
    cout<<"b:",b.show();
    cout<<"c:",c.show();
    int x1,y1,x2,y2;
    cout<<"输入第一个分数的分子分母" <<endl;
    cin>>x1>>y1;
    Fraction a1(x1,y1);
    cout<<"输入第二个分数的分子分母" <<endl;
    cin>>x2>>y2;
    Fraction a2(x2,y2);
    a.add(a1,a2);
    cout<<"和:",a.show();
    a.sub(a1,a2);
    cout<<"差:",a.show();
    a.mul(a1,a2);
    cout<<"积:",a.show();
    a.div(a1,a2);
    cout<<"商:",a.show();
    a.compare(a1,a2);
    return 0;
}

fraction.h

//Fraction类的声明
class Fraction{
    public:
        Fraction(int t0,int b0);
        Fraction();
        Fraction(int t0);
        void add(Fraction &p1,Fraction &p2);
        void sub(Fraction &p1,Fraction &p2);
        void mul(Fraction &p1,Fraction &p2);
        void div(Fraction &p1,Fraction &p2);
        void compare(Fraction &p1,Fraction &p2);
        void show();
    private:
        int top;
        int bottom;
};

fraction.cpp

#include"fraction.h"
#include<iostream>
#include<cmath>
using namespace std;
int gys(int x,int y)//求最大公约数
{
    int m=1,a=x,b=y;
    for(;m!=0;)
    {
        m=a%b;a=b;b=m;
    }
    return a;
}
//Fraction类的实现
int m;//m为分子分母最大公约数
Fraction::Fraction():top(0),bottom(1){}
Fraction::Fraction(int t0):top(t0),bottom(1){}
Fraction::Fraction(int t0,int b0):top(t0),bottom(b0){}//构造函数重载
void Fraction::add(Fraction &p1,Fraction &p2){
    bottom=p1.bottom*p2.bottom;
    top=p1.top*p2.bottom+p1.bottom*p2.top;
    m=gys(fabs(top),fabs(bottom));
    top/=m,bottom/=m;
}
void Fraction::sub(Fraction &p1,Fraction &p2){
    bottom=p1.bottom*p2.bottom;
    top=p1.top*p2.bottom-p1.bottom*p2.top;
    m=gys(fabs(top),fabs(bottom));
    top/=m,bottom/=m;
}
void Fraction::mul(Fraction &p1,Fraction &p2){
    top=p1.top*p2.top,bottom=p1.bottom*p2.bottom;
    m=gys(fabs(top),fabs(bottom));
    top/=m,bottom/=m;
}
void Fraction::div(Fraction &p1,Fraction &p2){
    top=p1.top*p2.bottom,bottom=p1.bottom*p2.top;
    m=gys(fabs(top),fabs(bottom));
    top/=m,bottom/=m;
}
void Fraction::compare(Fraction &p1,Fraction &p2){
    if(p1.top*p2.bottom>p2.top*p1.bottom)
    cout<<"大小关系:"<<p1.top<<"/"<<p1.bottom<<">"<<p2.top<<"/"<<p2.bottom<<endl;
    if(p1.top*p2.bottom<p2.top*p1.bottom)
    cout<<"大小关系:"<<p1.top<<"/"<<p1.bottom<<"<"<<p2.top<<"/"<<p2.bottom<<endl;
    else
    cout<<"大小关系:"<<p1.top<<"/"<<p1.bottom<<"="<<p2.top<<"/"<<p2.bottom<<endl;
}
void Fraction::show(){
    cout<<top<<"/"<<bottom<<endl;
} 

(3)程序运行环境:Dev-C++ 5.10

运行测试截图

实验总结和体会

本次实验基本掌握了如何将C++程序以项目文件组织的多文件结构方式编写,通过这样的方式来写一个程序,能够使程序的各个部分的功能更加清晰的表现出来,适合用于两个人或者多个人合作写一个程序时使用,毕竟以后工作中要写的程序可能都比较长,更多的时候可能还是几个人合作写,所以觉得将C++程序以项目文件组织的多文件结构方式编写很实用

原文地址:https://www.cnblogs.com/wyqwyq/p/8909215.html

时间: 2024-11-05 18:28:14

C++实验4的相关文章

如何使用GNS3和Cisco IOU搭建路由交换实验-IOU篇

前面介绍了GNS3的概念,安装,配置和使用,本篇将介绍怎么利用GNS3配置IOU从而实现使用GNS3和Cisco IOU搭建路由交换实验. 由于本篇篇幅较长,所以先过一下大纲: 1. IOU模拟环境介绍 2. IOU软件环境的准备 3. VMware虚拟机的安装.导入和配置 4. IOU镜像的上传 5. GNS3的配置 6. IOU模拟环境的实现 IOU模拟环境介绍 IOU即IOS running in Unix,最初是由思科内部人员开发来测试IOS的平台,后来流传到互联网经网友改进有了后来的W

广外第二周的实验报告来这里分享一下

虽然有很多还不知道怎么改,可能也有很多测试不到的地方,但是通过这个星期我好歹了解了好多东西啊 实验报告 通过本次学习,能了解到VC6.0.是用于将已生成的C++语言源程序代码转换为计算机能读懂的目标代码,计算机用的均是二进制代码.编辑完成后它首先生成扩展名为obj的文件(程序编译后的二进制文件),若想进行之后的链接.运行过程,必须不断修改源程序文件至完全正确. 在文件→新建→源代码这里可以新建源代码:新建→打开项目或文件中可以打开以前写过的源代码或者程序:运行→编译中即把所打源文件转换为二进制代

webservice实验一

实验目的:安装jdk1.6_21以后的版本,利用JAX-WS API自己发布webservice并调用,以及用wsimport生成webservice客户端代码调用一个免费的web服务(如webxml.com.cn上的获取手机归属地的服务). 一.webservice原理了解 webservice是一种通用的跨语言跨平台的数据交互方式,之所以能够做到这一点,是因为它的底层实现机制是依赖于HTTP协议以及XML格式这些开发的标准.webservice使用SOAP(simple object acc

Cisco ISE + Windows Server 2008 实验

实验说明:此实验参考生产环境中某部分环境搭建而成,此环境Windows Server 2008用于登录用户.MAC等账号的认证,Cisco ISE用于认证授权等,无线部分利用VMWLC + Cisco 1702AP测试测试.因为为实验环境,整体网络架构所有节点为单点:Cisco ISE部分功能没有应用上,如测试PC端的补丁.防毒补丁.设备认证等(此部分在生产环境上实施),下图为此实验的网络架构图. Windows AD:  172.16.1.199 Cisco VMISE: 172.16.1.1

CentOS系统启动及内核大破坏模拟实验

讲过了centos的启动流程,此时是不是想来点破坏呢?那就尽情的玩耍吧,记得在实验之前拍个快照,万一哪个环节错误恢复不回来了呢,毕竟数据无价,话不多说,开始. 一.删除伪系统根.(ramdisk文件) (1)模拟误操作删除ramdisk文件. ①模拟误删除initramfs-3.10.0-514.el7.x86_64.img文件. ②为当前正在使用的内核重新制作ramdisk文件 格式为:mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) (

PCB实验与检修杂记

2017-08-24 有ABCD四个焊点,diagram上A与B相连,C与D相连,B与C属于同一组引脚.现根据实验要求将B.C短接,结果测得,B与C导通而A与C不导通,这与常识违背. 经过逐步缩小范围发现,C点上方留出的测量点和焊台的测量结果有所不同,经过分析,可知C点焊脚与焊台虚焊,测量时再表笔的压力下两者导通:而表笔一但离开C点,则两者不导通.即测量引入了误差. 对于此问题解决的思路: 1.稳扎稳打,逻辑分析,逐步缩小范围.2.测量引脚上方留出的点比直接测量引脚更可靠.

2062326 齐力锋 实验四《Java面向对象程序设计Android开发》实验报告

北京电子科技学院(BESTI) 实 验 报 告 课程: 程序设计与数据结构  班级: 1623  姓名: 齐力锋 学号: 20162326 成绩: 指导教师: 娄嘉鹏/王志强 实验日期: 2017年5月26日 实验密级:非密级 预习程度: 优良 实验时间: 2 Hours 仪器组次: 必修/选修: 必修 实验序号: 04 实验名称:Java面向对象程序设计Android开发 实验内容 1.Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBI

实验三+036+吴心怡

1)被测项目界面. 2)测试用例设计表 等价类 输入条件 有效等价类 编号 无效等价类 编号 年 1912≤year≤2050 ① year<1912 ② Year>2050 ③ 非数字 月 Month= 1,3,5,7,8,10,12 ④ Month<1 ⑤ Month= 4,6,9,11 month>12 ⑥ Month= 2 非数字 日 1≤ day ≤31 ⑦ day<1 ⑧ Day>311 ⑨ 非数字 测试用例表 测试用例编号 输入数据 预期输出 实际结果 通

实验三+018+李滨

1)被测项目界面. 2)测试用例设计表 等价类 输入条件 有效等价类 编号 无效等价类 编号 年 1912≤year≤2050 ① year<1912 ② Year>2050 ③ 非数字 月 Month= 1,3,5,7,8,10,12 ④ Month<1 ⑤ Month= 4,6,9,11 month>12 ⑥ Month= 2 非数字 日 1≤ day ≤31 ⑦ day<1 ⑧ Day>311 ⑨ 非数字 测试用例表 测试用例编号 输入数据 预期输出 实际结果 通

实验三+099+吴丹丹

一.实验目的 掌握黑盒测试用例设计方法 二.实验要求 (1)对被测程序进行黑盒测试用例设计 (2)运用等价类.边界值.决策表.状态图法等进行测试用例设计. (3)对手机上任意一款音乐软件进行黑盒测试实践.(作业若雷同,后上传者判定0分) 三.实验内容 1.对被测程序运用不同的测试技巧进行测试用例设计,并执行测试,撰写测试小结. 要求写出测试用例表.执行情况和测试小结. 2.对手机上任意一款音乐软件进行黑盒测试. 要求:1)使用思维导图 2)根据场景法.状态图法 设计测试用例. 3)附加题:如有可