반응형
하단에 파이썬으로 만든 표절검사 프로그램의 링크가 있으니 참고바랍니다.
여기서 만들 표절 검사 프로그램은 텍스트 문서를 비교하여 유사점을 식별 합니다. 다음은 Levenshtein 거리 알고리즘을 사용하여 두 텍스트 사이의 유사성을 측정하는 C언어의 간단한 예입니다.
#include <stdio.h>
#include <string.h>
int min(int a, int b, int c) {
int min = a;
if (b < min) min = b;
if (c < min) min = c;
return min;
}
int levenshtein_distance(const char* s1, const char* s2) {
int len1 = strlen(s1);
int len2 = strlen(s2);
int matrix[len1 + 1][len2 + 1]; // 비주얼스튜디오에서는 이 부분에서 오류가 날 수 있습니다.
for (int i = 0; i <= len1; ++i) {
for (int j = 0; j <= len2; ++j) {
if (i == 0) {
matrix[i][j] = j;
}
else if (j == 0) {
matrix[i][j] = i;
}
else {
int cost = (s1[i - 1] != s2[j - 1]);
matrix[i][j] = min(matrix[i - 1][j] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j - 1] + cost);
}
}
}
return matrix[len1][len2];
}
double similarity_percentage(const char* s1, const char* s2) {
int distance = levenshtein_distance(s1, s2);
int maxLength = strlen(s1) > strlen(s2) ? strlen(s1) : strlen(s2);
return 100 * (1 - (double)distance / maxLength);
}
int check_plagiarism(const char* text1, const char* text2, double threshold) {
double similarity = similarity_percentage(text1, text2);
if (similarity >= threshold) {
return 1; // Plagiarism detected
}
else {
return 0; // No plagiarism detected
}
}
int main() {
const char* document1 = "This is a sample text for testing plagiarism.";
const char* document2 = "This is a sample text for testing.";
int isPlagiarized = check_plagiarism(document1, document2, 70);
if (isPlagiarized) {
printf("Plagiarism detected! Similarity: %.2f%%\n", similarity_percentage(document1, document2));
}
else {
printf("No plagiarism detected.\n");
}
return 0;
}
비주얼스튜디오에서는 오류가 날 수 있는 부분의 코드를 확인하십시오.
여기서는 Dev C++을 이용해서 컴파일하고 실행했습니다.
파이썬 코드:
반응형
'C_C++' 카테고리의 다른 글
(C언어) 주사위 시뮬레이션 (dice simulation) (106) | 2024.01.25 |
---|---|
(C언어) 중복되지 않은 단어의 개수 세는 프로그램 (108) | 2024.01.23 |
(C언어) 토끼와 거북이 경주하기 게임 (91) | 2024.01.14 |
(C언어) 테트리스 게임 소스 (79) | 2024.01.11 |
(C언어) 구조체를 이용한 성적처리 프로그램, 총점 평균 석차 구하기 (3) | 2024.01.10 |