编写一个程序,记录捐助给“维护合法权利团体”的资金。该程序要求用户输入捐献者数目,然后要求用户输入每一个捐献者的姓名和款项。这些信息被储存在一个动态分配的结构数组中。每个结构有两个成员:用来储存姓名的字符数组(或 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;
}