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

实验任务5

"info.hpp"

#include <iostream>
#include <string>
using namespace std;

class Info {

public:
    Info (string nina, string con, string ci, int num = 0): nickname(nina), contact(con), city(ci), n(num) {};
    void print();

private:
    string nickname, contact, city;
    int n;
}; 

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

"task5.cpp"

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

int main() {
    vector <Info> audience_info_list;
    const int capacity = 100;
    string nina, con, ci, choice;
    int total_num = 0, cin_num = 0, i = 0;
    
    cout << "录入信息:" << endl;
    cout << endl;
    cout << "称呼/昵称,联系方式(邮箱/手机号),所在城市,预定参加人数" << endl;
    
    while (cin >> nina >> con >> ci >> cin_num) {
        if (total_num + cin_num <= capacity) {
            audience_info_list.push_back(Info(nina, con, ci, cin_num));
            total_num += cin_num;
            i++;
        }
        else {
            cout << "对不起,只剩" << capacity -  total_num << "个位置." << endl;
            cout << "1. 输入u, 更新(update)预定信息" << endl;
            cout << "2. 输入q, 退出预定" << endl;
            cout << "你的选择: ";
            cin >> choice;
            if (choice == "u")
                audience_info_list.pop_back();
            else if (choice == "q")
                break; 
        }
    }
    
    cout << endl;
    cout << "截至目前,一共有" << total_num << "位听众预定参加。预定听众信息如下:" << endl;
    for (int j = 0; j < i; j++)
        audience_info_list[j].print();
    return 0;
}

运行结果

 

 

 

 

实验任务6

"textcoder.hpp"

#include <iostream>
#include <string>
using namespace std;

class TextCoder {
    public:
        TextCoder (string tc): text(tc) {};
        string encoder();
        string decoder();
    private:
        string text;
};

string TextCoder::encoder() {
    for (int i = 0; i < text.length(); i++)
        if ((text[i] >= 'a' && text[i] <= 'z') || (text[i] >= 'A' && text[i] <='Z')) {
            if ((text[i] >= 'v' && text[i] <= 'z') || (text[i] >= 'V' && text[i] <= 'Z'))
                text[i] -= 21;
            else
                text[i] += 5;
        }
    return text;
}

string TextCoder::decoder() {
    for (int i = 0; i < text.length(); i++)
        if ((text[i] >= 'a' && text[i] <= 'z') || (text[i] >= 'A' && text[i] <= 'Z')) {
            if ((text[i] >= 'a' && text[i] <= 'e') || (text[i] >= 'A' && text[i] <= 'E'))
                text[i] += 21;
            else
                text[i] -= 5;
        }
    return text;
}

"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 on 2021-10-30 10:33  Yukito0209  阅读(18)  评论(3)    收藏  举报