实验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();
}

  结果:

 

posted @ 2022-11-02 17:10  VV才不是小学生  阅读(48)  评论(0)    收藏  举报