首页 > 其他分享 >11-3

11-3

时间:2023-11-03 18:11:06浏览次数:28  
标签:11 arr 克隆 double length Vector array

用C++完成数学中向量的封装,其中,用指针和动态申请支持向量长度的改变,使用浅克隆和深克隆复制向量类,比较这两种克隆方式的异同。

#include<cmath>

#include<iostream>

using namespace std;

 

class Vector{

private:

    double *array =new double[4];

    double length;

public:

    Vector(double arr[4])

    {

        this->array[0] = arr[0];

        this->array[1] = arr[1];  

        this->array[2] = arr[2];

        this->array[3] = arr[3];

        this->length = sqrt(((arr[0] - arr[1])*(arr[0] - arr[1])) + ((arr[2] - arr[3])*(arr[2] - arr[3])));

    }

    ~Vector()

    {

        delete[]array;

        this->length = 0;

    }

    Vector* clone()

    {

        return new Vector(*this);

    }

 

    Vector(const Vector& vector)

    {

        //浅克隆

        this->array = vector.array;

        this->length = vector.length;

 

    }

    void show()

    {

        cout << "向量长度:" << this->length << endl;

    }

};

int main()

{

    double s[4] = { 1, 2, 3, 4 };

    Vector* v1 = new Vector(s);

    Vector* v2 = v1->clone();

    v1->show();

    v2->show();

    return 0;

}

用C++完成数学中向量的封装,其中,用指针和动态申请支持向量长度的改变,使用浅克隆和深克隆复制向量类,比较这两种克隆方式的异同。

实验要求:

1.画出对应的类图;

2.提交源代码(用C++完成);

3.注意编程规范。

 

 

 

#include<cmath>

#include<iostream>

using namespace std;

 

class Vector{

private:

    double *array =new double[4];

    double length;

public:

    Vector(double arr[4])

    {

        this->array[0] = arr[0];

        this->array[1] = arr[1];  

        this->array[2] = arr[2];

        this->array[3] = arr[3];

        this->length = sqrt(((arr[0] - arr[1])*(arr[0] - arr[1])) + ((arr[2] - arr[3])*(arr[2] - arr[3])));

    }

    ~Vector()

    {

        delete[]array;

        this->length = 0;

    }

    Vector* clone()

    {

        return new Vector(*this);

    }

 

    Vector(const Vector& vector)

    {

        //浅克隆

        this->array = vector.array;

        this->length = vector.length;

 

    }

    void show()

    {

        cout << "向量长度:" << this->length << endl;

    }

};

int main()

{

    double s[4] = { 1, 2, 3, 4 };

    Vector* v1 = new Vector(s);

    Vector* v2 = v1->clone();

    v1->show();

    v2->show();

    return 0;

}

标签:11,arr,克隆,double,length,Vector,array
From: https://www.cnblogs.com/YFLZ/p/17808144.html

相关文章

  • 金油胜手:11.3黄金、原油行情走势分析及操作建议
     现货黄金--  周五(11月3日)亚市盘中,黄金价格交投于1984美元/盎司附近,在美联储周四连续第二次会议维持利率不变后,美国国债延续了3月份以来的最大涨幅。这一决定强化了人们的猜测,即美联储已经结束了自上世纪80年代初以来最激进的货币紧缩政策。但随着美联储主席鲍威尔为进一步......
  • Android 11 下拉菜单长按WiFi图标SystemUI ANR
    bug描述:(MTK)--Android11的SystemUI下拉菜单长按图标(tiles)导致SystemUI崩溃重启。10-0108:01:11.23657925833EAndroidRuntime:FATALEXCEPTION:AsyncTask#110-0108:01:11.23657925833EAndroidRuntime:Process:com.android.systemui,PID:579210-0108......
  • 编程猫11岁学员拿到NOC决赛一等奖,妈妈分享教育心得
    来自广州的龙芷盈今年11岁,上五年级。她在编程猫学习编程快三年的时间,已经拿到了蓝桥杯国赛二等奖、NOC决赛一等奖。小盈妈妈说“小盈平常有点难管教、很倔强”,但同时也是个有主见、有规划的孩子,她会自己做好学习规划和时间管理,这也让她在学校和编程猫的学习中都收获了很好的成......
  • 文心一言 VS 讯飞星火 VS chatgpt (127)-- 算法导论11.2 2题
    二、用go语言,位向量(bitvector)是一个仅包含0和1的数组。长度为m的位向量所占空间要比包含m个指针的数组少得多。请说明如何用一个位向量来表示一个包含不同元素(无卫星数据)的动态集合。字典操作的运行时间应为O(1)。文心一言,代码正常运行:在Go语言中,我们可以使用map[int]bool......
  • 文心一言 VS 讯飞星火 VS chatgpt (127)-- 算法导论11.2 2题
    二、用go语言,位向量(bitvector)是一个仅包含0和1的数组。长度为m的位向量所占空间要比包含m个指针的数组少得多。请说明如何用一个位向量来表示一个包含不同元素(无卫星数据)的动态集合。字典操作的运行时间应为O(1)。文心一言,代码正常运行:在Go语言中,我们可以使用map[int]bool来......
  • 11.2
    赛后关网罪大恶极T1上海直接算数基本定理点击查看代码#include<bits/stdc++.h>typedefintcount;typedeflonglongvalue;inlinevalueread(){countf(1);valuex(0);charch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-1;......
  • Aspose.Words for Java21.11去除水印和数量限制
    前言工欲善其事,必先利其器目前用到了word转pdf,然后开始研究大佬的文章,用于个人学习,首先感谢!源码分析1.下载Aspose.WordsforJava21.11官方jar包2.开始分析调用授权方法InputStreamis=newFileInputStream("..license.xml");Licenselicense=newLicense();license.setLi......
  • Win11_23H2_年度大版本更新
    大版本号:23H2内部版本号:22631.2428本系统镜像纯粹日常工作中自用并共享,基于微软官方原版镜像制作,目前只集成自应答文件和常用VC库,若你有好的建议或意见可发我邮箱;下载完记得验证hash值,以防翻车!文件说明:文件1.Win11_business_23H2_22631.2428_x64_update2023.11.iso★微软官方商业版......
  • 11月LeetCode每日一题: 117. 填充每个节点的下一个右侧节点指针 II
    题目描述:给定一个二叉树:structNode{intval;Node*left;Node*right;Node*next;}填充它的每个next指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将next指针设置为 NULL 。初始状态下,所有 next指针都被设置为 NULL 。 考察......
  • iwtgm-11
    题目链接A.能全买,就让剩余的总钱/全买,加上可得的糖数,总钱-这些花费此时不能全买,就遍历一遍,算出能买的总数再让剩余的总钱/能买的...这样是不会T的:设total为这一轮能买的糖果的总价格,last为之前剩下的钱,now为这一轮买完糖果后剩下的钱now=last%total,所以now<total,(取模肯定......