ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

实验三

2021-11-02 22:32:37  阅读:111  来源: 互联网

标签:const Matrix int double lines cols 实验


实验任务四

vector_int.hpp

 1 #ifndef VECTOR_INT_HPP
 2 #define VECTOR_INT_HPP
 3 #include<iostream>
 4 #include<cassert>
 5 
 6 using namespace std;
 7 class Vector_int
 8 {
 9 public:
10     Vector_int(int n) : size{n}
11     {
12         cout << "constructor called." << endl;
13         p = new int[size]();
14         for(int i = 0; i < size; i++)
15             p[i] = 0;        
16     } 
17     
18     Vector_int(int n, int m) : size{n}
19     {
20         cout << "constructor called." << endl;
21         p = new int[size];//向系统申请n个int型数据项空间
22         for(int i = 0; i < size; i++)
23             p[i] = m;
24     } 
25     
26     Vector_int(const Vector_int &x) : size{x.size}
27     {
28         cout << "copy constructor called." << endl;
29         p = new int[size];
30         for(int i = 0; i < size; i++)
31         {
32             p[i] = x.p[i];
33         }
34     } 
35     
36     ~Vector_int()
37     {
38         cout << "deleting..." << endl;
39         delete[] p;
40     }
41     //设置数组元素值 
42     void reset_p()
43     {
44         int temp;
45         cout << "请输入数组元素: " << endl; 
46         for(int i = 0; i < size; i++)
47         {
48             cin >> temp;
49             p[i] = temp;
50         }
51     }
52  
53     void show_p()
54     {
55         cout << "数组元素: " << endl; 
56         for(int i = 0; i < size; i++)
57         {
58             cout << p[i] << " ";
59         }
60         cout << endl;
61     }
62     
63     // 通过at()方法访问对象中索引为index的数据项
64     int &at(int index)
65     {
66         assert(index >= 0 && index < size);
67         return p[index];
68     }
69 private:
70     int size;//数组大小 
71     int *p;
72 };
73 
74 #endif

task4.cpp

 1 #include<iostream>
 2 #include"vector_int.hpp"
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     int n, m, index; 
 9     cin >> n >> m;
10     Vector_int x(n);
11     x.show_p();
12     x.reset_p();
13     x.show_p();
14     x.at(0) = 999;
15     cout << "索引后"; 
16     x.show_p();
17      
18     Vector_int x2(n, m);
19     x2.show_p();
20     x2.reset_p();
21     x2.show_p();
22     x.at(0) = 999;
23     cout << "索引后";
24     x.show_p();
25     
26     Vector_int y(x2);
27     y.show_p();
28     x.at(0) = 999;
29     cout << "索引后";
30     x.show_p();
31     
32     return 0; 
33 }

 

 实验任务五

Matrix.hpp

 1 #ifndef MATRIX_H
 2 #define MATRIX_H
 3 #include <iostream>
 4 
 5 using namespace std;
 6 class Matrix
 7 {
 8 public:
 9     Matrix(int n); // 构造函数,构造一个n*n的矩阵
10     Matrix(int n, int m); // 构造函数,构造一个n*m的矩阵
11     Matrix(const Matrix &X); // 复制构造函数,使用已有的矩阵X构造
12     ~Matrix(); //析构函数
13     void set(const double *pvalue); // 用pvalue指向的连续内存块数据按行为矩阵赋值 
14     void set(int i, int j, int value); //设置矩阵第i行第j列元素值为value
15     double &at(int i, int j); //返回矩阵第i行第j列元素的引用
16     double at(int i, int j) const; // 返回矩阵第i行第j列元素的值
17     int get_lines() const; //返回矩阵行数
18     int get_cols() const; //返回矩列数
19     void print() const; // 按行打印输出矩阵
20 private:
21     int lines; // 矩阵行数
22     int cols; // 矩阵列数
23     double *p; // 指向存放矩阵数据的内存块的首地址
24 };
25 // 类Matrix的实现:
26 Matrix::Matrix(int n): lines{n}, cols{n} 
27 {
28     p = new double[n*n];
29 }
30 
31 Matrix::Matrix(int n, int m):lines{n}, cols{m} 
32 {
33     p = new double[n*m];
34 }
35 
36 Matrix::Matrix(const Matrix &X):lines{X.lines}, cols{X.cols}
37 {
38     p = new double[lines*cols];
39     for(int i = 0; i < lines*cols; i++)
40     {
41         p[i] = X.p[i];
42     }
43 }
44 
45 Matrix::~Matrix() {}
46 
47 void Matrix::set(const double *pvalue)
48 {
49     for(int i = 0; i < lines*cols; i++)
50     {
51         p[i] = pvalue[i];
52     }
53 }
54 
55 void Matrix::set(int i, int j, int value)
56 {
57     p[i * cols + j] = value;
58 }
59 
60 double &Matrix::at(int i, int j)
61 {
62     return p[i * cols + j];
63 }
64 
65 double Matrix::at(int i, int j) const
66 {
67     return p[i * cols + j];
68 }
69 
70 int Matrix::get_lines() const
71 {
72     return lines;
73 }
74 
75 int Matrix::get_cols() const
76 {
77     return cols;
78 }
79 
80 void Matrix::print() const
81 {
82     
83     for(int i = 0; i < lines; i++)
84     {
85         for(int j = 0; j < cols; j++)
86         {
87             cout << p[i * cols +j] << " ";
88         }
89         cout << endl;
90     }
91 }
92 #endif

task5.cpp

 1 #include <iostream>
 2 #include "matrix.hpp"
 3 int main()
 4 {
 5     using namespace std;
 6     double x[] = {3, 2, 1, 8, 9, 7};
 7     Matrix m1(3, 2); // 创建一个3×2的矩阵
 8     m1.set(x); // 用一维数组x的值按行为矩阵m1赋值
 9     m1.print(); // 打印矩阵m1的值
10     cout << "the first line is: " << endl;
11     cout << m1.at(0, 0) << " " << m1.at(0, 1) << endl; // 输出矩阵m1第1行两个元素的值
12     cout << endl;
13     Matrix m2(2, 3);
14     m2.set(x);
15     m2.print();
16     cout << "the first line is: " << endl;
17     cout << m2.at(0, 0) << " " << m2.at(0, 1) << " " << m2.at(0, 2) << endl;
18     cout << endl;
19     Matrix m3(m2); // 用矩阵m2构造新的矩阵m3
20     m3.set(0, 0, 10); // 将矩阵m3第0行第0列元素值设为10
21     m3.print();
22 }

 

标签:const,Matrix,int,double,lines,cols,实验
来源: https://www.cnblogs.com/ljle/p/15501545.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有