实验任务五
vectorInt.hpp
#pragma once #include<iostream> #include<cassert> using namespace std; class vectorInt { public: vectorInt(int n); vectorInt(int n, int v); vectorInt(vectorInt& vp); ~vectorInt(); int& at(int i); int get_size() { return size; } private: int size; int* k; friend void output(vectorInt& x); }; vectorInt::vectorInt(int n) :size{ n } { cout << "constructor 1 called.\n"; k = new int[size]; } vectorInt::~vectorInt() { cout << "destructor called.\n"; delete[]k; } int &vectorInt::at(int i) { assert(i >= 0 && i < size); return p[i]; } vectorInt::vectorInt(int n, int v): size { n }{ cout << "constructor 2 called.\n"; k = new int[size]; for (auto i = 0; i < size; i++) k[i] = v; } vectorInt::vectorInt(vectorInt& vp) :size{ vp.size } { cout << "copy constructor called,\n"; k = new int[size]; for (auto i = 0; i < size; i++) k[i] = vp.k[i]; } void output(vectorInt& x) { for (auto i = 0; i < x.size; i++) cout << x.k[i] << ", "; cout << "\b\b \n"; }
task5.cpp
#include <iostream> #include"vectorInt.hpp" using namespace std; void test() { 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(); }
task6
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.hpp" void test(){ using namespace std; double x[]={1,2,3,4,5,6,7,8,9,10}; 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)<<" "<<m2.at(0,3)<<endl; cout<<endl; Matrix m3(m2); m3.set(1,2,666); m3.print(); } int main(){ test(); }
标签:const,Matrix,int,double,实验,vectorInt,include From: https://www.cnblogs.com/yzhag/p/16855854.html