用c++写一个能记录每次考核情况,记录考核错误单词,并优先选择错误单词的代码
时间: 2023-12-03 12:43:16 浏览: 71
以下是一个简单的C++代码示例,可以记录每次考核情况,并且记录考核错误单词,并优先选择错误单词进行复习。
```c++
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
struct Word {
string word;
int correct_times;
int wrong_times;
bool operator<(const Word& other) const {
return wrong_times > other.wrong_times;
}
};
int main() {
vector<Word> words;
// 从文件中读取单词列表
ifstream infile("words.txt");
string line;
while (getline(infile, line)) {
words.push_back({line, 0, 0}); // 初始化单词信息
}
// 进行考核
int correct_count = 0;
int wrong_count = 0;
string answer;
for (const auto& word : words) {
cout << "请拼写单词 " << word.word << ":" << endl;
cin >> answer;
if (answer == word.word) {
cout << "拼写正确!" << endl;
word.correct_times++;
correct_count++;
} else {
cout << "拼写错误!正确拼写为 " << word.word << endl;
word.wrong_times++;
wrong_count++;
}
}
// 输出考核结果
cout << "考核结束,总共考核了 " << words.size() << " 个单词。" << endl;
cout << "正确个数:" << correct_count << ",错误个数:" << wrong_count << "。" << endl;
// 记录错误单词
vector<Word> wrong_words;
for (const auto& word : words) {
if (word.wrong_times > 0) {
wrong_words.push_back(word);
}
}
// 优先复习错误单词
if (!wrong_words.empty()) {
sort(wrong_words.begin(), wrong_words.end());
cout << "接下来,请复习以下错误的单词:" << endl;
for (const auto& word : wrong_words) {
cout << "单词 " << word.word << ",错误次数 " << word.wrong_times << endl;
}
} else {
cout << "没有错误单词需要复习!" << endl;
}
// 将单词信息写回文件
ofstream outfile("words.txt");
for (const auto& word : words) {
outfile << word.word << " " << word.correct_times << " " << word.wrong_times << endl;
}
return 0;
}
```
以上代码中,单词列表保存在名为 "words.txt" 的文本文件中,每行一个单词。程序首先从文件中读取单词列表,并初始化每个单词的正确次数和错误次数为0。
接着,程序进行考核,逐个询问单词的拼写,并记录每个单词的正确次数和错误次数。
考核结束后,程序输出考核结果,并将所有出现过错误的单词记录在一个名为 "wrong_words" 的向量中。如果有错误单词需要复习,程序会按照错误次数从高到低排序,并逐个输出进行复习。
最后,程序将所有单词的信息写回到原始的文件中,以便下次使用时能够保留历史记录。
阅读全文