posts - 137,comments - 0,views - 40818

编写一个程序,记录捐助给“维护合法权利团体”的资金。该程序要求用户输入捐献者数目,然后要求用户输入每一个捐献者的姓名和款项。这些信息被储存在一个动态分配的结构数组中。每个结构有两个成员:用来储存姓名的字符数组(或 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   wshidaboss  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示