Program Plagiat1;
Var
T1 , T2 : String;
Nbc : integer;
//***************************************
Function Verif (CH : String) : Boolean;
Var
i : integer;
b : boolean;
Begin
i := 0;
Repeat
i := i + 1;
b := (Upcase(CH[i]) In ['A'..'Z',' ']) And (CH[1] In ['A'..'Z']) ;
Until Not ( b=false ) Or (i=Length(CH)-1);
Verif := (b=true) And (CH[Length(CH)] = '.') And (CH[Length(CH)-1]<>' ') ;
End;
//***************************************
Procedure Saisir (Var CH : String);
Var
i : integer;
Begin
Repeat
Write ('Entrer une chaîne de caractères : ');
Readln (CH);
Until verif(ch) And (Pos( ' ' , CH) = 0) And (Length(CH) <= 200) ;
End;
//***************************************
Function Nbmots (CH : String) : integer;
Var
i,nb : integer;
Begin
nb := 1;
For i:=1 To Length(CH) Do
If CH[i] = ' ' Then
nb := nb + 1;
Nbmots := nb;
End;
//***************************************
Function Commun (CH1 , CH2 : String) : integer;
Var
NB , P : integer;
X : string;
Begin
NB := 0 ;
Repeat
P := Pos ( ' ' , CH2);
If p<>0 Then
Begin
X := Copy (CH2 , 1 , P-1) ;
delete (CH2 , 1 , p);
If Pos (X, CH1) <> 0 Then
NB := NB + 1;
End;
Until p=0;
If Pos (CH2 , CH1) <> 0 Then
NB := NB + 1;
Commun := NB;
End;
//***************************************
Begin
Repeat
Saisir(T1);
Saisir(T2);
Until Nbmots (T1) = Nbmots (T2);
Nbc := Commun (T1,T2);
If Nbc > Nbmots(T2) Div 2 Then
Writeln (
'Le texte testé est plagié. Le nombre de mots communs aux deux textes est égal à ',
Commun (T1,T2) , ' dépassant ainsi la moitié du nombre qui est ', Nbmots (T2) Div 2)
Else
Writeln ('Le texte testé n''est pas plagié');
End.
Inscription à :
Publier les commentaires (Atom)