实验三 类与对象2
实验4
Vector_int.hpp
#ifndef VECTOR_INT_HPP #define VECTOR_INT_HPP #include <iostream> using namespace std; class Vector_int{ public: Vector_int(int nn,int v=0); Vector_int(Vector_int &vec); int &at(int x); void print(); ~Vector_int(); private: int n,value; int *p; }; Vector_int::Vector_int(int nn,int v){ n=nn; value=v; p = new int[n]; for(int i=0;i<n;i++){ p[i] = value; } cout << "Create success!" << endl; } Vector_int::Vector_int(Vector_int &vec){ n=vec.n; value=vec.n; p = new int[n]; for(int i=0;i<n;i++){ p[i] = value; } cout << "Create success!" << endl; } int &Vector_int::at(int x){ return p[x]; } void Vector_int::print(){ for(int i=0;i<n;i++){ cout << p[i]; if(i!=n-1){ cout << ","; }else{ cout << endl; } } return; } Vector_int::~Vector_int(){ delete[] p; cout << "Delete success!" << endl; } #endif
task3.cpp
#include "Vector_int.hpp" #include <iostream> int main(){ using namespace std; Vector_int x1(5); x1.print(); Vector_int x2(5,8); x2.print(); Vector_int y(x2); y.print(); y.at(0) = 999; y.print(); return 0; }
运行结果截图

实验5
Matrix.hpp
#ifndef MATRIX_H #define MATRIX_H #include <iostream> using namespace std; class Matrix { public: Matrix(int n); // 构造函数,构造一个n*n的矩阵 Matrix(int n, int m); // 构造函数,构造一个n*m的矩阵 Matrix(const Matrix &X); // 复制构造函数,使用已有的矩阵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[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*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_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++) cout<<p[i*cols+j]<<' '; 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(); }
运行结果截图

浙公网安备 33010602011771号