首页 > 其他分享 >实验四

实验四

时间:2022-11-09 12:23:58浏览次数:42  
标签:const Matrix int 实验 vectorInt include size

vectorInt.hpp

#pragma once #include<iostream> #include<cassert> using namespace std; class vectorInt { public: vectorInt(int n); vectorInt(int n, int value); vectorInt(const vectorInt& vi); ~vectorInt(); int& at(int index); int get_size(); friend void output(const vectorInt& vi); private: int size; int* p; }; vectorInt::vectorInt(int n) :size{ n } { cout << "constructor 1 called." << endl; p = new int[n]; } vectorInt::~vectorInt() { cout << "destructor called." << endl; delete p; } int &vectorInt::at(int index) { assert(index >= 0 && index < size); return p[index]; } vectorInt::vectorInt(const vectorInt& vi) :size{vi.size} { cout << "copy constructor called." << endl; p = new int[size]; for (auto i = 0; i < size; i++) p[i] = vi.p[i]; } vectorInt::vectorInt(int n, int value) :size{ n } { cout << "constructor 2 called." << endl; p = new int[n]; for (auto i = 0; i < n; i++) { p[i] = value; } } int vectorInt::get_size() { return size; } void output(const vectorInt& vi) { for (auto i = 0; i < vi.size; i++) cout << vi.p[i] << ", "; cout << "\b\b \n"; }

cpp:

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

 

 

 

 

六:

Matrix.hpp

#pragma once
#include<iostream>

using std::cout;
using std::endl;

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)const;// 返回矩阵第i行第j列元素的值
    int get_lines()const {return lines; }//返回矩阵行数
    int get_cols()const { return cols; }//返回矩列数
    void print() const;// 按行打印输出矩阵

private:
    int lines;
    int cols;
    double* p;
};
Matrix::Matrix(int n) :lines{ n }, cols{ n } {
    //cout << "constructor 1 called." << endl;
    p = new double[n * n];
}
Matrix::Matrix(int n, int m) :lines{ n }, cols{ m } {
    //cout << "constructor 2 called." << endl;
    p = new double[n * m];
}
Matrix::Matrix(const Matrix& x) :lines{ x.lines }, cols{x.cols} {
    //cout << "copy constructor called." << endl;
    p = new double[lines * cols];
    for (auto i = 0; i < lines * cols; i++) {
        p[i] = x.p[i];
    }    
}
Matrix::~Matrix() {
    //cout<< "destructor called." << endl;
    delete p;
}
void Matrix::set(const double* pvalue) {
    for (auto i = 0; i < lines * cols; i++) {
        p[i] = pvalue[i];
    }
}
void Matrix::print()const {
    int k = 0;
    for (auto j = 0; j < lines; j++) {
        for (auto i = 0; i < cols; i++) {
            cout << p[k++] << ", ";
        }
        cout << "\b\b \n";
    }
}
void Matrix::set(int i, int j, int value) {
    p[i*cols+j] = value;
}
double Matrix::at(int i, int j)const{
    return p[i*cols+j];
}

cpp:

#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();
    cout << endl;
    
}
int main()
{
    test();
}

 

标签:const,Matrix,int,实验,vectorInt,include,size
From: https://www.cnblogs.com/dailu666666/p/16873204.html

相关文章

  • 实验1/任务2
    请阅读北航陈彦吉同学的这篇博客中的各参考资料,并回答如下问题:(1)回顾你过去将近3年的学习经历问:当初你报考的时候,是真正喜欢软件工程这个专业吗?答:当初报考的时候并不......
  • 实验四
    #include<iostream>#include<vector>#include<string>usingnamespacestd;classvectorInt{public:vectorInt();vectorInt(intn);......
  • 2022年11月6日第一次实验
    2.1任务1实验过程2.1.1创建博客先前已经注册了博客园账号,因此我直接开始了申请博客,且审批得到了通过。 图2.1开通博客截图 图2.2申请博客成功截图成功开通博客园......
  • 软件工程实验一
    1.2.2阅读材料并思考请阅读北航陈彦吉同学的这篇博客中的各参考资料,并回答如下问题:(1)回顾你过去将近3年的学习经历当初你报考的时候,是真正喜欢计算机这个专业吗?答:当......
  • 实验四
    #pragmaonce#include<iostream>usingnamespacestd;classvectorInt{public:vectorInt(intn);vectorInt(intn,intvalue);vectorInt(constvect......
  • 实验4
    task5:#include<iostream>#include<cassert>#include<stdlib.h>#definevalue1usingnamespacestd;classvectorint{public:vectorint(inta)......
  • 实验四
    实验任务5:vectorInt.hpp#pragmaonce#include<bits/stdc++.h>usingnamespacestd;classvectorInt{public:vectorInt(intn);vectorInt(intn,intv......
  • 实验四
    实验任务5.cppvoidtest(){usingnamespacestd;intn;cin>>n;vectorIntx1(n);for(autoi=0;i<n;i++)x1.at(i)=i*......
  • 实验三
    任务1#include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);voidpri......
  • 实验四 类与数组、指针
    任务五代码:vectorInt:#pragmaonce#include<iostream>#include<cassert>usingnamespacestd;classVectorInt{public:VectorInt(ints);......