首页 > 编程语言 >实验4 现代C++标准库与类模板

实验4 现代C++标准库与类模板

时间:2023-11-30 20:36:11浏览次数:30  
标签:const string int text C++ 实验 include TextCoder 模板

实验任务5

task5.cpp

#include"Textcoder.hpp"
#include<iostream>
#include<string>
void test()
{
	using namespace std;
	string text, encoded_text, decoded_text;
	cout << "输入英文文本: ";
	while (getline(cin, text))
	{
		encoded_text= TextCoder(text).get_ciphertext();
		cout << "加密后英文文本:\t" << encoded_text << endl;
		decoded_text = TextCoder(encoded_text).get_deciphertxet();
		cout << "解密后英文文本:\t" << decoded_text << endl; 
		cout << "\n输入英文文本: ";
	}
}
int main()
{
	test();
}

TextCoder.cpp

#include"TextCoder.hpp"
#include <ctype.h>
using namespace std;
TextCoder::TextCoder(const std::string& input_text) : text(input_text){}
void TextCoder::encoder()
{
	for (char& c : text)
	{
		if (isalpha(c))
		{
			if (islower(c))
			{
				c = 'a'+(c - 'a' + 7) % 26;

			}
			else {
				c = 'A'+(c - 'A' + 7) % 26;
			}
		}
	}
}
void TextCoder::decoder() {
	for (char& c : text) {
		if (isalpha(c)) 
		{
			if (islower(c)) {
				c = 'a' + (c - 'a' - 7 + 26) % 26;
			}
			else {
				c = 'A' + (c - 'A' - 7 + 26) % 26 ;
			}
		}
	}
}
string TextCoder::get_ciphertext() {
	encoder();
	return text;
}
string TextCoder::get_deciphertxet(){
	decoder();
	return text;
}

TextCoder.hpp

#ifndef TEXTCODER_HPP
#define TEXTCODER_HPP
#include <string>
using namespace std;
class TextCoder
{
private:
	string text;
	void encoder();
	void decoder();
public:
	TextCoder(const string& input_text);
	string get_ciphertext();
	string get_deciphertxet();
};
#endif

运行结果

实验任务6

info.hpp

#pragma once

#include <iostream>
#include <string>

using namespace std;

class Info {
private:
    string nickname;
    string contact;
    string city;
    int n;
public:
    Info(const string& nickname, const string& contact, const string& city, const int& n) : nickname{ nickname }, contact{ contact }, city{ city }, n{ n }
    {};
    void print() const
    {
        cout << "昵称:\t\t" << nickname << endl;
        cout << "联系方式:\t" << contact << endl;
        cout << "所在城市:\t" << city << endl;
        cout << "预定人数:\t" << n << endl;
    }
};

 

task6.cpp

#include <vector>
#include "info.hpp"

using namespace std;

int main() {
    const int capacity = 100;

    int current_number = 0;
    string nickname, contact, city;
    int n;

    vector<Info> audience_info_list;
    vector<Info>& v = audience_info_list;

    cout << "录入信息:\n";
    cout << "昵称\t\t";
    cout << "联系方式(邮箱/手机号)\t\t";
    cout << "所在城市\t";
    cout << "预定人数" << endl;
    
    while (1)
    {
       cin >> nickname >> contact >> city >> n;
        if (current_number + n <= capacity)
        {
            Info in(nickname, contact, city, n);
            v.push_back(in);
            current_number += n;
        }
        else
        {
            cout << "对不起,只剩" << capacity - current_number << "个位置.\n";
            cout << "1.输入u,更新(updata)预定信息" << endl;
            cout << "2.输入q,退出预定" << endl;
            cout << "你的选择:";

            char c;
            cin >> c;
            if (c == 'q') break;
            else if (c == 'u') continue;
            else break;
        }
        if (current_number == capacity) break;
    }
    cout << endl;

    cout << "截至目前,一共有" << current_number<< "位听众预定参加.";
    if (current_number!= 0)
    {
        cout << "预定听众信息如下:" << endl;
        for (auto i = 0; i < v.size(); i++)
        {
            v[i].print();
            cout << endl;
        }
    }
}

运行结果

标签:const,string,int,text,C++,实验,include,TextCoder,模板
From: https://www.cnblogs.com/moliqi1/p/17862397.html

相关文章

  • 实验四
    实验任务5实验代码:textcoder.hpp#pragmaonce#include<iostream>#include<vector>#include<array>#include<string>usingnamespacestd;classTextCoder{private:stringtext;voidencoder(){for(autoi=......
  • 实验4 现代C++标准库与类模板
    四、实验内容1.实验任务1//在C++中定义和使用类模板task1_1.cpp#include<iostream>usingnamespacestd;//类A的定义classA{public:A(intx0,inty0):x{x0},y{y0}{}voidshow()const{cout<<x<<","<<y<<endl;}p......
  • 实验4 现代C++标准库与类模板
    实验任务1task1task1_1.cpp#include<iostream>usingstd::cout;usingstd::endl;classA{public:A(intx0,inty0):x{x0},y{y0}{}voidshow()const{cout<<x<<","<<y<<endl;}private:in......
  • 第三方实验室LIMS管理系统源码
    LIMS实验室信息管理系统源码LIMS系统的功能根据实验室的规模和任务而有所不同,其系统主要功能包括:系统维护、基础数据编码管理,样品管理、数据管理、报告管理、报表打印、实验材料管理、设备管理等。它可以取代传统的手工管理模式而给检测实验室带来巨大的变化,提高检测实验室的整体......
  • SSL——ASA防火墙——Cisco实验(详解)
    SSLVPN一、理论部分定义:SSLVPN,操作在OSI模型的会话层,可以使用户通过浏览器对VPN进行连接,但是没有隧道。使用https加密的范式进行数据传输,跨平台性强,只要终端设备有浏览器,能够上网,就可以进行VPN连接,并访问资源。扩展:可以通过DNS进行访问,或者使用花生壳注册免费域名进行访问ssl(......
  • C/C++ 实现FTP文件上传下载
    FTP(文件传输协议)是一种用于在网络上传输文件的标准协议。它属于因特网标准化的协议族之一,为文件的上传、下载和文件管理提供了一种标准化的方法,在Windows系统中操作FTP上传下载可以使用WinINet库,WinINet(WindowsInternet)库是Windows操作系统中的一个网络API库,用于访问Interne......
  • 欧拉函数模板
    #include<bits/stdc++.h>usingnamespacestd;//欧拉函数,质数vector<int>euler_range(intn){vector<int>phi(n+1),prime;vector<bool>is_prime(n+1,true);is_prime[1]=0,phi[1]=1;for(inti=2;i<=n;i......
  • C++基础
    文章参考:《C++面向对象程序设计》✍千处细节、万字总结(建议收藏)_白鳯的博客-CSDN博客C++运算符重载_c++重载=-CSDN博客一.C++基础1.一个简单的案例#include<iostream>//编译预处理命令usingnamespacestd;//使用命名空间intadd(inta,intb);//......
  • [转载]C/C++ 遍历窗口标题类名
    原地址:https://cloud.tencent.com/developer/article/2201930遍历每个进程,一次查找进程下的窗口,找到窗口标题为“”,窗口类名为“RunDll”的窗口。如果找到返回true,没找到返回false。#pragmaregion依赖typedefstructEnumHWndsArg{std::vector<HWND>*vecHWnds......
  • LIMS实验室信息管理系统源码,支持二次开发
    LIMS实验室信息管理系统源码,支持二次开发LIMS实验室信息管理系统是一种软件类型,旨在通过跟踪与样品、实验、实验室工作流程和仪器相关的数据,提高实验室产能和效率。覆盖实验室从合同审批、委托下单、样品管理、生产调度、检测记录、报告管理、财务开票结算等全业务的过程管理。1、......