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;