首页 > 其他分享 >实验四

实验四

时间:2022-11-02 20:34:13浏览次数:41  
标签:const Matrix int lines cols 实验 vectorInt

vectorInt.hpp

#include<iostream>
#include <cassert>
using namespace std;
class vectorInt{
    public:
        vectorInt(int n);
        vectorInt(int n,int value);
        ~vectorInt();
        vectorInt(const vectorInt &obj);
        int &at(int index);
        int get_size();
        friend void output(vectorInt &T);
    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[size];int i=size;while(i--){p[i]=value;}};
vectorInt::~vectorInt() {cout<<"destructor called"<<endl;delete[] p;};
vectorInt::vectorInt(const vectorInt &obj) :size{obj.size}
{
    p=new int[size];
    int i=0;
    while(i<size)
    {
        p[i]=obj.p[i];
        i++;
    }
    cout<<"copy constructor called"<<endl; 
}
int &vectorInt::at(int index)
{
    assert(index >= 0 && index < size);
    return p[index];
} 
int vectorInt::get_size()
{
    return size;
} 
void output(vectorInt &T) 
{
    int i=0;
    while(i<T.get_size())
    {
        cout<<T.p[i]<<" ";
        i++;
    }
    cout<<endl;
}

task5

#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);                    
    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_cols() const;            
    void print() const;             

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

task6

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

void test() {
    using namespace std;

    double x[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
    Matrix m1(3, 4);    
    m1.set(x);         
    m1.print();         
    cout << "the first line is: " << endl;
    cout << m1.at(1, 0) << " " << m1.at(1, 1) <<" "<<m1.at(1,2) <<" "<<m1.at(1,3)<< endl;  
    cout << endl;

    Matrix m2(4, 3);
    m2.set(x);
    m2.print();
    cout << "the first line is: " << endl;
    cout << m2.at(0, 2) << " " << m2.at(1, 2) << " " << m2.at(2, 2) <<" "<<m2.at(3,2)<< endl;
    cout << endl;

    Matrix m3(m2);      
    m3.set(3, 2, 101); 
    m3.print();
}

int main() {
    test();
}

测试结果:

 

标签:const,Matrix,int,lines,cols,实验,vectorInt
From: https://www.cnblogs.com/oRIng/p/16851686.html

相关文章

  • 实验2:Open vSwitch虚拟交换机实践
    实验2:OpenvSwitch虚拟交换机实践一、实验目的能够对OpenvSwitch进行基本操作;能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;能够通过Mininet的Python......
  • 实验7
    (一)基本要求编写Python程序,调用OpenDaylight的北向接口实现以下功能利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight;下发指令删除s1上的流表数据importrequ......
  • 实验6:开源控制器实践——RYU
    一、实验目的1、能够独立部署RYU控制器;2、能够理解RYU控制器实现软件定义的集线器原理;3、能够理解RYU控制器实现软件定义的交换机原理。二、实验环境Ubuntu20.04Des......
  • 实验四:类与数组、指针
    实验任务五vectorInt.hpp#pragma#include<iostream>usingstd::cout;usingstd::endl;classvectorInt{public:vectorInt(intn);vectorInt......
  • 实验7:基于REST API的SDN北向应用实践
    实验7:基于RESTAPI的SDN北向应用实践一、实验目的能够编写程序调用OpenDaylightRESTAPI实现特定网络功能;能够编写程序调用RyuRESTAPI实现特定网络功能。二、实......
  • 实验7:基于REST API的SDN北向应用实践
    (一)基本要求1.编写Python程序,调用OpenDaylight的北向接口实现以下功能(1)利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight;生成拓扑:sudomn--topo=single,3--......
  • 实验7:基于REST API的SDN北向应用实践
    一.将所有本实验相关文件保存在目录/home/用户名/学号/lab7/中二.(一)只需要提交实现相应Python代码和执行结果截图,其余文字请勿赘述;(二)不做必须要求,有完成的同学请提交Pyth......
  • 实验4 类与数组、指针
    task5//vectorInt.hpp#pragmaonce#include<iostream>usingnamespacestd;classvectorInt{public:vectorInt(intlen):size{len}{cout......
  • 实验4 类与数组、指针
    实验任务1程序源码point.hpp#pragmaonce#include<iostream>usingstd::cout;usingstd::endl;classPoint{public:Point():x{0},y{0}{}Point(i......
  • 实验2:Open vSwitch虚拟交换机实践
    实验2:OpenvSwitch虚拟交换机实践一、实验目的能够对OpenvSwitch进行基本操作;能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;能够通过Mininet的Pytho......