首页 > 其他分享 >实验四

实验四

时间:2022-11-03 21:11:17浏览次数:31  
标签:const Matrix int double 实验 vectorInt include

实验任务五

vectorInt.hpp

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

task5.cpp

#include <iostream>
#include"vectorInt.hpp"
using namespace std;
void test() {
    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();
}

  

 

 

task6

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.hpp"
void test(){
    using namespace std;
    double x[]={1,2,3,4,5,6,7,8,9,10};
    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)<<" "<<m2.at(0,3)<<endl;
    cout<<endl;
    
    Matrix m3(m2);
    m3.set(1,2,666);
    m3.print();
} 
int main(){
    test();
}

  

 

标签:const,Matrix,int,double,实验,vectorInt,include
From: https://www.cnblogs.com/yzhag/p/16855854.html

相关文章

  • 实验3
    task_11#include<stdio.h>2#include<stdlib.h>3#include<time.h>4#include<windows.h>5#defineN806voidprint_text(intline,intcol,charte......
  • 实验三
    #include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);//函数声明void......
  • 实验6:开源控制器实践——RYU
    一、实验要求(一)基本要求1.搭建下图所示SDN拓扑,协议使用OpenFlow1.0,并连接Ryu控制器,通过Ryu的图形界面查看网络拓扑。查看网络拓扑2.阅读Ryu文档的TheFirstApplic......
  • 实验七:基于REST API的SDN北向应用实践
    一、实验目的1.能够编写程序调用OpenDaylightRESTAPI实现特定网络功能;2.能够编写程序调用RyuRESTAPI实现特定网络功能。二、实验环境1.下载虚拟机软件OracleVisua......
  • 使用Wireshark完成实验3-IP
    1、使用Wireshark打开ip-ethereal-trace-1,如图 电脑IP地址为192.168.1.1022、如图,IP包头中上层协议字段的值为1,代表为ICMP 3、如图,IP头中有20字节  IP数据......
  • 实验7:基于REST API的SDN北向应用实践
    实验目的能够编写程序调用OpenDaylightRESTAPI实现特定网络功能;能够编写程序调用RyuRESTAPI实现特定网络功能。实验要求(一)基本要求编写Python程序,调用OpenDayligh......
  • 实验3
    task1#include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);//函数声明......
  • 实验四 类与数组,指针
    实验任务5:task5.hpp#pragmaonce#include<iostream>#defineMAXSIZE10000usingnamespacestd;classvectorInt{public: //构造函数与析构函数 vectorInt(in......
  • 逻辑回归算法实验
    实验二:逻辑回归算法实验| 20大数据三班 ||作业链接||学号|201613326|【实验目的】理解逻辑回归算法原理,掌握逻辑回归算法框架;理解逻辑回归的sigmoid函数;理解......
  • 实验4 类与数组
    实验任务51#pragmaonce23#include<iostream>4#include<cassert>5usingstd::cout;6usingstd::endl;78classvectorInt9{10private:11......