• 实验3 类和对象Ⅱ


    实验任务4

    vector_int.hpp
    #ifndef VECTOR_INT_HPP
    #define VECTOR_INT_HPP
    
    #include<iostream>
    using namespace std;
    
    class Vector_int{
        public:
            Vector_int(int n0,int value0=0):n(n0),value(value0){
                cout << "constructor called." << endl;
                p=new int[n0];
                for(auto i=0; i<n; ++i)
                    p[i] = value0;
            }
            Vector_int(const Vector_int &x);
            ~Vector_int();
            int &at(int i);
        private:
            int n;
            int value;
            int *p;
                
    }; 
    Vector_int::Vector_int(const Vector_int &x):n(x.n){
        p=new int[n];
        for(auto i=0; i<n; ++i)
            p[i] = x.p[i];
    }
    Vector_int::~Vector_int(){
        cout << "Destructor called." << endl;
        delete[] p;
    }
    int &Vector_int::at(int i){
        if(i>=0&&i<n)
          return p[i];
    }
    #endif
    task4.cpp
    #include"vector_int.hpp"
    #include<iostream>
    
    using namespace std;
    int main(){
        int n;
        cin>>n;
        Vector_int y(n,8);
        cout<<y.at(0)<<endl;
        cout<<y.at(1)<<endl;
        Vector_int x1(n);
        
        x1.at(0)=22;
        cout<<x1.at(0)<<endl;
        
        Vector_int x2(x1);
        x1.at(0)=11; 
        
        cout<<x1.at(0)<<endl;
        cout<<x2.at(0)<<endl;
        return 0;
        
    }

     实验任务5

    matrix.hpp

    #ifndef MATRIX_H
    #define MATRIX_H
    
    #include <iostream>
    #include <cassert>
    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);     // 用pvalue指向的连续内存块数据为矩阵赋值
        void set(int i, int j, int value); //设置矩阵第i行第j列元素值为value
        double &at(int i, int j);          //返回矩阵第i行第j列元素的引用
        double at(int i, int j) const;     // 返回矩阵第i行第j列元素的值
        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(auto i=0;i<lines*cols;i++)
             p[i]=X.p[i]; 
    }
    Matrix::~Matrix(){
        delete[] p;
    } 
    void Matrix::set(const double *pvalue){
        for(auto i=0;i<lines*cols;i++)
            p[i]=pvalue[i];
    }
    void Matrix::set(int i,int j,int value){
        p[lines*i+j]=value;
    }
    double &Matrix::at(int i,int j){
        return p[lines*i+j];
    } 
    double Matrix::at(int i,int j)const{
        return p[lines*i+j];
    }
    int Matrix::get_lines()const{
        return lines;
    }
    int Matrix::get_cols()const{
        return cols;
    }
    void Matrix::print()const{
        int k=0;
        for(auto i=0;i<lines;i++){
            for(auto j=0;j<cols;j++){
                 if(j<cols-1)cout<<p[k++]<<",";
                 else
                   cout<<p[k++];
             }
             cout<<endl;
        }          
    }
    #endif

    task.cpp

    #include <iostream>
    #include "matrix.hpp"
    
    int main()
    {
        using namespace std;
    
        double x[] = {6.6, 5, 7, 12, 9, 3.3};
    
        Matrix m1(3, 2);    // 创建一个3×2的矩阵
        m1.set(x);          // 用一维数组x的值按行为矩阵m1赋值
        m1.print();         // 打印矩阵m1的值
        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,25);
        m3.print();
    }

     

     
     
     
  • 相关阅读:
    OBS推流工具
    Spring学习笔记(二)
    设计模式
    力扣刷题 二分法 leetcode 刷题 27,26,283,844,977
    论文笔记 Processing Private Queries over Untrusted Data Cloud through Privacy Homomorphism 通过隐私同态处理不可信数据云上的私有查询
    今日链表操作leetcode 24 交换链表中的相邻两个结点
    leetcode刷题 leetcode22中等题 有效括号生成
    npm镜像 yarn镜像 homebrew镜像 各种镜像
    mac m1 pro 搭建php环境
    华为弹性ecs(centOS7)环境构建笔记
  • 原文地址:https://www.cnblogs.com/qiansen/p/15512947.html
Copyright © 2020-2023  润新知