Vous êtes sur la page 1sur 4

Procedure Spirale(Nom:Tab;n:Integer);

Bac pratique 2019-Sujet 1: Var


nom0.pas p,i: Integer;
Program Nomination; ch: String;
Uses Wincrt; tp: tab;
Type
Tab = Array[1..20] Of String[10]; Function rotation(ch:String): String;
Var Var
N,i : Integer; ch2: String;
Nom: Tab; L,i: Integer;
Begin
Procedure Spirale(Nom:Tab;n:Integer); L := Length(ch);
Begin ch2 := '';
End; For i:= 1 To l Div 2 Do
Begin ch2 := ch2+ch[L-i+1]+ch[i];
Write('Donner le nombre de produits:'); If L Mod 2 <>0 Then ch2 := ch2+ch[l Div
Readln(N); 2+1];
For i:=1 To N Do rotation := ch2;
Begin End;
Write('Donner le nom du produit
n°',i,':'); Procedure Affichage(TP:tab;N:Integer);
Readln(Nom[i]); Var

Cours d'informatique en ligne: www.cours-informatique.tn


End; i: Integer;
Spirale(Nom, N); Begin
End. Write(tp[1]);
nom1.pas For i:=1 To n Do
Program Nomination; Write('-', tp[i]);
Uses Wincrt; End;
Type
Tab = Array[1..20] Of String[10]; Begin
Var Repeat
N,i : Integer; Write('P (entre 1 et 10) =');
Nom: Tab; Readln(p);
Until p In [1..10];
Function verif(ch:String): Boolean; ch := '';
Var For i:=1 To n Do
ok: Boolean; i:integer; ch := ch+nom[I][p];
Begin tp[1] := ch;
ok := True; For i:=2 To n Do
i := 0; tp[i] := rotation(tp[i-1]);
Repeat affichage(tp,n);
i := i+1; End;
If Not(ch[i] In ['A'..'Z']) Then ok
:= False; Begin
Until (i=Length(ch)) Or (ok=False); saisir(Nom,n);
verif := ok; Spirale(Nom, N);
End; End.
Procedure saisir(Var nom:tab; Var
n:Integer);
Var
i: Integer;
Begin
Repeat
Write('Donner le nombre de
produits:');
Readln(N);
Until n In [3..20];
For i:=1 To N Do
Repeat
Write('Donner le nom du produit
n°',i,':');
Readln(Nom[i]);
Until (Length(nom[i])=10) And (
verif(nom[i]));
End;
Procedure Trier(Var A:tab;Var
Bac pratique 2019-Sujet 2: S:tab2;n:Integer);
TirArc0.pas Var
program TirArc ; i: Integer;
uses wincrt; echange: Boolean;
Type aux1: Integer;
tab=array[1..20]of String[30]; aux2: String;
var Begin
n,i:Integer; Repeat
A:tab; echange := False;
For i:=1 To n-1 Do
Function Alpha(ch:string):Boolean; If (S[i] < S[i+1]) Then
Begin Begin
end; aux1:= S[i];S[i]:= S[i+1];S[i+1]:= aux1;
Procedure score(A:tab;n:Integer); aux2:= A[i];A[i]:= A[i+1];A[i+1]:= aux2;
Begin Echange := True ;
end; End;
n := n-1;
Begin Until (Echange = False) Or (n=1);
Repeat End;
Write ('Donner le nombre de joueurs : ');
readln (N); Procedure
until (N In [2..20]); Afficher(A:tab;S:tab2;n:Integer);
For i:=1 to N Do Var

Cours d'informatique en ligne: www.cours-informatique.tn


Repeat i: Integer;
WriteLn ('Donner le nom du joueur n°', Begin
i,' : '); Readln (A[i]); For i:=1 To n Do
Until (Alpha (A[i])); Writeln(A[i], ' avec un score de ',S[i]);
Score (A, N); End;
end.
TirArc1.pas Begin
Program TirArc ; For i:=1 To n Do
Uses Wincrt; Begin
Type Writeln('Joueur ', i);
tab = Array[1..20] Of String[30]; nb := 0;
Var For j:=1 To 3 Do
n,i: Integer; Begin
A: tab; Repeat
Function Alpha(ch:String): Boolean; Write('donner essai n°',j,': ');
Var Readln(E);
ok: Boolean; Until E In [0..10];
i: Integer; nb := nb+ E;
Begin S[i] := nb;
ok := True; End;
If Length(ch)>30 Then ok := False End;
Else trier(A,S,N);
Begin afficher(A,S,N);
i := 0; End;
Repeat Procedure remplir(Var A:tab;n:Integer);
i := i+1; Var
If Not(ch[i] In i: Integer;
['A'..'Z','a'..'z',' ']) Then ok := Begin
False; For i:=1 To N Do
Until (i=Length(ch)) Or (ok=False); Repeat
End; Writeln ('Donner le nom du joueur
Alpha := ok; n°', i,' : ');
End; Readln (A[i]);
Until (Alpha (A[i]));
Procedure score(A:tab;n:Integer); End;
Type Begin
tab2 = Array[1..20] Of Integer; Repeat
Var Write ('Donner le nombre de joueurs : ');
i,j,e,nb: Integer; Readln (N);
S: tab2; Until (N In [2..20]);
remplir(A,n);
Score (A, N);
End.
Begin
Bac pratique 2019-Sujet 3: j := 0; trouve := False;
Plagiat0.pas Repeat
Program Plagiat; j := j+1;
uses WinCrt; {rechercher si un mot de T11 se trouve
var dans T22}
T1,T2:String; nbc:Integer; If t11[i]=t22[j] Then
Begin
Function Nbmots(ch:string):Integer; trouve := True;
Begin nb := nb+1;
end; Write(t11[i],' - ');
Function Commun(ch1,ch2:string):Integer; {effacer le mot trouvé dans T22 par
Begin décalage des éléments }
end; For k:=j To n2-1 Do
t22[k] := t22[k+1];
Begin {Par conséquent la taille du tableau
Repeat diminue}
Readln (T1); Readln (T2); n2 := n2-1;
Until (Nbmots (T1) = Nbmots (T2)); End;
Nbc:=Commun (T1,T2); Until (Trouve) Or (j>n2);
End. End;
Plagiat1.pas commun := nb;
Program Plagiat; End;
Uses Wincrt; Function verif(ch:String): Boolean;

Cours d'informatique en ligne: www.cours-informatique.tn


Var Var
T1,T2: String; ok: Boolean;
nbc: Integer; i: Integer;
Function Nbmots(ch:String): Integer; Begin
Var nb,i: Integer; ok := True;
Begin i := 0;
nb := 0; Repeat
For i:=1 To Length(ch)-2 Do i := i+1;
If ch[i]=' ' Then nb := nb+1; If Not(ch[i] In ['A'..'Z',' ']) Then
nbmots := nb+1; ok := False;
End; Until (i=Length(ch)-1) Or (ok=False);
Function Commun(ch1,ch2:String): Integer; Verif := ok;
Type tab = Array[1..100] Of String; End;
Var Procedure saisir(Var ch:String);
t11,t22: tab; Begin
n1,n2,nb,i,j,k: Integer; Repeat
trouve: Boolean; Write('Donner une chaine :'); Readln(ch);
Procedure extraire_mots(ch:String;Var Until (ch[1] In ['A'..'Z']) And
t:tab;Var n:Integer); (Length(ch)<=200) And
Var i: Integer; (ch[Length(ch)]='.') And(verif(ch)=True);
Begin {garder un seul espace entre deux mots
{Ajout de n-1 mots au tableau } consécutifs}
i := 0; While Pos(' ',ch)<>0 Do
While (Pos(' ',ch)<>0) Do Delete(ch,Pos(' ',ch),1);
Begin { ne garder aucun espace avant le point
i := i+1; de fin de texte}
t[i] := Copy(ch,1,Pos(' ',ch)-1); If ch[Length(ch)-1]=' ' Then
Delete(ch,1,Pos(' ',ch)); Delete(ch,Length(ch)-1,1);
End; End;
{Ajout du dernier mot au tableau } Begin
i := i+1; Writeln('saisir deux textes T1 et T2
t[i] := Copy(ch,1,Pos('.',ch)-1); ayant un même nombre de mots:');
{nombre de mots = taille n de tableau} Repeat
n := i; Writeln('Donner T1:'); Saisir (T1);
End; Writeln('Donne T2:'); Saisir (T2);
Begin Until (Nbmots (T1) = Nbmots (T2));
{extraire les mots de T1 et T2 dans deux Nbc := Commun (T1,T2);
tableaux T11 et T22} Writeln('Nombre de mots communs: ',nbc);
extraire_mots(ch1,T11,n1); If nbc>Nbmots(T1) Div 2 Then
extraire_mots(ch2,T22,n2); Writeln('le texte T2 est plagiat de T1')
Writeln('Les mots communs:'); Else Writeln('le texte T2 n''est pas
nb := 0; plagiat de T1')
For i:=1 To n1 Do End.
Procedure Remplir(Var TA:TAB; n:Integer);
Bac pratique 2019-Sujet 4: Var
Fidele0.pas i: Integer;
Program Fidelite; Begin
Uses Wincrt; Repeat
Type Write('Donner le numéro d''abonnement
TAB = Array[1..30] Of String[10]; n° 1 =');
Var Readln(TA[1]);
N: Integer; Until verif(TA[1]);
TA: TAB; For i:=2 To n Do
Repeat
Procedure Remplir(Var TA:TAB; n:Integer); Write('Donner le numéro
Begin d''abonnement n° ',i,' =');
End; Readln(TA[i]);
Until verif(TA[i])And distinct(TA,N,i);
Procedure Bonus(TA:TAB; n:Integer); End;
Begin
End; Procedure Bonus(TA:TAB; n:Integer);
Var
Begin i,aa,mm,a,m,e,an,nb: Integer;
Repeat cat: Char;
Write('Donner le nombre des adhérents:'); Begin
Readln(N); aa := 2019;
Until N In [5..30]; mm := 5;
Remplir(TA,N); Repeat

Cours d'informatique en ligne: www.cours-informatique.tn


Bonus(TA,N); Write('donner la catégorie de
End. l''adhérent: ');
Fidele1.pas Readln(cat);
Program Fidelite; Until cat In ['A','J','E'];
Uses Wincrt; For i:=1 To n Do
Type If TA[i][1]=cat Then
TAB = Array[1..30] Of String[10]; Begin
Var nb := 0;
N: Integer; Val(Copy(TA[i],2,4),a,e);
TA: TAB; Val(Copy(TA[i],6,2),m,e);
an := aa-a;
Function distinct(TA:tab;n,i:Integer): If (mm < m) And (an<>0) Then an := an-1;
Boolean; {calcul de nombre d'années }
Var If (an>=5) Then
ok: Boolean; Begin
j: Integer; If m<=mm Then nb := an*12+(mm-m)
Begin Else nb := an*12+(12-(m-mm));
ok := True; {calcul de nombre de mois }
j := 0; Writeln('L''adhérent n°',
Repeat Copy(TA[i],8,3), ' son bonus accordé
j := j+1; est=',nb,' heures');
If Copy(TA[i],8,3)=Copy(TA[j],8,3) End;
Then ok := False; End;
Until (ok=False) Or (j=i-1); End;
distinct := ok;
End; Procedure Saisir(Var N:Integer);
Function verif(ch:String): Boolean; Begin
Var Repeat
d: Longint; Write('Donner le nombre des adérents: ');
e,a,m: Integer; Readln(N);
Begin Until N In [5..30];
Val(Copy(ch,6,2),m,e); { extraction du End;
mois } Begin
Val(Copy(ch,2,4),a,e); {extraction de Saisir(N);
l'année} Remplir(TA,N);
Val(Copy(ch,2,Length(ch)-1),d,e); {si Bonus(TA,N);
e=0 alors il y a 9 chiffres } End.
verif := (Length(ch)=10) And
(ch[1] In ['A','J','E']) And (e=0) And
(a>=2000) And (a<=2019) And
(m In [1..12]);
End;

Vous aimerez peut-être aussi