Java教程

实验三

本文主要是介绍实验三,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

实验任务四

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 }

 

这篇关于实验三的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!