首页 > 其他分享 >实验4 类与数组

实验4 类与数组

时间:2022-11-03 19:34:50浏览次数:50  
标签:const Matrix int double cols 实验 数组 vectorInt

实验任务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

运行结果截图:

 

标签:const,Matrix,int,double,cols,实验,数组,vectorInt
From: https://www.cnblogs.com/gkd-gkd/p/16855581.html

相关文章

  • 实验3
    任务一#include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);//函数声明......
  • 实验四
    实验任务五    vectorInt.hpp#pragmaonce#include<bits/stdc++.h>usingnamespacestd;classvectorInt{public:vectorInt(intn);vectorIn......
  • 冒泡排序以及数组名相关内容
    voidbubble_sort(intarr[],intsz)//冒泡排序{inti=0;//确定冒泡排序的次数for(i=0;i<sz-1;i++){intflag=1;//假设这一趟要排序的数据已经全部......
  • 实验四 类与数组,指针
    一、实验结论:1.实验任务5:vectorint.hpp:#include<iostream>#include<iomanip>usingnamespacestd;classvectorint{public:vectorint(intn):size{n}......
  • 畜牧虚拟仿真3D交互展示应用为学生提供高逼真、安全的场景模拟实验环境-深圳华锐视点
    大力发展高等职业教育是我国实现经济快速可持续发展的必然选择,在强国发展占有举足轻重的作用。华锐视点立足于先进成熟的5G、VRAR、物联网、三维建模和AI等技术,以解决......
  • C#中的二维数组及交叉数组
    在C语言中我们早就知道二维数组是如何声明定义的inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};  而在C#中二维数组却是这样声明定义的int[,]a={{1,2,3},{2,3,4......
  • 实验四
    实验任务五:vectorInt.hpp:1#include<iostream>2#include<cassert>3usingnamespacestd;4classvectorInt{5public:6vectorInt(intn);7......
  • React 函数组件
    React函数组件1、定义方式React函数组件是指使用函数方法定义的组件。定义方式:与函数的定义方式相同,需要将内容return出来,需要注意的是最外层只有一个标签或者使用......
  • 实验四
    实验4.5#pragmaonce#include<iostream>usingnamespacestd;classvectorInt{friendvoidoutput(vectorInt&v);public:vectorInt(intn);vectorIn......
  • Python第十章实验报告
    一、实验题目Python第十章实例和实战作业二、实验目的和要求1.熟悉Pycharm的运行环境2.学习并掌握Python文件及目录操作三、主要仪器设备联想小新air15硬件:AMDR75......