首页 > 其他分享 >实验4

实验4

时间:2022-11-02 17:24:03浏览次数:37  
标签:Matrix int double lines cols ++ 实验

实验任务5:

vectorint:

 

#include<iostream>
using namespace std;

class vectorInt {
public:
	
		
	vectorInt(int n) :size{ n } {
		p = new int[n];
		cout << "constructor 1 called" << endl;
	}
	
	vectorInt(int n, int num) :size{n} {
		p = new int[n]; int* k;
		k = p;
		for (auto i = 0; i < size; i++) {
			*k = num;
			k++;

	}
		cout << "constructor 2 called" << endl;
	
	}
	
	vectorInt( 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(){cout<<"deconstructor called"<<endl;
	} 

	int& at(int index) { return p[index]; }
	int get_size() { return size; }
	friend void output(vectorInt x) {
		for (int i = 0; i < x.size; i++) {
			if (i != x.size - 1) {
				cout << x.at(i) << ",";
			}
			else { cout << x.at(i); }
		}
		cout << endl;
	}
private:
	int size;
	int* p;
};

  test:

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

  输入5

结果:

 

实验任务6:

Matrix:

#include<iostream>
using namespace std;
class Matrix {
public:
	
	Matrix(int n, int m) :lines{ n }, cols{m} {
		p = new double *[n];
		for (int i = 0; i < n; i++) {
			p[i] = new double[m];

		}
	
	};
	
	Matrix(const Matrix& X) :lines{ X.lines }, cols{X.cols} {
		int i, j;
		p = new double* [X.lines];
		for ( i = 0; i < X.lines; i++) {
			p[i] = new double[X.cols];

		}
		
		for ( i = 0; i < X.lines; i++) {
			for ( j = 0; j < X.cols; j++) {
				p[i][j] = X.p[i][j];
			}

		}



   }
	    ~Matrix(){};
	void set(const double* pvalue) {
		int k = 0;
		for (int i = 0; i < lines; i++) {
			for (int j = 0; j < cols; j++) {
				p[i][j] = pvalue[k];
				k++;
			}

		}

	};

	void set(int i, int j, int value) {
		p[i][j] = value;

	}

	
	double at(int i, int j) const
	{
		return p[i][j];
	};
	
	void print() const {
		for (int i = 0; i < lines; i++) {
			for (int j = 0; j < cols; j++) {
				cout << p[i][j] << " ";
				
			}
			cout << endl;
		}


	};



private:
	int lines; 
	int cols; 
	double ** p; 
};

  test:

#include <iostream>
#include "matrix.hpp"
void test() {
using namespace std;
double x[] = {2, 4, 6, 8, 10, 12};
   Matrix m1(3, 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, 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); // 用矩阵m2构造新的矩阵m3
m3.set(0, 0, 999); // 将矩阵m3第0行第0列元素值设为999
m3.print();
}



int main() {
test();
}

  结果:

 

标签:Matrix,int,double,lines,cols,++,实验
From: https://www.cnblogs.com/lovelexington/p/16851375.html

相关文章

  • 实验4 类与数组、指针
    实验目的会正确定义和使用简单的类模板能够说明指针、引用的联系和区别,能根据问题场景灵活、正确使用指针作为函数参数、引用作为函数参数知道什么是深复制、浅复制,能......
  • 实验二:逻辑回归算法实验
    |博客班级|https://edu.cnblogs.com/campus/czu/classof2020BigDataClass3-MachineLearning||作业要求|https://edu.cnblogs.com/campus/czu/classof2020BigDataClass3-Ma......
  • 实验2 C语言控制语句应用编程
    实验任务一:task1.c1#include<stdio.h>2#include<time.h>3#include<windows.h>4#include<stdlib.h>5#defineN306voidprint_spaces(int);7voi......
  • 实验四
    task5代码hpp#pragmaonce#include<iostream>#include<cassert>usingnamespacestd;classvectorInt{private:intn,x;//n为数组长度,x为默认初始值i......
  • 实验二:逻辑回归算法实验
    实验二:逻辑回归算法实验|博客班级|https://edu.cnblogs.com/campus/czu/classof2020BigDataClass3-MachineLearning||----|----|----||作业要求|https://edu.cnblogs.co......
  • 记录一次实验室linux系统的GPU服务器死机排查过程——某显卡满负荷导致内核进程超时导
    在自己没有管理多台高负荷的ubuntu显卡服务器之前,我是万万想不到linux服务器居然也是如此容易死机的。什么每个版本的TensorFlow调用显卡驱动时和内核不兼容,什么系统自动......
  • 实验6:开源控制器实践——RYU
    一、实验目的能够独立部署RYU控制器;能够理解RYU控制器实现软件定义的集线器原理;能够理解RYU控制器实现软件定义的交换机原理。二、实验环境Ubuntu20.04Desktopam......
  • 实验2:Open vSwitch虚拟交换机实践
    一、实验目的能够对OpenvSwitch进行基本操作;能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;能够通过Mininet的Python代码运行OVS命令,控制网络拓扑中的......
  • 实验1:SDN拓扑实践
    一、实验目的能够使用源码安装Mininet;能够使用Mininet的可视化工具生成拓扑;能够使用Mininet的命令行生成特定拓扑;能够使用Mininet交互界面管理SDN拓扑;能够使用Python......
  • 实验四
    task5#pragmaonce#define_CRT_SECURE_NO_WARNINGS1#include<stdlib.h>#include<iostream>#include<iomanip>usingstd::cout;usingstd::endl;usingstd::set......