编写一个程序,记录捐助给“维护合法权利团体”的资金。该程序要求用户输入捐献者数目,然后要求用户输入每一个捐献者的姓名和款项。这些信息被储存在一个动态分配的结构数组中。每个结构有两个成员:用来储存姓名的字符数组(或 string 对象)和用来存储款项的 double 成员。读取所有的数据后程序将显示所有捐款超过 10000 的捐款者的姓名及其捐款数额。该列表前应包含一个标题,指出下面的捐款者是重要捐款人(Grand Patrons)。然后,程序将列出其他的捐款者,该列表要以 Patrons 开头。如果某种类别没有捐款者,则程序将打印单词“none”。该程序只显示这两种类别,而不进行排序。

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

struct Donation {
    string name = "";
    double money = 0;
};
int main(){
    int num;
    //把所有捐款超过 10000 的捐款者的姓名及其捐款数额保存在maxPerson容器里,
    //其它的保存在minPerson容器里
    vector<Donation> maxPerson;
    vector<Donation> minPerson;
    cout << "请输入捐款者的人数:";
    cin >> num;
    Donation* donater = new Donation[num];
    for (int i = 0; i < num; i++) {
        cout << "请输入第 " << i + 1 << " 位捐款者的姓名和款项:";
        cin >> donater[i].name >> donater[i].money;
        if (donater[i].money > 10000) {
            maxPerson.push_back(donater[i]);
        }
        else {
            minPerson.push_back(donater[i]);
        }
        //cin.sync();
    }
    cout << "***********Grand Patrons**************" << endl;
    if (maxPerson.size()) {
        for (auto a : maxPerson) {
            cout << "姓名:" << a.name << "\t捐献款项:" << a.money << endl;
        }
    }
    else {
        cout << "none" << endl;
    }
    cout << "***********Patrons**************" << endl;
    if (minPerson.size()) {
        for (auto b : minPerson) {
            cout << "姓名:" << b.name << "\t捐献款项:" << b.money << endl;
        }
    }
    else {
        cout << "none" << endl;
    }
    delete[] donater;

    return 0;
}

用文件读取:

#include <iostream>
#include <vector>
#include <fstream>
#include <sstream>
using namespace std;

struct Donation {
    string name ;
    double money = 0;
};
int main(){
    int num;
    /*把所有捐款超过 10000 的捐款者的姓名及其捐款数额保存在maxPerson容器里,
    其它的保存在minPerson容器里*/
    vector<Donation> maxPerson;
    vector<Donation> minPerson;
    ifstream filename;
    filename.open("test.txt", ios::in);
    if (!filename.is_open()) {
        cerr << "File is open failed." << endl;
        return -1;
    }
    /*cout << "请输入捐款者的人数:";
    cin >> num;*/
    filename >> num; //先从文件中读取人数
    Donation* donater = new Donation[num];

    for (int i = 0; i < num; i++) {
        /*cout << "请输入第 " << i + 1 << " 位捐款者的姓名和款项:";
        cin >> donater[i].name >> donater[i].money;*/
        while (!filename.eof()) {
            filename >> donater[i].name >> donater[i].money;
            if (donater[i].money > 10000) {
                maxPerson.push_back(donater[i]);
            }
            else {
                minPerson.push_back(donater[i]);
            }
        }
    }
    cout << "\n***********Grand Patrons**************\n" << endl;
    if (maxPerson.size()) {
        for (auto a : maxPerson) {
            cout << "姓名:" << a.name << "\t捐献款项:" << a.money << endl;
        }
    }
    else {
        cout << "none" << endl;
    }
    cout << "\n**************Patrons*****************\n" << endl;
    if (minPerson.size()) {
        for (auto b : minPerson) {
            cout << "姓名:" << b.name << "\t捐献款项:" << b.money << endl;
        }
    }
    else {
        cout << "none" << endl;
    }
    delete[] donater;
    return 0;
}

posted on 2023-12-14 13:48  wshidaboss  阅读(25)  评论(0编辑  收藏  举报