实验4

任务五

#include <iostream>
#include "vectorInt.hpp"
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();
}
.cpp
#include <iostream>
using namespace std;
class vectorInt{
public:
    vectorInt(int a);
    vectorInt(int a,int b);
    vectorInt(vectorInt& S);
    ~vectorInt();
    int &at(int i);
    int g_s();
    friend void output(vectorInt &S);
private:
    int *p;    
    int size;
};
vectorInt::vectorInt(int a):size{a}
{
    p=new int[a];
    for(auto i=0:a)
    {
        p[i]=0;
    }
    cout<<"constructor 1 called."<<endl;
}

vectorInt::vectorInt( vectorInt& S)
{
    this->p=new int[S.size];
    this->size=S.size;
    for(int i=0;i<size;++i)
    {
        this->p[i]=S.at(i);
    }
cout<<"copy constructor called."<<endl;
}

vectorInt::vectorInt(int a,int b):size{a}
{
        p=new int[a];

    for(int i=0;i<size;++i)
    {
        p[i]=b;
    }
    cout<<"constructor 2 called."<<endl;
}

vectorInt::~vectorInt()
{
    delete [] p;
    cout<<"destructor called."<<endl;
}

int &vectorInt::at(int i)
{
    return p[i];
}
int vectorInt::g_s()
{
    return size;
}

void output(vectorInt &S)
{
    for(int i=0;i<S.g_s();++i)
    {
    cout<<S.at(i)<<", ";
    }
    cout<<"\b\b \a";
}
.hpp

任务六:

 

 

#include <iostream>
#include "matrix.hpp"
void test(){
    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();

}
int main(){
    test();
}
.cpp
#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)const;
        int get_lines()const;
        int get_cols()const;
        void print()const;
    private:
        int lines;
        int cols;
        double* p;
};
int Matrix::get_lines()const
{
    return lines;
}
int Matrix::get_cols()const
{
    return cols;
}

Matrix::Matrix(int n,int m):lines{n},cols{m}
{
    p=new double[n*m];
}

Matrix::Matrix(int n):lines{n},cols{n}
{
    p=new double[n*n];
}

Matrix::Matrix(const Matrix& X)
{
    this->lines=X.get_lines();
    this->cols=X.get_cols();
    this->p=X.p;
}
void Matrix::set(int i,int j,int value)
{
    int k=i*cols+j;
    p[k]=value;
}
void Matrix::set(const double*pvalue)
{
    int k=0;
    for(k=0;k<lines*cols;k++)
    {
    p[k]=pvalue[k];
    }
}
void Matrix:: print()const
{
    for(int i=0;i<lines;++i)
    {
        for(int j=0;j<cols;++j)
        {
            if(j==cols-1)
            {
                cout<<p[i*cols+j]<<endl;
            }
            else
            {
                cout<<p[i*cols+j]<<", ";
            }
        }
    }
}
double &Matrix::at(int i,int j)const
{
        return p[i*cols+j];
}

Matrix::~Matrix()
{
    delete [] p;
}
.hpp

 

posted @ 2022-11-08 21:38  旅、程  阅读(16)  评论(0)    收藏  举报