实验任务五
vectorInt.hpp
#pragma #include<iostream> using std::cout; using std::endl; class vectorInt{ public: vectorInt(int n); vectorInt(int n,int value); vectorInt(vectorInt &x); int &at(int index); ~vectorInt(); int get_size() const; friend void output(vectorInt &x); private: int size; int *p; }; vectorInt::vectorInt(int n):size{n}{ cout<<"constructor 1 called"<<endl; p=new int[n]; } vectorInt::vectorInt(int n,int value):size{n}{ cout<<"constructor 2 called"<<endl; p=new int[n]; for(int i=0;i<n;i++){ p[i]=value; } } vectorInt::vectorInt(vectorInt &x):size{x.size}{ cout<<"copy constructor called"<<endl; p=new int[size]; for(int i=0;i<size;i++){ p[i]=x.p[i]; } } int &vectorInt::at(int index){ return p[index]; } vectorInt::~vectorInt(){ cout<<"destructor called"<<endl; delete[] p; } int vectorInt::get_size() const{ cout<<size<<endl; } void output(vectorInt &x){ for(auto i=0;i<x.size;i++) cout<<x.p[i]<<","; cout<<"\b\b\n"; }
task5.cpp
#include<iostream> #include"vectorInt.h" 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(); }
实验任务六
matrix.hpp
#pragma once #include<iostream> using std::cout; using std::endl; 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_colos() const; void print() const; private: int lines; int cols; double *p; }; Matrix::Matrix(int n):lines{n},cols{n}{ p=new double[n*n]; } Matrix::Matrix(int n,int m):lines{n},cols{m}{ p=new double[n*m]; } 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++); } } } 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_colos() const{ return cols; } void Matrix::print() const{ for(int i=0;i<lines;i++){ for(int j=0;j<cols;j++){ cout<<p[i*cols+j]<<" "; } cout<<endl; } } Matrix::~Matrix(){ delete[] p; }
task6,cpp
#include<iostream> #include"matrix.h" void test(){ using namespace std; double x[]={1,2,3,4,5,6,7,8}; Matrix m1(4,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,4); 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(1,1,1314); m3.print(); } int main(){ test(); }
标签:const,Matrix,int,double,lines,实验,数组,vectorInt,指针 From: https://www.cnblogs.com/wanglaich/p/16852165.html