首页 > 其他分享 >实验四

实验四

时间:2022-11-09 00:24:10浏览次数:37  
标签:const Matrix int double lines cols 实验

实验任务5

.cpp

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

.hpp

#pragma once
#include<cassert>
#include<iostream>
using namespace std;

class vectorInt
{
public:
    vectorInt(int n);
    vectorInt(int n, int value);
    vectorInt(const vectorInt& v);
    ~vectorInt();
    int& at(int index) const;
    int get_size() const;
    friend void output(const vectorInt& v);

private:
    int* q;
    int size;
};

vectorInt::vectorInt(int n) :size{ n }
{
    q = new int[size];
    cout << "constructor 1 called." << endl;
}
vectorInt::vectorInt(int n, int value) : size{ n }
{
    q = new int[size];
    for (auto i = 0; i < size; i++)
        q[i] = value;
    cout << "constructor 2 called." << endl;
}
vectorInt::vectorInt(const vectorInt& v)
{
    size = v.size;
    q = new int[size];
    for (auto i = 0; i < size; i++)
        q[i] = v.p[i];
    cout << "copy constructor called." << endl;
}
vectorInt::~vectorInt()
{
    free(q);
    cout << "destructor called." << endl;
}
int& vectorInt::at(int index) const
{
    return q[index];
}
int vectorInt::get_size() const
{
    return size;
}
void output(const vectorInt& v)
{
    for (auto i = 0; i < v.size; i++)
        cout << v.q[i] << ",";
    cout << "\b " << endl;
}

实验任务6

.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, 99);  
    m3.print();
}

int main() {
    test();
}

.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, double 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){
    p = new double [n * n];
    lines = cols = n;
}

Matrix::Matrix(int n, int m){
    p = new double[n * m];
    lines = n;
    cols = m;
}

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

Matrix::~Matrix(){
    delete[] p;
    p = nullptr;
    lines = cols = 0;
}

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

void Matrix::set(int i, int j, double 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++){
            cout << p[i * cols + j] << " ,";
        }
        cout << endl;
    }
}

 

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

相关文章

  • 实验三
    任务1#include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);voidpri......
  • 实验四 类与数组、指针
    任务五代码:vectorInt:#pragmaonce#include<iostream>#include<cassert>usingnamespacestd;classVectorInt{public:VectorInt(ints);......
  • 实验四
    1cpp#include<iostream>#include"point.hpp"#include<vector>usingnamespacestd;voidtest1(){intn;cin>>n;vector<Point>x(n);x.......
  • 实验四
    task5vectorint.hpp#pragmaonce#include<iostream>#include<cassert>usingnamespacestd;classvectorint{public:vectorint(){};vectorint(intn......
  • 2022.11.8(软件工程y实验一)
    1)回顾你过去将近3年的学习经历当初你报考的时候,是真正喜欢计算机这个专业吗?你现在后悔选择了这个专业吗?你认为你现在最喜欢的领域是什么(可以是计算机的也可以是其它领......
  • 实验四
    task5:vectorInt.hpp:#pragmaonce#include<bits/stdc++.h>#include<iomanip>usingnamespacestd;classvectorInt{public:vectorInt(intnum):si......
  • 实验3
    task1#include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);voidprint_spac......
  • 实验四
    task5hpp #pragmaonce#include<iostream>usingnamespacestd;classvectorInt{public:vectorInt(intn);vectorInt(intn,intvalue);vector......
  • 实验3
    1.#include<stdio.h>longfun(longs);intmain(){longs,t;printf("enteranumber:");while(scanf_s("%ld",&s)!=EOF){t=fun(s);printf("n......
  • 实验环境安装配置
    ......