Drop Down MenusCSS Drop Down MenuPure CSS Dropdown Menu

mercredi 15 juillet 2020

Baccalauréat 2020 Sujet 1 SI Corrigé

Program BacPratique_2020; Uses wincrt; Var NB : integer; FN,F7,F13 : Text; (*************************************************) //Saisie de NB >=5; Procedure Saisie(Var NB:integer); Begin Repeat write('Taille du fichier (>=5) : '); Readln(NB); Until (NB >= 5); End; (*************************************************) Procedure Creation(Var F1,F2,F3:Text); Begin Assign(F1,'C:\BAC2020\123456\Nombre.txt'); Assign(F2,'C:\BAC2020\123456\DIV13.txt'); Assign(F3,'C:\BAC2020\123456\DIV7.txt'); End; (*************************************************) //Verifier si la chaine saisie est numérique Function Verif(ch:String) : Boolean; Var i : integer; Begin i := 1; While (i<=Length(ch)) And (ch[i] In ['0'..'9']) Do i := i+1; Verif := (i>Length(ch)); End; (*************************************************) //Verif Récursive Function Verifier(ch:String) : Boolean; Begin If (ch='') Then Verifier := True Else If (Not(ch[1] In ['0'..'9'])) Then Verifier := False Else Verifier := Verifier(Copy(ch,2,Length(ch)-1)); End; (*************************************************) Procedure Remplir_Nombre(Var F:Text; N : integer); Var i : integer; ch : String; Begin Rewrite(F); For i:=1 To N Do Begin Repeat write(i,' : Donner un Nombre: '); Readln(ch); Until (ch<>'') And (Verifier(ch)); WRITELN(F,ch); End; Close(F); End; (*************************************************) Function DIV13(N:String) : Boolean; Var S,Sg,V,e : integer; Begin S := 0; Sg := -1; While (Length(N)>=3) Do Begin VAL(Copy(N,Length(N)-2,3),V,e); S := S+V*Sg; Sg := -Sg; Delete(N,Length(N)-2,3); End; VAL(N,V,e); S := S+V*Sg; DIV13 := (ABS(S) Mod 13 = 0); End; (*************************************************) Function DIV7(ch:String) : Boolean; Var S,P1,P2,P3,U,D,C,e : integer; ch1 : String; Begin Repeat //Ajustement pour que la taille devient un multiple de 3 While (Length(ch) Mod 3 <> 0) Do ch := '0'+ch; P1 := 1; P2 := 3; P3 := 2; //P : Période S := 0; Repeat ch1 := Copy(ch,Length(ch)-2,3); Delete(ch,Length(ch)-2,3); VAL(ch1[3],U,e); //U : Unité VAL(ch1[2],D,e); //D: Dizaine VAL(ch1[1],C,e); //C: Centaine S := S+P1*U+P2*D+P3*C; P1 := -P1; P2 := -P2; P3 := -P3; //1 devient -1 ,3 devient -3 et 2 devient -2 Until (ch=''); //writeln('S = ',S); STR(S,ch); Until (Length(ch)=1); //La somme est formée d'un seul chiffre (Condition d'arrêt) DIV7 := (S In [0,7]); End; (*************************************************) Procedure Eclater(Var FN,F13,F7 : Text); Var ch : String; Begin Reset(FN); Rewrite(F13); Rewrite(F7); While (Not(EOF(FN))) Do Begin READLN(FN,ch); If (DIV13(ch)) Then WRITELN(F13,ch); If (DIV7(ch)) Then WRITELN(F7,ch); End; Close(FN); Close(F13) ; Close(F7); End; (*************************************************) Begin Creation(FN,F13,F7); Saisie(NB); Remplir_Nombre(FN,NB); Eclater(FN,F13,F7); End.
 
Back to top