首页 > 其他分享 >实验六 模板类、文件I/O和异常处理

实验六 模板类、文件I/O和异常处理

时间:2023-12-16 23:44:07浏览次数:26  
标签:std 文件 index int Vector 实验 ptr 模板 size

实验任务4

Vector.hpp:

 1 #pragma once
 2 
 3 #include<iostream>
 4 #include<stdexcept>
 5 
 6 using namespace std;
 7 
 8 template<typename T>
 9 class Vector
10 {
11 private:
12     int size;
13     T* ptr;
14 public:
15 
16     Vector(int n):size{n}
17     {
18         if (n < 0)
19             throw std::length_error("vector constructor:negative size");
20        
21         ptr = new T[size];
22     }
23     Vector(int n, T value):size{n}
24     {
25         if (n < 0)
26             throw std::length_error("vector constructor:negative size");
27         
28         ptr = new T[size];
29         for (auto i = 0; i < size; ++i)
30         {
31             ptr[i] = value;
32         }
33 
34     }
35     Vector(const Vector<T>& vi):size{vi.size},ptr{new T[size]}
36     {
37         for (auto i = 0; i < size; i++)
38         {
39             ptr[i] = vi.ptr[i];
40         }
41     }
42     ~Vector()
43     {
44         delete[] ptr;
45     }
46     int get_size() const { return size; }
47     T& at(int index)
48     {
49         if (index < 0 || index >= size)
50             throw std::out_of_range("Vector::at()");
51 
52         return ptr[index];
53     }
54     T& at(int index) const
55     {
56         if (index < 0 || index >= size)
57             throw std::out_of_range("Vector::at()");
58 
59         return ptr[index];
60     }
61     T& operator[](int index)
62     {
63         return ptr[index];
64     }
65     friend void output(Vector<T>& v)
66     {
67         for (auto i = 0; i < v.get_size(); i++)
68             cout << v.at(i) << ",";
69         cout << "\b\b\n";
70     }
71 };
View Code

task4.cpp:

 1 #include <iostream>
 2 #include "Vector.hpp"
 3 
 4 void test() {
 5     using namespace std;
 6 
 7     int n;
 8     cin >> n;
 9     
10     Vector<double> x1(n);
11     for(auto i = 0; i < n; ++i)
12         x1.at(i) = i * 0.7;
13 
14     output(x1);
15 
16     Vector<int> x2(n, 42);
17     Vector<int> x3(x2);
18 
19     output(x2);
20     output(x3);
21 
22     x2.at(0) = 77;
23     output(x2);
24 
25     x3[0] = 999;
26     output(x3);
27 }
28 
29 int main() {
30     test();
31 }
View Code

运行测试截图:

实验任务5

task5.cpp:

 1 #include <iostream>
 2 #include <fstream>
 3 #include <iomanip>
 4 
 5 using namespace std;
 6 
 7 void output(std::ostream& out) 
 8 {
 9     for (int i = 0; i <26; i++){
10         if (i == 0) {
11             out << ' ' << setw(2) << ' ';
12         }
13         else {
14             out << setw(2) << i << ' ';
15         }
16         for (int m = 0; m <26; m++) {
17             if (i == 0) {
18                 char n = 'a' + (i + m) % 26;
19                 out << n << ' ';
20             }
21             else {
22                 char n = 'A' + (i + m) % 26;
23                 out << n << ' ';
24             }
25         }
26         out << endl;
27     }
28 }
29 
30 int main() 
31 {
32     cout << "屏幕上打印出:\n" << endl;
33     output(cout);
34 
35     ofstream outfile("cipher_key.txt");
36         if (outfile.is_open()){
37             output(outfile);
38             outfile.close();
39         }
40         else {
41             cout << "无法打开文件 cipher_key.txt" << endl;
42         }
43 }
View Code

运行测试截图:

 

标签:std,文件,index,int,Vector,实验,ptr,模板,size
From: https://www.cnblogs.com/xiaochengli/p/17908605.html

相关文章

  • 文件上传
    文件上传流程:客户端将文件数据发送给服务器服务器保存上传的文件数据到服务器端服务器响应给客户端一个文件访问地址测试地址:http://xxx/api/upload键的名称(表单域名称):imagefile请求方法:POST请求的表单格式:multipart/form-data请求体中必须包含一个键值对,键的名称是......
  • 实验三-电子公文传输系统-个人贡献
    (一)简述你完成的工作我的工作主要是项目整体结构的搭建设计,和公文系统功能的实现一mvc模式和服务实现逻辑链设计在设计初期,我们确定好了分工和系统编写的基调。我认为电子公文系统中,可以采用MVC模式进行设计,得到了其他组员的支持,我们的分工也基本根据这个方式而来。其中我主要......
  • 实验6 模板类、文件I/O和异常处理
    任务4#include<iostream>#include<stdexcept>#include<stdlib.h>template<typenameT>classVector{public:friendvoidoutput(constVector<T1>&v);Vector<T>()=default;Vector<T......
  • 实验七
    #define_CRT_SECURE_NO_WARNINGS#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<time.h>#defineN100typedefstruct{longnumber;charname[N];charclass[N];}student;intmain(){FILE*f......
  • 实验七
    task4code1#include<stdio.h>23intmain(){4FILE*fp;5longcnt=0,c=0;6charch;78fp=fopen("data4.txt","r");9if(fp==NULL){10printf("failedtoopen");1......
  • 第四章:mapper映射文件存放位置、springboot支持事务
    一、mapper映射文件存放位置二、springboot支持事务......
  • 二、SpringBoot的配置文件
    1、核心配置文件properties2、核心配置文件yml3、两种核心配置文件同时存在4、设置maven私服仓库5、多环境下核心配置文件6、多环境下核心配置文件yml7、获取自定义配置8、将自定义配置映射到对象......
  • 一、Spring Boot的概述及pom文件和代码实现
    一、概述和四大特性二、学习创建springboot项目三、项目目录结构和pom文件内容四、springboot继承springmvc-查看springboot父工程pom五、代码的实现......
  • 实验三-电子公文传输系统1-个人贡献
    实验三-电子公文传输系统1-个人贡献1简述你完成的工作与组内成员相互配合协作,高效率完成任务参与组内文档的撰写工作负责了前端设计与数据库的建立2你们小组总共的代码行数,你贡献的代码行数?相关代码链接?总共代码行数为55352行,其中大部分是gitee上的代码,我们组总共贡献......
  • Java jxl操作excel模板
    jxl操作excel模板创建工作簿FileexcelFile=newFile("fileName.xls");WritableWorkbookwtwb=Workbook.createWorkbook(excelFile);//创建工作簿创建工作表WritableSheetsheet=wtwb.createSheet(title,0);//创建sheet表设置默认列宽sheet.getSettings().s......