8. 假设字符串:“Lily has 5 dollars. Lucy has 12 dollars. Andy has ? dolars.john has-10 dolrs..”,求最有钱的人的名字,c++
时间: 2024-12-19 20:22:12 浏览: 2
在C++中,要解决这个问题,我们需要首先解析输入的字符串并提取每个人的名字以及他们拥有的美元金额。然后比较这些值,找出拥有最多美元的人。这里是一个简单的示例程序:
```cpp
#include <iostream>
#include <string>
#include <map>
std::string find RichestPerson(const std::string& str) {
std::map<std::string, int> nameToMoney;
std::string currentName = "";
int currentMoney = 0;
for (char c : str) {
if (isdigit(c)) {
currentMoney = currentMoney * 10 + c - '0'; // 整理数字
} else if (c == '.') {
nameToMoney[currentName] = currentMoney;
currentMoney = 0; // 清空当前金钱
currentName.clear(); // 清空当前名字
} else if (c == ' ') {
continue;
} else if (!currentName.empty()) {
currentName += c;
}
}
if (!currentName.empty()) { // 如果还有未处理的名字
nameToMoney[currentName] = currentMoney; // 添加最后一个人的钱数
}
std::string richestName;
int maxMoney = 0;
for (const auto& entry : nameToMoney) {
if (entry.second > maxMoney) {
richestName = entry.first;
maxMoney = entry.second;
}
}
return richestName;
}
int main() {
std::string input = "Lily has 5 dollars. Lucy has 12 dollars. Andy has? dolars.john has-10 dolrs.";
std::cout << "The richest person is: " << findRichestPerson(input) << "." << std::endl;
return 0;
}
```
这个程序会输出最有钱的人的名字,即"Lucy"。
阅读全文