ICode9

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

实验3 类和对象II

2021-11-05 20:31:30  阅读:101  来源: 互联网

标签:const Matrix 对象 lines 矩阵 cols II int 实验


实验任务4

  • vector_int.hpp
 1 #ifndef VECTOR_INT_HPP
 2 #define VECTOR_INT_HPP
 3 #include <iostream>
 4 #include <cassert>
 5 using namespace std;
 6 class Vector_int
 7 {
 8     public:
 9         Vector_int(int n);
10         Vector_int(int n,int v);
11         Vector_int(const Vector_int &x);
12         ~Vector_int()
13         {
14             cout<<"deleting..."<<endl;
15             delete[] p;
16         };
17         int &at(int index);
18     private:
19         int size;
20         int value;
21         int index;
22         int *p;
23 };
24 Vector_int::Vector_int(int n):size(n)
25 {
26     cout<<"dynamic create array..."<<endl;
27     p=new int[n];
28     for(int x=0;x<size;x++)
29     {
30         p[x]=0;
31     }
32 }
33 Vector_int::Vector_int(int n,int v):size(n),value(v)
34 {
35     cout<<"dynamic create array with value..."<<endl;
36     p=new int[n];
37     for(int x=0;x<size;x++)
38     {
39         p[x]=value;
40     }
41 }
42 Vector_int::Vector_int(const Vector_int &x):size(x.size)
43 {
44     cout<<"deep-copy create array..."<<endl;
45     p=new int[size];
46     for(int i=0;i<size;i++)
47     {
48         p[i]=x.p[i];
49     }
50 }
51 int &Vector_int::at(int index)
52 {
53     assert(index>=0&&index<size);
54     return p[index];
55 }
56 #endif
  • task4.cpp
 1 #include <iostream>
 2 #include "vector_int.hpp"
 3 /* run this program using the console pauser or add your own getch, system("pause") or input loop */
 4 using namespace std;
 5 
 6 int main() {
 7     int n;
 8     cout<<"请输入n的值:"<<endl;
 9     cin>>n;
10     Vector_int x(n);
11     cout<<"x.at(0)="<<x.at(0)<<endl;
12     Vector_int z(n,6);
13     cout<<"z.at(0)="<<z.at(0)<<endl;
14     Vector_int y(x);
15     y.at(0)=999;
16     cout<<"y.at(0)="<<y.at(0)<<endl;
17 }
  • 运行测试结果:

 

实验任务5

  • matrix.hpp
 1 #ifndef MATRIX_H
 2 #define MATRIX_H
 3 
 4 #include <iostream>
 5 #include <cassert>
 6 
 7 class Matrix
 8 {
 9 public:
10     Matrix(int n);                     // 构造函数,构造一个n*n的矩阵
11     Matrix(int n, int m);              // 构造函数,构造一个n*m的矩阵
12     Matrix(const Matrix &X);           // 复制构造函数,使用已有的矩阵X构造
13     ~Matrix(){delete[] p;};                         //析构函数
14     void set(const double *pvalue);     // 用pvalue指向的连续内存块数据为矩阵赋值
15     void set(int i, int j, int value); //设置矩阵第i行第j列元素值为value
16     double &at(int i, int j);          //返回矩阵第i行第j列元素的引用
17     double at(int i, int j) const;     // 返回矩阵第i行第j列元素的值
18     int get_lines() const;             //返回矩阵行数
19     int get_cols() const;              //返回矩列数
20     void print() const;                // 按行打印输出矩阵
21 private:
22     int lines; // 矩阵行数
23     int cols;  // 矩阵列数
24     double *p; // 指向存放矩阵数据的内存块的首地址
25 };
26 
27 Matrix::Matrix(int n):lines(n),cols(n)
28 {
29     p=new double[lines*cols];
30 }
31 
32 Matrix::Matrix(int n,int m):lines(n),cols(m)
33 {
34     p=new double[lines*cols];
35 }
36 
37 Matrix::Matrix(const Matrix &X):lines(X.lines),cols(X.cols)
38 {
39     p=new double[lines*cols];
40     for (auto i=0;i<lines*cols;i++)
41     {
42         p[i]=X.p[i];
43     }
44 }
45 
46 void Matrix::set(const double *pvalue)
47 {
48     int x=0;
49     for (auto i=0;i<lines*cols;i++)
50     {
51         p[i]=pvalue[x++];    
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     using namespace std;
83     for(int i=0;i<lines*cols;i++)
84     {
85         cout<<p[i];
86         if((i+1)%cols==0&&i!=0)
87         {
88             cout<<endl;
89         }
90         else
91         {
92             cout<<",";
93         }
94     }
95 }
96 #endif
  • task5.cpp
 1 #include <iostream>
 2 #include "matrix.hpp"
 3 
 4 int main()
 5 {
 6     using namespace std;
 7 
 8     double x[] = {2,4,6,8,10,12};
 9 
10     Matrix m1(3, 2);    // 创建一个3×2的矩阵
11     m1.set(x);          // 用一维数组x的值按行为矩阵m1赋值
12     m1.print();         // 打印矩阵m1的值
13     cout << "the first line is: " << endl;
14     cout << m1.at(0, 0) << " " << m1.at(0, 1) << endl;
15     cout << endl;
16 
17     Matrix m2(2, 3);
18     m2.set(x);
19     m2.print();
20     cout << "the first line is: " << endl;
21     cout << m2.at(0, 0) << " " << m2.at(0, 1) << " " << m2.at(0, 2) << endl;
22     cout << endl;
23 
24     Matrix m3(m2);
25     m3.set(0, 0, 888);
26     m3.print();
27 }
  • 运行测试结果:

 

标签:const,Matrix,对象,lines,矩阵,cols,II,int,实验
来源: https://www.cnblogs.com/zhouruohong/p/15515104.html

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

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

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

ICode9版权所有