首页 > 其他分享 >实验四 类与数组、指针

实验四 类与数组、指针

时间:2022-11-08 21:03:20浏览次数:32  
标签:size cout int cols 实验 数组 vectorInt 指针 Matrix

实验五:

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

vectorInt.cpp

#include<iostream>
using namespace std;
class vectorInt{
public:
vectorInt(int size):size{size}
{
cout<<"Constructor 1 called"<<endl;
ptr=new int[size];
}
vectorInt(int size,int value):size{size},value{value}
{
cout<<"Constructor 2 called"<<endl;
ptr=new int[size];
for(int i=0;i<size;i++)
{
ptr[i]=value;
}
}
vectorInt(const vectorInt&v)
{
cout<<"copy Constructor called"<<endl;
size=v.size;
ptr=new int[size];
for(int i=0;i<size;i++)
{
ptr[i]=v.ptr[i];
}
}
~vectorInt()
{
cout<<"Deleting..."<<endl;
delete[]ptr;
}
int &at(int index)
{

return ptr[index];
}
int get_size()
{
return size;
}
friend void output(vectorInt&v);
private:
int size,value;
int *ptr;
};


void output(vectorInt &v)
{
for(int i=0;i<v.get_size();i++)
cout<<v.at(i)<<" ";
cout<<endl;
}

 

 实验六:

task6.cpp

 

#include <iostream>
#include "Matrix.hpp"
void test() {
using namespace std;
double x[] = {1, 2, 3, 4, 5, 6};
Matrix m1(3, 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, 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);
m3.set(0, 0, 999);
m3.print();
}
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[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*cols;i++)
p[i]=X.p[i];
}
Matrix::~Matrix()
{
delete []p;
}
void Matrix:: set(const double *pvalue)
{
for(int i=0;i<lines*cols;i++)
{
p[i]=pvalue[i];
}
}
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_cols() const
{
return cols;
}
void Matrix::print() const
{
for(int i=0;i<lines*cols;i++)
{
if((i+1)%cols==0)
{
cout<<p[i]<<",";
cout<<endl;
}
else
cout<<p[i]<<",";
}
}

 

标签:size,cout,int,cols,实验,数组,vectorInt,指针,Matrix
From: https://www.cnblogs.com/CYYyyds030711/p/16870595.html

相关文章

  • 实验一———个人项目:任务2
    一、回顾你过去将近三年的经历1、当初报考的时候,是真正喜欢计算机这个专业吗?我本人从初中开始就很喜欢计算机专业,一是我姐就是计算机专业的,二是我觉得敲代码真的很帅,以至......
  • 实验3
     #include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);//函数声明......
  • 数组
    数组介绍数组是一种容器,可以用来存储同种数据类型的多个值数组在存储数据的时候,需要结合隐式转换考虑数组的定义与初始化数组的定义格式一:int[] array格式二......
  • 数组翻转
    importjava.util.Scanner;publicclassEext{ publicstaticvoidmain(String[]args){ int[]array={1,2,3,4,5,6}; //把array[0]和array[5]进行交换{5,2,3,......
  • 实验4 类与数组、指针
    实验五vectorint.h#pragmaonce#include<iostream>usingnamespacestd;classvectorInt{public: ints,*p; vectorInt(intm) { p=newint[m]; s......
  • 实验3
    #include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_test(intline,intcol,chartest[]);voidprint_spaces(int......
  • 实验4 类与数组、指针
    Task1~4浅复制:inta=10;intb=a;可用于静态内存的复制。对于简单的类,默认的复制构造函数已经够用了,但当类持有其他资源,如动态分配的内存、指针等,就需要用到深复制......
  • 软件工程最大连续子数组和(最大子段和)
     题目一:最大连续子数组和(最大子段和)背景 问题:给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整......
  • 实验四
    实验任务五cpp#include<iostream>#include"vectorInt.hpp"voidtest(){usingnamespacestd;intn;cin>>n;vectorIntx1(n);for(aut......
  • 第一次实验题目
    1.题目:最大连续子数组和(最大子段和)问题:给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数......