下面代码转化为c++代码 import java.util.*; public class Main { public static void main(String args[]) { Scanner scan = new Scanner(System.in); while (scan.hasNextLine()) { String company = scan.nextLine().trim(); String team = scan.nextLine().trim(); String result = scan.nextLine().trim(); String[] results = result.split(","); System.out.println(getResult(company,team,results)); } } private static String getResult(String company, String team, String[] results) { if(!results[0].equalsIgnoreCase(company) || !results[2].equalsIgnoreCase(team)){ return "Not Found"; } return parseScore(company, team, results[1]); } private static String parseScore(String company, String team, String result) { String[] resultItems = result.split("_"); String people = resultItems[0]; String score = resultItems[1]; String evaluate = resultItems[2]; StringBuilder sb = new StringBuilder(); sb.append(company.toUpperCase()) .append(",").append(people) .append("_").append(score) .append("_").append(convertResult(score,evaluate)) .append(",").append(team); return sb.toString(); } private static String convertResult(String score, String evaluate){ String replace = Integer.parseInt(score.trim()) >= 80 || isTop3(evaluate) ? "perfect" : "better"; int index1 = evaluate.indexOf("{"); int index2 = evaluate.indexOf("}"); return evaluate.substring(0,index1) + replace + evaluate.substring(index2 + 1); } private static boolean isTop3(String evaluate){ String sort = ""; char[] evaluates = evaluate.toCharArray(); for (int i =0; i < evaluates.length; i++){ char temp = evaluates[i]; if(!Character.isDigit(temp)){ break; } sort += Character.toString(temp); } return Integer.parseInt(sort) <= 3; } }
时间: 2024-04-21 19:22:35 浏览: 160
java代码-import java.util.Scanner;
5星 · 资源好评率100%
下面是将Java代码转换为C++的等效代码:
```cpp
#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
string getResult(string company, string team, vector<string>& results) {
if (results[0] != company || results[2] != team) {
return "Not Found";
}
return parseScore(company, team, results[1]);
}
string parseScore(string company, string team, string result) {
stringstream ss(result);
string people, score, evaluate;
getline(ss, people, '_');
getline(ss, score, '_');
getline(ss, evaluate, '_');
stringstream output;
output << company << "," << people << "_" << score << "_" << convertResult(score, evaluate) << "," << team;
return output.str();
}
string convertResult(string score, string evaluate) {
int scoreValue = stoi(score);
if (scoreValue >= 80 || isTop3(evaluate)) {
return "perfect" + evaluate.substr(evaluate.find("}") + 1);
} else {
return "better" + evaluate.substr(evaluate.find("}") + 1);
}
}
bool isTop3(string evaluate) {
string sort = "";
for (char c : evaluate) {
if (!isdigit(c)) {
break;
}
sort += c;
}
return stoi(sort) <= 3;
}
int main() {
string line;
while (getline(cin, line)) {
string company = line;
getline(cin, line);
string team = line;
getline(cin, line);
string result = line;
vector<string> results;
stringstream ss(result);
string item;
while (getline(ss, item, ',')) {
results.push_back(item);
}
cout << getResult(company, team, results) << endl;
}
return 0;
}
```
在C++代码中,我们使用了`iostream`和`sstream`库来处理输入和输出。我们使用`getline`函数从标准输入逐行读取输入,并使用`stringstream`来将字符串分割为多个部分。
主要的逻辑函数 `getResult`,`parseScore` 和 `convertResult` 在C++中与Java中的实现几乎相同。
在主函数中,我们使用 `getline(cin, line)` 逐行读取输入,并将每行输入的内容存储在相应的变量中。然后,我们使用 `stringstream` 将结果字符串分割为多个部分,并存储在一个字符串向量中。
最后,我们调用 `getResult` 函数获取结果,并使用 `cout` 打印输出。
请注意,在C++中,字符串的比较使用 `==` 运算符而不是 `!=` 运算符。另外,C++ 中没有 `equalsIgnoreCase` 函数,我们可以直接使用 `==` 进行大小写敏感的比较。同时,我们使用 `stoi` 函数将字符串转换为整数。
这是一个等效的C++实现,但可能还有其他优化和改进的方式。
阅读全文