实验二 数组、指针与C++标准库

1、试验任务1-4

2、实验任务5

问题场景描述如下: 某独立音乐人要举办一场免费小型liveshow。livehouse场地容量有限,最多容纳100位乐迷听众。现通 过某平台开通线上预约登记。

 

info.hpp

#ifndef INFO_HPP
#define INFO_HPP

//info类的定义 
#include<iostream>
#include<string>
using namespace std;


class info{
    public:
        int n;
        string nickname,contact,city;
        
        info(string name,string con,string cit,int m):nickname(name),contact(con),city(cit),n(m) {}
        
        void print(){
            cout<<"称呼:\t"<<nickname<<endl;
            cout<<"联系方式:\t"<<contact<<endl;
            cout<<"所在城市:\t"<<city<<endl;
            cout<<"预定人数:\t"<<n<<endl; 
        }
};
#endif

 

task5.cpp

#include"info.hpp" 
#include<iostream>
#include<string>
#include<vector>
using namespace std;

int main(){
    const int capacity=100;
    vector<info> audience_info_list;
    cout<<"录入信息"<<endl<<endl;
    cout<<"称呼/昵称,联系方式(邮箱/手机号),所在城市,预定参加人数"<<endl;
    string nickname,contact,city;
    int n,sum=0;
    while(cin>>nickname>>contact>>city>>n){
        if(sum+n>capacity){
            cout<<"对不起,只剩"<<capacity-sum<<"个位置"<<endl;
            cout<<"1、输入u,更新(update)预定信息"<<endl;
            cout<<"2、输入q,退出预定"<<endl;
            cout<<"你的选择:";
            char op;
            cin>>op;
            if(op=='u')continue;
            else break;
        }
        info p(nickname,contact,city,n);
        audience_info_list.push_back(p);
        sum+=n;
    }
    cout<<"截至目前,一共有"<<sum<<"位听众预定参加。预定听众信息如下:"<<endl;
    for(auto x:audience_info_list){
        x.print();
        puts("");
    }
}

 

输出结果如下:

 

 

 

 

3、试验任务6

实验流程:设计并实现一个类TextCoder,用于对英文文本字符串进行简单的加密和解密操作

 

textcoder.hpp

#ifndef TEXTCODER_HPP
#define TEXTCODER_HPP

//textcoder类的定义
#include<iostream>
#include<string>
using namespace std;

class TextCoder{
    public:
        
        TextCoder(string t):text(t){}
        
        string encoder(){
            for(char &c:text){
                if(c>='A'&&c<='Z') c='A'+(c-'A'+5)%26;
                else if(c>='a'&&c<='z') c='a'+(c-'a'+5)%26;
            }
            return text;
        }
        string decoder(){
            for(char &c:text){
                if(c>='A'&&c<='Z') c='A'+(c-'A'-5+26)%26;
                else if(c>='a'&&c<='z') c='a'+(c-'a'-5+26)%26;
            }
            return text;
        }
    private:
        string text;
};
 
#endif

 

tast6.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-11-02 21:10  Gpp-ist  阅读(32)  评论(4)    收藏  举报