实验3 类和对象

实验任务4

"vector_int.hpp"

#ifndef VECTOR_INT_H
#define VECTOR_INT_H

#include<iostream>
#include<cassert>

using namespace std;
class vector_int{
    public:
    vector_int(int n,int m=0):size(n),value(m){
        cout<<"constructor is called."<<endl;
        p=new int[n];
        for(auto i=0;i<size;i++)
        p[i]=value;
    }
    vector_int(const vector_int &x):size(x.size){
        p= new int[size];
        for(auto i=0;i<size;i++)
        p[i]=x.p[i];
    }
    int &at(int i){
        assert(i>=0 && i<size);
        return p[i];
    }
    ~vector_int(){
        cout<<"deleting..."<<endl;
        delete []p;
    }
    void show(){
        for(auto i=0;i<size;i++)
        cout<<p[i]<<", ";
    cout<<"\b\b \n";
    }

    private:
    int size,value;
    int *p;
};

#endif

task4.cpp

#include"vector_int.hpp"
#include<iostream>

int main(){
    using namespace std;

    int n;
    cin>>n;

    vector_int x(n,13);
    x.show();

    vector_int y(x);
    y.show();

    y.at(0)=601;
    y.show();
}

运行结果:

 

 实验任务5

"Matrix.hpp"

#ifndef MATRIX_H
#define MATRIX_H

#include<iostream>
using namespace std;

class Matrix{
    public:
    Matrix(int n):lines(n),cols(n){
        p=new double[n*n];
    }
    Matrix(int n,int m):lines(n),cols(m){
        p=new double[n*m];
    }
    Matrix(const Matrix &x):lines(x.lines),cols(x.cols){
        p=new double[lines*cols];
        for(auto i=0;i<lines*cols;i++)
        p[i]=x.p[i];
    }
    ~Matrix(){
        delete []p;
    }
    void set(const double *pvalue){
        for(auto i=0;i<lines*cols;i++)
        p[i]=pvalue[i];
    }
    void set(int i,int j,int value){
        int k;
        k=i*cols+j;
        p[k]=value;
    }
    double &at(int i,int j){
        int k;
        k=i*cols+j;
        return p[k];
    };
    double at(int i,int j) const{
        int k;
        k=i*cols+j;
        return p[k];
    };
    int get_lines() const{return lines;}
    int get_cols() const{return cols;}
    void print() const{
        for(auto i=0,j=0;i<lines*cols;i++,j++){
            cout<<p[i]<<", ";
            if((j+1)%cols==0)
            cout<<"\b\b \n";
        }
    };
    private:
    int lines;
    int cols;
    double *p;
};

#endif

task5.cpp

#include "Matrix.hpp"
#include <iostream>

int main(){

    using namespace std;

    double x[]={1,2,3,4,5,6,7,8,9,10};

    Matrix m1(2,5);
    m1.set(x);
    m1.print();
    cout<<"the first line is: "<<endl;
    for(int i=0;i<5;i++)
    cout<<m1.at(0,i)<<" ";
    cout<<endl;
    cout<<endl;

    Matrix m2(5,2);
    m2.set(x);
    m2.print();
    cout<<"the first line is: "<<endl;
    cout<<m2.at(0,0)<<" "<<m2.at(0,1)<<endl;
    cout<<endl;

    Matrix m3(m2);
    m3.set(4,1,13);
    m3.print();
}

运行结果:

 

posted @ 2021-11-07 20:36  Rougesss  阅读(44)  评论(2)    收藏  举报