第二次作业

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;

}
时间不够,抄了个代码

posted @ 2023-09-20 22:47  半步青杉  阅读(33)  评论(0)    收藏  举报