实验3 类和对象II
实验4
vector_int.hpp
#pragma once
#include<iostream>
using namespace std;
class Vector_int
{
public:
Vector_int(int _size, int _value = 0);
Vector_int(const Vector_int& V);
~Vector_int();
int& at(int _i);
void show();
private:
int size;
int* data;
};
Vector_int::Vector_int(int _size, int _value )
{
size = _size;
data = new int[size];
for (int i = 0; i < size; i++) {
data[i] = _value;
}
cout << "default constructor..."<<endl;
}
Vector_int::Vector_int(const Vector_int& V)
{
size = V.size;
data = V.data;
data = new int[size];
for (int i = 0; i < size; i++)
{
data[i] = V.data[i];
}
cout << "copy constructor..."<<endl;
}
int& Vector_int::at(int i)
{
return data[i];
}
Vector_int::~Vector_int()
{
delete[] data;
cout << "distructor..."<<endl;
}
void Vector_int::show()
{
for (int j = 0; j < size; j++)
{
cout << data[j] << ", ";
}
cout << "\b\b" << endl;
}
task4.cpp
include"vector_int.hpp"
int main()
{
int n;
std::cin >> n;
Vector_int x1(n);
x1.show();
Vector_int x(n, 6);
x. show();
Vector_int y(x);
y.show();
y.at(0) = 999;
}

实验5
Matrix.hpp
#pragma once
#include<iostream>
class Matrix
{
public:
Matrix(int n);
Matrix(int n, int m);
Matrix(const Matrix& X);
~Matrix() { delete[]p; }
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) : Matrix(n,n)
{
}
Matrix::Matrix(int n, int m)
{
lines = n;
cols = m;
p = new double[lines * cols];
for (int i = 0; i < lines; i++)
{
for (int j = 0; j < cols; j++)
{
p[i * cols + j] = 0;
}
}
}
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[i * cols+j];
//std::cout << i * j + 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];
}
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; i++)
{
for (int j = 0; j < cols; ++j)
{
std::cout << p[i * cols+j] << ", ";
}
std::cout <<"\b\b " << "\n";
}
}
task5.cpp
#include"Matrix.hpp"
int main()
{
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();
}

浙公网安备 33010602011771号