第二次作业
include
include
include
include
using namespace std;
double calculateSimilarity(const string& originalText, const string& copiedText) {
int originalLength = originalText.length();
int copiedLength = copiedText.length();
int commonLength = 0;
int deleteCount = 0;
int insertCount = 0;
// 计算删除和插入操作的次数
for (int i = 0; i < originalLength; i++) {
if (originalText[i] == copiedText[i]) {
commonLength++;
} else {
deleteCount++;
insertCount++;
}
}
// 计算新增操作的次数
insertCount += copiedLength - originalLength;
// 计算重复率
double similarity = 1.0 - (deleteCount + insertCount - commonLength) / (double) copiedLength;
return round(similarity * 100) / 100; // 精确到小数点后两位
}
int main(int argc, char* argv[]) {
if (argc < 4) {
cout << "Usage: " << argv[0] << " [original file] [copied file] [output file]" << endl;
return 1;
}
string originalFile = argv[1];
string copiedFile = argv[2];
string outputFile = argv[3];
ifstream originalStream(originalFile);
ifstream copiedStream(copiedFile);
ofstream outputStream(outputFile);
if (!originalStream.is_open() || !copiedStream.is_open() || !outputStream.is_open()) {
cout << "Failed to open files." << endl;
return 1;
}
string originalText, copiedText;
// 读取原文和抄袭版论文的内容
getline(originalStream, originalText);
getline(copiedStream, copiedText);
// 计算重复率
double similarity = calculateSimilarity(originalText, copiedText);
// 输出结果到答案文件
outputStream << similarity << endl;
// 关闭文件流
originalStream.close();
copiedStream.close();
outputStream.close();
return 0;
}
时间不够,抄了个代码
浙公网安备 33010602011771号