1. 程式人生 > 其它 >實驗3 類和物件II

實驗3 類和物件II

實驗4

vector_int.hpp

#pragma once
#include<iostream>
using namespace std;

class Vector_int
{
public:
	Vector_int(int _size, int _value = 0);
	Vector_int(const Vector_int& V);
	~Vector_int();
	int& at(int _i);
	void show();
private:
	int size;
	int* data;
};

Vector_int::Vector_int(int _size, int _value )
{
	size = _size;
	data = new int[size];
	for (int i = 0; i < size; i++) {
		data[i] = _value;
	}
	cout << "default constructor..."<<endl;
}
Vector_int::Vector_int(const Vector_int& V)
{
	size = V.size;
	data = V.data;
	data = new int[size];
	for (int i = 0; i < size; i++)
	{
		data[i] = V.data[i];
	}
	cout << "copy constructor..."<<endl;

}
int& Vector_int::at(int i)
{
	return data[i];
}
Vector_int::~Vector_int()
{
	delete[] data;
	cout << "distructor..."<<endl;

}
void Vector_int::show()
{
	for (int j = 0; j < size; j++)
	{
		cout << data[j] << ", ";
	}
	cout << "\b\b"  << endl;
}

  task4.cpp

include"vector_int.hpp"
int main()
{
	int n;
	std::cin >> n;
	Vector_int x1(n);
    x1.show();
	Vector_int x(n, 6);
	x. show();
	Vector_int y(x);
	y.show();
    y.at(0) = 999;
}

實驗5

Matrix.hpp

#pragma once
#include<iostream>

class Matrix
{
public:
	Matrix(int n);
	Matrix(int n, int m);
	Matrix(const Matrix& X);
	~Matrix() { delete[]p; }
	void set(const double* pvalue);
	void set(int i, int j, int value);
	double& at(int i, int j);
	double at (int i, int j)const;
	int get_lines()const;
	int get_cols()const;
	void print()const;
private:
	int lines;
	int cols;
	double* p;
};
Matrix::Matrix(int n) : Matrix(n,n)
{

}
Matrix::Matrix(int n, int m)
{
	lines = n;
	cols = m;
	p = new double[lines * cols];
	for (int i = 0; i < lines; i++)
	{
		for (int j = 0; j < cols; j++)
		{
			p[i * cols + j] = 0;
		}
	}
}
Matrix::Matrix(const Matrix& X)
{
	lines = X.lines;
	cols = X.cols;
	p = new double[lines *cols];
	for (int i = 0; i < lines; i++)
	{
		for (int j = 0; j < cols; j++)
		{
			p[i * cols + j] = X.p[i * cols + j];
		}
	}

}
void Matrix:: set(const double *pvalue)
{
	for (int i = 0; i <lines ; i++)
	{
		for (int j = 0; j < cols; j++)
		{
			p[i * cols+j] = pvalue[i * cols+j];
			//std::cout << i * j + j << "  ";
		}
	}
}
void Matrix::set(int i, int j, int value)
{
	p[i*cols+j] = value;
}
double& Matrix:: at(int i, int j)
{
	return p[i*cols+j];
}
double Matrix::at(int i, int j)const
{
	return p[i * cols+j];
}
int Matrix:: get_lines()const
{
	return lines;
}
int Matrix::get_cols()const
{
	return cols;
}
void Matrix::print()const
{
	for (int i = 0; i < lines; i++)
	{
		for (int j = 0; j < cols; ++j)
		{
			std::cout << p[i * cols+j] << ", ";
		}
		std::cout <<"\b\b  " << "\n";
	}
	
}

  task5.cpp

#include"Matrix.hpp"
int main()
{
	using namespace std;

	double x[] = { 1,2,3,4,5,6 };
	Matrix m1(3,2);
	m1.set(x);
	m1.print();
	cout << "the first line is: " << endl;
	cout << m1.at(0, 0) << " " << m1.at(0, 1) << endl;
	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);
	m3.set(0, 0, 999);
	m3.print();

}