Program S10;
Uses wincrt;
Type
tab = array [1..1000] Of string;
tableau = array [1..1000] Of integer;
Var
ch : string;
//********************************************
Function valide(ch:String) : boolean;
Var
i : integer;
test : boolean;
Begin
test := FALSE;
If ch<>'' Then
Begin
i := 0;
Repeat
i := i+1;
If ch[i] In ['a'..'z'] Then
test := True
Else test := False;
Until (Not(test)) Or (i>=length(ch));
End;
valide := (test And (ch<>'') And (length(ch)>=2));
End;
//********************************************
Procedure saisir(Var ch:String);
Begin
Repeat
write('donner une chaine: ');
readln(ch);
Until valide(ch);
End;
//********************************************
Function existence(T:tab;ch:String;j:integer) : Boolean;
Var
i : integer;
test : boolean;
Begin
i := 0;
Repeat
i := i+1;
If T[i]=ch Then
test := True
Else test := False;
Until (i>=j) Or test;
existence := test;
End;
//********************************************
Procedure afficher(ch:String);
Var
T : tab;
Toc : tableau;
i,j,k,l,s : integer;
Begin
j := 0;
For i:=1 To length(ch)-1 Do
Begin
If (ch[i]<>ch[i+1]) Then
Begin
If j<>0 Then
Begin
If
Not(existence(T,ch[i]+ch[i+1],j)) Then
Begin
j := j+1;
T[j] := ch[i]+ch[i+1];
End;
End
Else
Begin
j := j+1;
T[j] := ch[i]+ch[i+1];
End;
End;
End;
If j<>0 Then
Begin
For k:=1 To j Do
Begin
s := 0;
For l:=1 To (length(ch)-1) Do
Begin
If T[k]=(ch[l]+ch[l+1]) Then
s := s+1;
End;
Toc[k] := s;
writeln('le nombre d''occurences de' ,T[k],' est ',Toc[k]);
End;
End;
End;
//********************************************
Begin
saisir(ch);
afficher(ch);
End.
Inscription à :
Publier les commentaires (Atom)