实验三:类与对象二
实验4:
vector_int.hpp:
#include <iostream> #include <cassert> using namespace std; class vector_int{ public: vector_int(int x,int y=1):m(x),n(y){ p=new int[m]; for(int i=0;i<m;i++) { p[i]=n; } cout<<"consructor vector"<<endl; } ~vector_int(){ cout<<"destructor vector"<<endl; } vector_int (vector_int &t):m(t.m),n(t.n){ p=new int[m]; for(int i=0;i<n;i++) { p[i]=n; } cout<<"copy vector"<<endl; } void show(); int &at(int c){ return p[c]; } private: int m,n; int *p; }; void vector_int::show(){ for(int i=0;i<m;i++) { cout<<p[i]<<" "; } cout<<endl; }
task4.cpp:
#include <iostream> #include "vector_int.hpp" int main() { using namespace std; int n; cin>>n; vector_int x(n); x.show(); vector_int x1(n,6); x1.show(); vector_int y(x1); y.show(); y.at(0)=999; x1.show(); y.show(); }
实验结果:
实验五:
matrix.hpp:
#ifndef MATRIX_H #define MATRIX_H #include <iostream> using namespace std; class Matrix { public: Matrix(int n); Matrix(int n,int m); Matrix(const Matrix &x); ~Matrix(); 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):lines(n),cols(n){ p=new double[lines*cols]; } Matrix::Matrix(int n,int m):lines(n),cols(m){ p=new double[lines*cols]; } Matrix::Matrix(const Matrix &x):lines(x.lines),cols(x.cols){ p=new double[lines*cols]; for(int i=0;i<lines*cols;i++) { p[i]=x.p[i]; } } Matrix::~Matrix(){ delete []p; } void Matrix::set(const double *pvalue){ for(int i=0;i<lines*cols;i++) { p[i]=pvalue[i]; } } 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_cols()const{ return cols; } int Matrix::get_lines()const{ return lines; } void Matrix::print()const{ for(int i=0;i<lines;i++) { for(int m=0;m<cols;m++) { cout<<p[i*cols+m]<<","; } cout<<endl; } } #endif
task5.cpp:
#include <iostream> #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(); }
实验结果: