实验任务五

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();
}

 

原文地址:http://www.cnblogs.com/wanglaich/p/16852165.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性