实验二 数组、指针和c++标准库

实验任务5

Info.hpp

#ifndef INFO_HPP
#define INFO_hpp

#include<iostream>
#include<string>
#include<iomanip>

using namespace std;

class Info{
    private:
        string nickname;
        string contack;
        string city;
        int n;
    public:
        Info(string nickname0,string contack0,string city0,int n0);
        void print();        
};

Info::Info(string nickname0,string contack0,string city0,int n0):
nickname{nickname0},contack{contack0},city{city0},n{n0}{}

void Info::print(){
    cout<<left<<setw(10)<<"称呼:"<<nickname<<endl; 
    cout<<left<<setw(10)<<"联系方式:"<<contack<<endl; 
    cout<<left<<setw(10)<<"所在城市:"<<city<<endl;
    cout<<left<<setw(10)<<"预订人数:"<<n<<endl;
}

#endif 

task5.cpp

#include"Info.hpp"
#include<iostream>
#include<vector>

int main(){
    vector<Info>audience_info_list;
    const int capacity=100;
    string nickname0,contack0,city0;
    int n0,k=0;
    cout<<"录入信息"<<endl<<endl;
    cout<<"称呼/昵称,联系方式(邮箱/手机号),所在城市,预定参加人数"<<endl; 
    while(cin>>nickname0,cin>>contack0,cin>>city0,cin>>n0){
        k+=n0;
        Info c1(nickname0,contack0,city0,n0);
        audience_info_list.push_back(c1);
        if(k==capacity) break;
        else if(k>capacity){    
            cout<<"对不起,只剩"<<capacity-k+n0<<"个位置."<<endl;
            cout<<"1.输入u,更新(update)预定信息"<<endl;
            cout<<"2.输入q,退出预定" <<endl;
            cout<<"你的选择:";
            k-=n0;
            char z;
            cin>>z;
            int t=0;
            if(z=='q'){
                audience_info_list.pop_back(); 
                break;
            }
            else if(z=='u'){
                audience_info_list.pop_back();
                continue;
            }
        }
    }
    cout<<endl<<"截至目前,一共有"<<k<<"位听众预定参加。预定听众信息如下:"<<endl;
    for(auto it=audience_info_list.begin();it!=audience_info_list.end();++it){
            it->print();
        }
}

运行测试结果截图:

 

 

 

 

 

 

 实验任务6

Textcoder.hpp

#ifndef TEXCODER_HPP
#define TEXTCODER_HPP

#include<iostream>
#include<string>
using namespace std;
class TextCoder{
    private:
        string text;
    public:
        TextCoder(string text0):text{text0}{}
        string encoder();
        string decoder();
};

string TextCoder::encoder(){
    for(auto &ch:text){
        if(ch>='a'&&ch<='u'||ch>='A'&&ch<='U')
            ch+=5;
        else if(ch>='v'&&ch<='z'||ch>='V'&&ch<='Z')
            ch-=21;
    }
    return text;
}

string TextCoder::decoder(){
    for(auto &ch:text){
        if(ch>='f'&&ch<='z'||ch>='F'&&ch<='Z')
            ch-=5;
        else if(ch>='a'&&ch<='e'||ch>='A'&&ch<='F')
            ch+=21;
    }
    return text;
}
#endif

task6.cpp

#include "Textcoder.hpp"
#include <iostream>
#include <string>

int main()
{
    using namespace std;

    string text, encoded_text, decoded_text;

    cout << "输入英文文本: ";
    while (getline(cin, text))
    {
        encoded_text = TextCoder(text).encoder();  // 这里使用的是临时无名对象
        cout << "加密后英文文本:\t" << encoded_text << endl;

        decoded_text = TextCoder(encoded_text).decoder(); // 这里使用的是临时无名对象
        cout << "解密后英文文本:\t" << decoded_text << endl;
        cout << "\n输入英文文本: ";
    }
}

运行测试结果截图:

 

posted @ 2021-10-31 21:03  ymmmnn  阅读(27)  评论(3)    收藏  举报