实验4 类与数组

news/2024/5/17 5:03:08/文章来源:https://www.cnblogs.com/gkd-gkd/p/16855581.html

实验任务5

 1 #pragma once
 2 
 3 #include<iostream>
 4 #include<cassert>
 5 using std::cout;
 6 using std::endl;
 7 
 8 class vectorInt
 9 {
10 private:
11     /* data */
12     int size;
13     int *p;
14 public:
15     vectorInt(int n);
16     vectorInt(int n, int value);
17     vectorInt(const vectorInt &ve);
18     ~vectorInt();
19 
20     int &at(int index);
21     int get_size() const;
22     friend void output(vectorInt &v);
23 };
24 
25 vectorInt::vectorInt(int s)
26 {
27     size = s;
28     p = new int[size];
29     cout << "constructor 1 called" << endl;
30 }
31 
32 vectorInt::vectorInt(int s, int value)
33 {
34     size = s;
35     p = new int[size];
36     for(auto i = 0; i < size; i++)
37         p[i] = value;
38     cout << "constructor 2 called" << endl;    
39 }
40 
41 vectorInt::vectorInt(const vectorInt &ve){
42     size = ve.size;
43     p = new int[size];
44     for(auto i = 0; i < size; i++)
45         p[i] = ve.p[i];
46     cout << "copy constructor called" << endl;    
47 }
48 
49 vectorInt::~vectorInt()
50 {
51     delete[] p;
52     cout << "deconstructor called" << endl;
53 }
54 
55 int &vectorInt::at(int index){
56     assert(index >= 0 && index < size);
57     return p[index];     
58 }
59 
60 int vectorInt::get_size() const{
61     return size;
62 }
63 
64 void output(vectorInt &v){
65     for(auto i = 0; i < v.size; i++)
66         cout << v.p[i] << " " ;
67     cout << endl;    
68 }
vectorInt.hpp
 1 #include <iostream>
 2 #include "vectorInt.hpp"
 3 
 4 void test() {
 5     using namespace std;
 6 
 7     int n;
 8     cin >> n;
 9     
10     vectorInt x1(n);
11     for(auto i = 0; i < n; ++i)
12         x1.at(i) = i*i;
13 
14     output(x1);
15 
16     vectorInt x2(n, 42);
17     vectorInt x3(x2);
18 
19     output(x2);
20     output(x3);
21 
22     x2.at(0) = 77;
23 
24     output(x2);
25     output(x3);
26 }
27 
28 int main() {
29     test();
30 }
task5.cpp

运行结果截图:

 

 

 

实验任务6

  1 #pragma once
  2 
  3 #include <iostream>
  4 
  5 
  6 using std::cout;
  7 using std::endl;
  8 
  9 class Matrix {
 10 public:
 11     Matrix(int n);                     // 构造函数,构造一个n*n的矩阵
 12     Matrix(int n, int m);              // 构造函数,构造一个n*m的矩阵
 13     Matrix(const Matrix &X);           // 复制构造函数,使用已有的矩阵X构造
 14     ~Matrix();                         //析构函数
 15 
 16     void set(const double *pvalue);     // 用pvalue指向的连续内存块数据按行为矩阵赋值
 17     void set(int i, int j, int value); //设置矩阵第i行第j列元素值为value
 18     double &at(int i, int j);          //返回矩阵第i行第j列元素的引用
 19     double at(int i, int j) const;     // 返回矩阵第i行第j列元素的值
 20     int get_lines() const;             //返回矩阵行数
 21     int get_cols() const;              //返回矩列数
 22     void print() const;                // 按行打印输出矩阵
 23 
 24 private:
 25     int lines; // 矩阵行数
 26     int cols;  // 矩阵列数
 27     double *p; // 指向存放矩阵数据的内存块的首地址
 28 };
 29 
 30 // 类Matrix的实现:待补足
 31 // ×××
 32 Matrix::Matrix(int n){
 33     lines = n;
 34     cols = n;
 35     p = new double[n*n];
 36 }
 37 
 38 Matrix::Matrix(int n, int m){
 39     lines = n;
 40     cols = m;
 41     p = new double[n*m];
 42 }
 43 
 44 Matrix::Matrix(const Matrix &X): lines{X.lines}, cols{X.cols}
 45 {
 46     p = new double[lines * cols];
 47     for(auto i = 0; i < lines * cols; i++)
 48         p[i] = X.p[i];
 49 }
 50 
 51 Matrix::~Matrix()
 52 {
 53     delete[] p;
 54 }
 55 
 56 void Matrix::set(const double *pvalue)
 57 {
 58     for (auto i = 0; i < lines * cols; i++)
 59     {
 60         if((pvalue+i) == NULL)
 61            break;
 62         p[i] = pvalue[i];   
 63     }
 64 }
 65 
 66 void Matrix::set(int i,int j,int value){
 67     int index = i * cols + j;
 68     p[index] = value;
 69 }
 70 
 71 double &Matrix::at(int i, int j)
 72 {
 73     int index = i * cols + j;
 74     return p[index];
 75 }
 76 
 77 double Matrix::at(int i, int j) const
 78 {
 79     return p[i * cols + j ];
 80 }
 81 
 82 int Matrix::get_lines() const
 83 {
 84     return lines;
 85 }
 86 
 87 int Matrix::get_cols() const
 88 {
 89     return cols;
 90 }
 91 
 92 void Matrix::print() const
 93 {
 94     for(int i = 1; i <= lines; i++)
 95     {
 96         for (int j = 1; j <= cols; j++)
 97         {
 98             cout << p[(i-1) * cols + j - 1];
 99             if(j < cols)
100                cout << "";
101         }
102         cout << endl;
103     }    
104 }
matrix.hpp
 1 #include <iostream>
 2 #include "matrix.hpp"
 3 
 4 void test() {
 5     using namespace std;
 6 
 7     double x[] = {1, 2, 3, 4, 5, 6};
 8 
 9     Matrix m1(3, 2);    // 创建一个3×2的矩阵
10     m1.set(x);          // 用一维数组x的值按行为矩阵m1赋值
11     m1.print();         // 打印矩阵m1的值
12     cout << "the first line is: " << endl;
13     cout << m1.at(0, 0) << " " << m1.at(0, 1) << endl;  // 输出矩阵m1第1行两个元素的值
14     cout << endl;
15 
16     Matrix m2(2, 3);
17     m2.set(x);
18     m2.print();
19     cout << "the first line is: " << endl;
20     cout << m2.at(0, 0) << " " << m2.at(0, 1) << " " << m2.at(0, 2) << endl;
21     cout << endl;
22 
23     Matrix m3(m2);      // 用矩阵m2构造新的矩阵m3
24     m3.set(0, 0, 999);  // 将矩阵m3第0行第0列元素值设为999
25     m3.print();
26 }
27 
28 int main() {
29     test();
30 }
task6.cpp

运行结果截图:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_411565.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式光伏站远程监控组网解决方案

一、项目背景随着规模性的光伏电站陆续建设和投入运行&#xff0c;如何实时了解电站的运行状况&#xff0c;如何满足上一级系统或电网调度系统的监控需求成为了急需解决的事情。为使对分布式能源实现高效监控、满足电力接入电网要求、合理调配、集中监控、电网分析、配网自动化…

前端特效、js代码优化

1.旋转按钮边框 效果&#xff1a; 代码&#xff1a; <div class"container"><button class"btn">旋转边框</button></div>*{margin: 0;padding: 0;}.container{background: #000;height: 100vh;overflow: hidden;}.btn{/* borde…

35岁以后还能学软件测试吗?

之前看到一个问题“35岁学软件测试来得及吗”。 之前一直在工厂上班&#xff0c;看不到希望。 已经35岁了&#xff0c;想转学软件测试来得及吗&#xff1f; 经常会碰到类似这样的问题&#xff1a;担心自己学历不够&#xff0c;非计算机专业&#xff0c;害怕学不会&#xff0c;甚…

擎创技术流 | ClickHouse实用工具—ckman教程(1)部署安装

前言&#xff1a; 在数据量日益增长的当下&#xff0c;传统数据库的查询性能已满足不了业务需求。而Clickhouse在OLAP&#xff08;On-Line Analysis Processing——即一种在线分析处理的&#xff0c;用于数据分析的计算方法&#xff09;领域的应用&#xff0c;可以助力企业打造…

2022爱分析·虚拟化活动实践报告

报告编委 张扬 爱分析联合创始人&首席分析师 文鸿伟 爱分析高级分析师 **王鹏 ** 爱分析分析师 外部专家**&#xff08;按姓氏拼音排序&#xff09;** 梁瑛玮 保利威技术副总裁 于颢 tatameCEO 特别鸣谢&#xff08;按拼音排序&#xff09; 报告摘要 新冠疫…

Linux基础(yum,vim,gcc,gdb)

Linux基本的命令我们会敲了&#xff0c;基本的文件概念以及权限概念我们也都了解了&#xff0c;接下来该学一些好用的工具&#xff0c;用Linux完成一些工作了 目录 yum yum的作用 yum基本操作 vim vim的基本模式 命令模式 插入模式 底行模式 可视化模式 gcc gcc…

Drag-MoveMent

目录UGUI-OnDrag事件如何使用PointerEventDataposition屏幕空间->世界坐标/局部坐标空间(转换)参考文章UGUI-OnDrag事件 示例代码: using UnityEngine.EventSystems;public class TestOnDrag : MonoBehaviour, IDragHandler, IBeginDragHandler, IEndDragHandler {public v…

java计算机毕业设计基于安卓Android的教学考勤系统APP

项目介绍 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库…

二叉查找树、平衡二叉树、红黑二叉树简单概念

二叉查找树&#xff08;二叉排序树、二叉搜索树&#xff09;&#xff1a; 性质&#xff1a; 1.若其左子树非空&#xff0c;则左子树上所有节点的值都小于根节点的值&#xff1b; 2.若其右子树非空&#xff0c;则右子树上所有节点的值都大于根节点的值&#xff1b; 3.其…

Kubectl

目录 一、资源管理 1.kubernetes集群管理 2.kubectl 3.kubectl 的命令 (1)查看版本信息 (2)查看资源对象简写信息 (3)查看集群信息 (4)配置kubectl自动补全 (5)node节点查看日志 (6)K8s核心组件日志 二、基本信息查看 1.查看master节点状态 2.查看命令空间 3.查看…

系统学习SpringFrame:SpringBean的注入方式

本篇内容包括&#xff1a;Spring 容器简介&#xff08;什么是容器、容器如何工作&#xff09;、SpringBean 注入方式&#xff08;SpringBean 注入方式分类、Autowiring 自动绑定&#xff09;以及 获取 Spring Bean 的工具类&#xff01; 一、Spring 容器 1、什么是容器 Sprin…

企业电子文档管理系统哪个好?怎么选?

选择一款企业电子文档管理系统&#xff08;EDMS&#xff09;时应该关注什么&#xff1f; 这完全取决于你需要实现的控制、协作和灵活性水平。 然而&#xff0c;有两个关键的电子文档管理系统功能是你应该要关注的。 ● 简单配置的工作流程 你可以更轻松地进行协作&#xff…

算法6 排序算法 QuickSort 快速排序

Quick sort 快速排序快算排序 Quick Sort &#xff0c;可能是应用最为广泛的算法&#xff0c;被视为20世纪科学和工程领域的十大算法之一。其流行的原因是因为它实现简单&#xff0c;可适用于不同数据&#xff0c;并且在一般场景下比其他算法要更快。其优点是&#xff1a; 可借…

JSP声明:变量、方法和类的声明

在 JSP 页面中可以声明变量、方法和类&#xff0c;其声明格式如下&#xff1a; <%!声明变量、方法和类的代码&#xff05;>特别要注意&#xff0c;在“<%“与“!”之间不要有空格。声明的语法与在 Java 语言中声明变量和方法时的语法是一样的。 声明变量 在“<%!…

面试官视角总结的测开面试题(付答案)

背景 leader让胖虎当回面试官, 招一位合适的测开同学. 由于是第一次当面试官, 肯定要认真对待一下, 所以精心准备了一些面试题. 讲道理胖虎经历过很多次面试了, 不过都是以面试者的角度, 首次以面试官的身份来面试别人还是有点期待的! 制定评判标准 首先我列了个能力需求和…

python自带的idle以及pycharm使用

作者介绍&#xff1a; ♥️作者&#xff1a;小刘在C站 ♥️每天分享课堂笔记&#xff0c;一起努力&#xff0c;共赴美好生活&#xff01; ♥️夕阳下&#xff0c;是最美的绽放。 目录 一.python自带的idle 二.ipython ipython介绍 ipython安装步骤 ipython使用 三.pycharm…

Uniapp零基础开发学习笔记(11)-安装扩展组件uni-ui/uView及微信小程序开发环境

Uniapp零基础开发学习笔记(11)-安装扩展组件uni-ui/uView及微信小程序开发环境 1.安装扩展组件uni-ui uni-ui是uni-app团队开发的官方扩展组件&#xff0c;比基础组件的能力更强更好用。 介绍文档: https://uniapp.dcloud.net.cn/component/uniui/uni-ui.html 使用方法: 按照…

SCALA基础

若没有安装scala&#xff0c;则参考博客链接&#xff1a;http://t.csdn.cn/mF7tx 1、Scala的常用数据类型 注意&#xff1a;在Scala中&#xff0c;任何数据都是对象。例如&#xff1a;scala> 1 res0: Int 1scala> 1.toString res1: String 1scala> "1".t…

2024年浙江大学金融硕士专业报考分析

全国经济类联考专业之一的金融硕士&#xff0c;近年来成为不少考生报考的热点&#xff0c;特别是浙江大学金融硕士每年的报考竞争压力都非常大&#xff0c;今天专注于经管类联考的达立易考教育针对浙大金融硕士这个专业做简单报考分析&#xff0c;帮助2024年考生成功完成专业的…