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

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

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

实验任务5

textcoder.hpp

#program once
#include<iostream>
#include<string>

using namespace std;

class TextCoder{
private:
    string text;
    void encoder();
    void decoder();
public:
    TextCoder(string &str);
    string get_ciphertext();
    string get_deciphertext();
    
};

TextCoder::TextCoder(string &str){
    text=str;
}

string TextCoder::get_ciphertext() {
    encoder();
    return text;
}

string TextCoder::get_deciphertext() {
    decoder();
    return text;
}

void TextCoder::encoder(){
    for(auto &i : text){
        if (i >= 'a' && i <= 'z')
            i = 'a' + ((i -'a')+7) % 26;
       else if (i >= 'A' && i <= 'Z')
                i = 'A' + ((i -'A')+7) % 26;
   }
}
void TextCoder::decoder() {
     for (auto &i : text) {
         if (i >= 'a' && i <= 'z')
             i = 'a' + ((i -'a') + 26-7) % 26;
         else if (i >= 'A' && i <= 'Z')
                  i = 'A' + ((i -'A') + 26-7) % 26;
    }
}

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_deciphertext(); 
        cout << "解密后英文文本:\t" << decoded_text << endl;
        cout << "\n输入英文文本: ";
    }
}

int main() {  
    test(); 
}

 

实验任务6

info.hpp

pragma once
#include <iostream>
#include <string>
#include<iomanip>
#include <vector>

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, int n);
    void print() const;
};

Info::Info(const string &nick, const string &con, const string &ci, int nn): nickname{nick}, contact{con}, city{ci}, n{nn} {}

void Info::print() const {
    cout << left << setw(15) <<  "昵称: " << nickname << endl;
    cout << left << setw(15) <<  "联系方式: " << contact << endl;
    cout << left << setw(15) <<  "所在城市: " << city << endl;
    cout << left << setw(15) << "指定人数: " << n << endl;
}

task6.cpp

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


using namespace std;

const int capacity = 100;

int main (){

    vector<Info> audience_info_list;
    string nick,con,ci;
    int nn;
    static int x =0;
    cout << "录入信息:\n\n";
    cout << "昵称   联系方式(邮箱/手机号)   所在城市   预定参加人数" << endl;

    while (cin >> nick)
    {
        cin >> con >> ci >> nn;
        if (x + nn <= capacity) {
            Info tmp(nick, con, ci, nn);
            audience_info_list.push_back(tmp);
            x += nn;
            if (x == capacity)
                break;
        }
        else
        {
            char option;
            cout << "对不起,只剩" << capacity - x << "个位置." << endl
                 << "1. 输入u,更新(update)预定信息" << endl
                 << "2. 输入q,退出预定" << endl
                 << "你的选择:" << endl;
            cin >> option;
            if (option == 'u')
            {
                cout << "请重新输入:" << endl;
            }
            if (option == 'q')
            {
                cout << endl;
                break;
            }
        }
    }

cout << "\n截至目前,一共有" << x << "位听众预定参加。预定听众信息如下:" << endl;
for (const auto& list : audience_info_list)
    list.print(); 
    return 0;
}

 

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

相关文章

  • 实验4 现代C++标准库与类模板
    实验任务51#include<iostream>2#include<string>3usingnamespacestd;4classTextCoder5{6public:7TextCoder()=default;8TextCoder(stringstr);9stringget_ciphertext();10stringget_deciphertext();11......
  • Linux Mint(Ubuntu)系统VS Code C/C++环境配置include error问题
    1.问题描述安装完成LinuxMint后发现随系统自带了gcc,心里比较开心,以为自己不需要装了。但是在安装完VSCode之后,一直提示#includeerrorsdetected.PleaseupdateyourincludePath.Squigglesaredisabledforthistranslationunitlinux2.解决方案重新通过apt安装gcc......
  • 实验4 现代c++标准库与类模板
    实验任务1task1.cpp源码task1_1.cpp:1#include<iostream>23usingstd::cout;4usingstd::endl;56//类A的定义7classA{8public:9A(intx0,inty0):x{x0},y{y0}{}10voidshow()const{cout<<x<<","<......
  • 实验四 现代c++ 标准库与类的模板
    1.普通数组、array、vector的相关性,以及,区别相关性存储多个元素:1.普通数组:使用C风格数组声明和定义,大小固定。2.array:是C++11引入的标准库容器,提供了数组的替代,大小固定。3.vector:是C++标准库中的动态数组,大小可以动态调整。元素访问:1.普通数组和array:使用索......
  • C++ 泛型编程之可变参数包
    C++泛型编程之可变模板参数·variadictemplates可以表示0到任意个数、任意类型的参数1.可变模板参数的展开:template<typename...Args> //可以将参数包展开一个个独立的参数voidfunc(Args...args); //声明一个参数包Args...args这个参数包可以包括0到任意个模板参数......
  • 实验4
    #include<iostream>#include<string>usingstd::string;classTextCoder{private:stringtext;voidencoder();voiddecoder();public:TextCoder(string&str);TextCoder(constTextCoder&......
  • C++20语言核心特性的变化
    usingforEnumerationValues  对比一下C++20前后的区别:enumclassState{open,progress,done=9};//BeforeC++20voidprint(States){switch(s){caseState::open:std::cout<<"open\n";brea......
  • 实验4 现代C++标准库与类模板
    实验任务5task5.cpp#include"Textcoder.hpp"#include<iostream>#include<string>voidtest(){ usingnamespacestd; stringtext,encoded_text,decoded_text; cout<<"输入英文文本:"; while(getline(cin,text)) { encoded_t......
  • 实验四
    实验任务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......