首页 > 其他分享 >实验四

实验四

时间:2022-11-05 11:13:54浏览次数:65  
标签:const Matrix int double lines cols 实验

实验四

vectorInt.hpp

#pragma once
#include<iostream>
using namespace std;
class vectorInt
{
private:
    int size;
    int* p;
public:
    vectorInt(int n) :size{ n } { 
        cout << "constructor1 called." << endl;
        p = new int[size]; 
    }
    vectorInt(int n, int value):size { n } {
        cout << "constructor2 called." << endl;
        p = new int[size];
        for (auto i = 0; i < size; i++)
            p[i] = value;
        cout << "one" << endl;
    }
    vectorInt(const vectorInt& obj):size {obj.size} {
        cout << "copy constructor called." << endl;
        p = new int[size];
        for (auto i = 0; i < size; i++)
            p[i] = obj.p[i];
    }
    ~vectorInt() {
        cout << "dynamic delete array..." << endl;
        delete[] p;
    }

    int& at(int index)
    {
        if (index >= 0 && index < size)
            return p[index];
    }
    int get_size()const
    {
        return size;
    }

    friend void output(vectorInt& obj1)
    {
        int i;
        for (i = 0; i < obj1.size; i++)
            cout << obj1.p[i] << " ";
        cout << endl;
    }
};

task 5

#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); //返回矩阵第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];
}
Matrix::Matrix(int n, int m) : lines{ n }, cols{ m } {
	p = new double[n * m];
}
Matrix::Matrix(const Matrix& obj) : lines{ obj.lines }, cols{ obj.cols } {
	p = new double[lines * cols];
	for (auto i = 0; i < lines; i++)
		for (auto j = 0; j < cols; j++)
			p[i * cols + j] = obj.p[i * cols + j];
}
Matrix::~Matrix() {
	delete []p;
}

void Matrix::set(const double* pvalue)
{
	for (auto i = 0; i < lines; i++)
	{
		for (auto j = 0; j < cols; j++)
		{
			p[i * cols + j] = *pvalue;
			pvalue++;
		}
	}
}
void Matrix::set(int i, int j, int value) {
	if (i >= 0 && i < lines && j >= 0 && j < cols) {
		p[i * cols + j] = value;
	}
}
double& Matrix::at(int i, int j) {
	if (i >= 0 && i < lines && j >= 0 && j < cols) {
		return p[i * cols + j];
	}
}
double Matrix::at(int i, int j) const {
	if (i >= 0 && i < lines && j >= 0 && j < cols) {
		return p[i * cols + j];
	}
}
int Matrix::get_lines() const {
	return lines;
}
int Matrix::get_cols() const{
	return cols;
}
void Matrix::print() const {
	for (auto i = 0; i < lines; i++) {
		for (auto j = 0; j < cols; j++)
			cout << p[i * cols + j] << " ";
		cout << endl;
	}
}

task 6

#include <iostream>
#include "matrix.hpp"
void test() {
	using namespace std;
	double x[] = { 1, 2, 3, 4, 5, 6 ,7,8};
	Matrix m1(4, 2); // 创建一个4×2的矩阵
	m1.set(x); // 用一维数组x的值按行为矩阵m1赋值
	m1.print(); 
	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 << m2.at(0, 0) << " " << m2.at(0, 1) << " " << m2.at(0, 2) << " "<<m2.at(0,3)<<endl;
	cout << endl;
	Matrix m3(m2); // 用矩阵m2构造新的矩阵m3
	m3.set(0, 0, 999); // 将矩阵m3第0行第0列元素值设为999
	m3.print();
}
int main() {
	test();
}

数据修改后为:

标签:const,Matrix,int,double,lines,cols,实验
From: https://www.cnblogs.com/lkx1366070554/p/16859806.html

相关文章

  • 实验3 函数应用编辑
    task1.c#include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);voidprin......
  • Java swing 连连看小游戏 开发小系统 项目源代码 实训实验毕设
    Javaswing连连看小游戏开发小系统项目源代码实训实验能满足学习和二次开发可以作为初学者熟悉Java的学习,作为老师阶段性学习的一个成功检验不再是单调的理解老师空泛......
  • 实验四 类与数组、指针
    实验任务5#pragmaonce#include<iostream>#include<cassert>usingnamespacestd;classvectorInt{public:vectorInt(intn):size{n}{p=newint......
  • 实验二:实验逻辑回归算法
    【实验目的】理解逻辑回归算法原理,掌握逻辑回归算法框架;理解逻辑回归的sigmoid函数;理解逻辑回归的损失函数;针对特定应用场景及数据,能应用逻辑回归算法解决实际分类问题......
  • 实验7:基于REST API的SDN北向应用实践
    实验7:基于RESTAPI的SDN北向应用实践一、实验目的1.能够编写程序调用OpenDaylightRESTAPI实现特定网络功能;2.能够编写程序调用RyuRESTAPI实现特定网络功能。二、实......
  • 实验二:逻辑回归算法实验
    【实验目的】理解逻辑回归算法原理,掌握逻辑回归算法框架;理解逻辑回归的sigmoid函数;理解逻辑回归的损失函数;针对特定应用场景及数据,能应用逻辑回归算法解决实际分类问题。......
  • 实验3
    #include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);voidprint_spaces......
  • 实验四
    vectorInt.hpp#pragmaonce#include<cassert>#include<iostream>usingnamespacestd;classvectorInt{public:vectorInt(intn);vectorInt(intn,......
  • 实验6:开源控制器实践——RYU
    1.搭建下图所示SDN拓扑,协议使用OpenFlow1.0,并连接Ryu控制器,通过Ryu的图形界面查看网络拓扑。建立拓扑连接ryu图形界面2.阅读Ryu文档的TheFirstApplication一节,运......
  • 实验7:基于REST API的SDN北向应用实践
    编写Python程序,调用OpenDaylight的北向接口实现以下功能利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight;sudomn--topo=single,3--controller=remote,ip=12......