首页 > 其他分享 >实验四

实验四

时间:2022-11-06 16:15:28浏览次数:54  
标签:Matrix m1 int 实验 output vectorInt include

任务五:

vectorInt.hpp

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

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

运行结果:

 

 任务六:

martix.hpp

#pragma once

#include <iostream>

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

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);          
    ~Matrix() {
        delete[] p;
    }                        
    void set(const double* pvalue) {
        for (auto i = 0;i < lines;i++)
            for(auto j=0;j<cols;j++)
            p[i*cols+j] = *pvalue++;
    }     
    void set(int i, int j, int value) {
            p[i*cols + j] = value;
    }
    double& at(int i, int j) {
        return p[i*cols  + j];
    }        
    double at(int i, int j) const 
    {
        return p[cols*i  + j];
    }   
    int get_lines() const {
        return lines;
    }           
    int get_cols() const {
        return cols;
    }             
    void print() const {
        for (auto i = 0;i < lines;i++)
        {
            for (auto j = 0;j < cols;j++)
                cout << p[i * cols + j] << ",";
            cout << "\b\b\n";
        }
    }
private:
    int lines; 
    int cols;  
    double* p; 
};
Matrix::Matrix(const Matrix& X) :lines{ X.lines }, cols{ X.cols } {
    p = new double[lines * cols];
    for (auto i = 0;i < lines;i++)
        for (auto j = 0;j < cols;j++)
            p[i*cols+j] = X.p[i*cols+j];
}

task.cpp

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

void test() {
    using namespace std;

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

    Matrix m1(4, 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;  // 输出矩阵m1第1行两个元素的值
    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);      // 用矩阵m2构造新的矩阵m3
    m3.set(1, 3, 9);  // 将矩阵m3第0行第0列元素值设为999
    m3.print();
}

int main() {
    test();
}

结果:

 

标签:Matrix,m1,int,实验,output,vectorInt,include
From: https://www.cnblogs.com/shmily-cwh/p/16862840.html

相关文章

  • 实验一
    最大连续子数组和(最大子段和)问题:给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时定义......
  • 软件工程第一次实验
    (1)回顾你过去将近3年的学习经历当初你报考的时候,是真正喜欢计算机这个专业吗?是的。计算机专业用电脑进行软件开发,比较有意思。你现在后悔选择了这个专业吗?没有,虽然软......
  • 实验7:基于REST API的SDN北向应用实践
    1.编写Python程序,调用OpenDaylight的北向接口实现以下功能(1)利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight;启动OpendDaylight:./distribution-karaf-0.6.4-Car......
  • 实验一 任务一
    (1)回顾你过去将近3年的学习经历当初你报考的时候,是真正喜欢软件工程这个专业吗?你现在后悔选择了这个专业吗?你认为你现在最喜欢的领域是什么(可以是计算机的也可以是其......
  • 实验一郭蕊
    (1)回顾你过去将近3年的学习经历当初你报考的时候,是真正喜欢软件工程这个专业吗?是的。你现在后悔选择了这个专业吗?不后悔。你认为你现在最喜欢的领域是什么(可以是计......
  • 实验三
    实验1.1随机打印hi,november#include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,char......
  • 实验四
    #include<iostream>usingnamespacestd;classvectorInt{private:intn;intvalue;int*arr;public:vectorInt(intn......
  • 逻辑回归算法实验
    【实验目的】理解逻辑回归算法原理,掌握逻辑回归算法框架;理解逻辑回归的sigmoid函数;理解逻辑回归的损失函数;针对特定应用场景及数据,能应用逻辑回归算法解决实际分类问题。......
  • 实验一——个人项目:任务二
    回首三年的学习生活,如今我也顺利的进入到了本科的学习生活。在专科期间我当初选择的专业就是软件技术专业,起因是在最开始的时候我在初中之后并没有考入普通高中,而是考......
  • 实验四 类与数组、指针
    实验任务五代码截图:  vectorInt.hpp:1#pragmaonce23#include<iostream>4#include<cassert>5usingnamespacestd;67classvectorInt8{9p......