實驗3 類和物件II
阿新 • • 發佈:2021-11-06
實驗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(); }