首页 > 其他分享 >实验六

实验六

时间:2024-12-21 19:08:32浏览次数:3  
标签:cout int 实验 include out ptr size

task4
代码
Vector.hpp

点击查看代码
#pragma once
#include<iostream>
#include<stdexcept>
using namespace std;
template <typename T>
class Vector {
public:
        Vector(int size, int value = 0) :size{ size } {
        if (size < 0)throw length_error("negative size");
        else
        {
            ptr = new T[size];
            for (int i = 0; i < size; i++) {
                ptr[i] = value;
            }
        }
    }
        int get_size()const {
                return size;
            }
        T& at(int val) {
            if (val >= size)throw out_of_range("index out of range");
            else return ptr[val];

        }
        T& operator[](int val) {
            if (val<0 || val>=size)throw out_of_range("index out of range");
            else return ptr[val];
       }
        friend void output(const Vector<T> &x) {
            for (int i = 0; i < x.get_size(); i++) {
                cout << x.ptr[i] << ", ";
            }
            cout << endl;

        }
        Vector(const Vector<T>& x) :size(x.size), ptr(new T[size]) {
            for (int i = 0; i < size; i++) {
                ptr[i] = x.ptr[i];
            }
        }
private:
    int size;
    T* ptr;
};


task4.cpp
点击查看代码
#include <iostream>
#include "Vector.hpp"

void test1() {
    using namespace std;

    int n;
    cout << "Enter n: ";
    cin >> n;

    Vector<double> x1(n);
    for (auto i = 0; i < n; ++i)
        x1.at(i) = i * 0.7;

    cout << "x1: "; output(x1);

    Vector<int> x2(n, 42);
    const Vector<int> x3(x2);

    cout << "x2: "; output(x2);
    cout << "x3: "; output(x3);

    x2.at(0) = 77;
    x2.at(1) = 777;
    cout << "x2: "; output(x2);
    cout << "x3: "; output(x3);
}

void test2() {
    using namespace std;

    int n, index;
    while (cout << "Enter n and index: ", cin >> n >> index) {
        try {
            Vector<int> v(n, n);
            v.at(index) = -999;
            cout << "v: "; output(v);
        }
        catch (const exception& e) {
            cout << e.what() << endl;
        }
    }
}

int main() {
    cout << "测试1: 模板类接口测试\n";
    test1();

    cout << "\n测试2: 模板类异常处理测试\n";
    test2();
}

测试代码截图

task5
代码

点击查看代码
#include<iostream>
#include<iomanip>
#include<vector>
#include<algorithm>
#include<fstream>
#include<string>
using namespace std;
class st {
private:
    string num;
    string name;
    string mj;
    int grade;

public:
    st() = default;
    ~st() = default;
    int get_grade()const {
        return grade;
    }
    string get_mj()const {
        return mj;
    }

    friend ostream& operator<<(ostream& out, const st& s) {
        out << setiosflags(ios_base::left);
        out << setw(15) << s.num
            << setw(15) << s.name
            << setw(15) << s.mj
            << setw(15) << s.grade;
        return out;
    }
    friend istream& operator>>(istream& in, st& s) {
        in >> s.num >> s.name >> s.mj >> s.grade;
        return in;
    }



};
void output(ostream& out, const vector<st>& s) {
    for (auto& i : s)
        out << i << endl;
}

void load(const string& filename, vector<st>& s) {
    ifstream in(filename);
    if (!in.is_open()) {
        cout << "fail to open file to read\n";
        return;
    }
    string title_line;
    getline(in, title_line);
    st t;
    while (in  >> t)
        s.push_back(t);
    in.close();
}
void save(const string& filename, vector<st>& s) {
    ofstream out(filename);
    if (!out.is_open()) {
        cout << "fail to open file to write\n";
        return;
    }
    output(out, s);
    out.close();
}
bool compare(st& s1, st& s2) {
    if (s1.get_mj() <s2.get_mj()) return true;
    if (s1.get_mj() == s2.get_mj())return s1.get_grade() > s2.get_grade();
    return false;
}
int main() {
    vector<st>s;
    load("data5.txt", s);
    sort(s.begin(), s.end(), compare);
    output(cout, s);
    save("ans1.txt", s);


}
![](/i/l/?n=24&i=blog/3533340/202412/3533340-20241221190559182-1819477835.png) ![](/i/l/?n=24&i=blog/3533340/202412/3533340-20241221190605597-1142362411.png)

标签:cout,int,实验,include,out,ptr,size
From: https://www.cnblogs.com/cyuyan-xionger/p/18621054

相关文章

  • 实验6 模板类、文件I/O和异常处理
    任务一Complex.hpp#pragmaonce#include<iostream>#include<stdexcept>//声明//////////////////////////////////////////////////////复数模板类声明template<typenameT>classComplex{public:Complex(Tr=0,Ti=0);Complex(const......
  • 实验六
    task4源代码:#include<stdio.h>#defineN10typedefstruct{charisbn[20];//isbn号charname[80];//书名charauthor[80];//作者doublesales_price;//售价intsales_count;//销售册数}Book;......
  • 实验六 C++
    任务四:Vector.hpp:#pragmaonce#ifndefVECTOR_HPP#defineVECTOR_HPP#include<iostream>#include<stdexcept>//为异常类提供支持#include<memory>//为std::unique_ptr提供支持template<typenameT>classVector{private:std::uniqu......
  • 大型数据库应用技术:实验1 熟悉常用的Linux操作和Hadoop操作
    实验1熟悉常用的Linux操作和Hadoop操作1.实验目的Hadoop运行在Linux系统上,因此,需要学习实践一些常用的Linux命令。本实验旨在熟悉常用的Linux操作和Hadoop操作,为顺利开展后续其他实验奠定基础。2.实验平台(1)操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04);(2)Hadoop版本:3.1.3。3.......
  • 实验6
    任务一1#include<stdio.h>2#include<string.h>3#defineN34typedefstructstudent{5intid;6charname[20];7charsubject[20];8doubleperf;9doublemid;......
  • 实验6 模板类、文件I/O和异常处理
    实验任务41#ifndefVECTOR_HPP2#defineVECTOR_HPP34#include<iostream>5#include<stdexcept>67template<typenameT>8classVector{9private:10T*data;11size_tsize;1213public:14//构造函数,动态指定大小15......
  • 百度机器翻译SDK实验
    软件构造实验作业实验名称:班级:信2205-3    学号:20223753    姓名:邓睿智 实验一:百度机器翻译SDK实验一、实验要求实验一:百度机器翻译SDK实验(2024.11.15日完成)  任务一:下载配置百度翻译Java相关库及环境(占10%)。    任务二:了解百度翻译相关功能并进行总结......
  • JFinal极速开发框架实验
    实验三:JFinal极速开发框架实验一、实验要求实验三:JFinal极速开发框架实验 (2023.12.13日完成)根据参考资料,学习JFinal极速开发框架的使用并如下任务:任务一:了解Maven及其使用方法,总结其功能作用(占20%)任务二:学习JFinal框架,基于Maven建立JFinal工程,并对JFinal框架功能进行总结介......
  • 机器学习实验六:朴素贝叶斯算法实现与测试
    实验六:朴素贝叶斯算法实现与测试一、实验目的深入理解朴素贝叶斯的算法原理,能够使用Python语言实现朴素贝叶斯的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。  二、实验内容(1)从scikit-learn库中加载iris数据集,使用留出法留出1/3的样本作为测试集(注......
  • 机器学习实验七:K 均值聚类算法实现与测试
    实验七:K均值聚类算法实现与测试一、实验目的深入理解K均值聚类算法的算法原理,进而理解无监督学习的意义,能够使用Python语言实现K均值聚类算法的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。 二、实验内容(1)从scikit-learn库中加载iris数据集,使用留出法......