实验4
实验任务5:
vectorint:
#include<iostream>
using namespace std;
class vectorInt {
public:
vectorInt(int n) :size{ n } {
p = new int[n];
cout << "constructor 1 called" << endl;
}
vectorInt(int n, int num) :size{n} {
p = new int[n]; int* k;
k = p;
for (auto i = 0; i < size; i++) {
*k = num;
k++;
}
cout << "constructor 2 called" << endl;
}
vectorInt( vectorInt& vi) :size { vi.size } {
cout << "copy constructor called." << endl;
p = new int[size];
for (auto i = 0; i < size; ++i)
{
p[i] = vi.p[i];
}
}
~vectorInt(){cout<<"deconstructor called"<<endl;
}
int& at(int index) { return p[index]; }
int get_size() { return size; }
friend void output(vectorInt x) {
for (int i = 0; i < x.size; i++) {
if (i != x.size - 1) {
cout << x.at(i) << ",";
}
else { cout << x.at(i); }
}
cout << endl;
}
private:
int size;
int* p;
};
test:
#include <iostream>
#include "vectorInt.hpp"
void test() {
using namespace std;
int n;
cin >> n;
vectorInt x1(n);
for(auto i = 0; i < n; ++i)
x1.at(i) = i*i;
output(x1);
vectorInt x2(n, 42);
vectorInt x3(x2);
output(x2);
output(x3);
x2.at(0) = 77;
output(x2);
output(x3);
}
int main() {
test();
}
输入5
结果:

实验任务6:
Matrix:
#include<iostream>
using namespace std;
class Matrix {
public:
Matrix(int n, int m) :lines{ n }, cols{m} {
p = new double *[n];
for (int i = 0; i < n; i++) {
p[i] = new double[m];
}
};
Matrix(const Matrix& X) :lines{ X.lines }, cols{X.cols} {
int i, j;
p = new double* [X.lines];
for ( i = 0; i < X.lines; i++) {
p[i] = new double[X.cols];
}
for ( i = 0; i < X.lines; i++) {
for ( j = 0; j < X.cols; j++) {
p[i][j] = X.p[i][j];
}
}
}
~Matrix(){};
void set(const double* pvalue) {
int k = 0;
for (int i = 0; i < lines; i++) {
for (int j = 0; j < cols; j++) {
p[i][j] = pvalue[k];
k++;
}
}
};
void set(int i, int j, int value) {
p[i][j] = value;
}
double at(int i, int j) const
{
return p[i][j];
};
void print() const {
for (int i = 0; i < lines; i++) {
for (int j = 0; j < cols; j++) {
cout << p[i][j] << " ";
}
cout << endl;
}
};
private:
int lines;
int cols;
double ** p;
};
test:
#include <iostream>
#include "matrix.hpp"
void test() {
using namespace std;
double x[] = {2, 4, 6, 8, 10, 12};
Matrix m1(3, 2); // 创建一个3×2的矩阵
m1.set(x); // 用一维数组x的值按行为矩阵m1赋值
m1.print(); // 打印矩阵m1的值
cout << "the first line is: " << endl;
cout << m1.at(0, 0) << " " << m1.at(0, 1) << endl; // 输出矩阵m1第1行两个元素的值
cout << endl;
Matrix m2(2, 3);
m2.set(x);
m2.print();
cout << "the first line is: " << endl;
cout << m2.at(0, 0) << " " << m2.at(0, 1) << " " << m2.at(0, 2) << endl;
cout << endl;
Matrix m3(m2); // 用矩阵m2构造新的矩阵m3
m3.set(0, 0, 999); // 将矩阵m3第0行第0列元素值设为999
m3.print();
}
int main() {
test();
}
结果:


浙公网安备 33010602011771号