Drop Down MenusCSS Drop Down MenuPure CSS Dropdown Menu

samedi 25 avril 2020

Baccalauréat 2011 SI Sujet 2 Corrigé

Program S2; Uses crt; Var m,n,i,nb,a,K : integer; chk,ch,ligne : string; ok : boolean; f : text; //***************************************** Function premiersuivant(j:integer) : integer; Var v : boolean; n,k : integer; Begin n := j; Repeat n := n+1; k := 2; V := true; While (k<=n Div 2) And (v) Do If (n Mod k=0) Then v := false Else k := k+1; Until (v); premiersuivant := n; End; //***************************************** Function decomp(a:integer) : string; Var j : integer; ligne,chj,cha : string; Begin str(a,cha); ligne := ''; j := 2; While (a>1) Do Begin If ( a Mod j=0) Then Repeat str(j,chj); ligne := ligne+chj+'*'; a := a Div j Until (a Mod j<>0); j := premiersuivant(j); End; delete(ligne,length(ligne),1); decomp := ligne; End; //***************************************** Function sommechiffre(a:integer) : integer; Var cha : string; v,e,s : integer; Begin str(a,cha); s := 0; For i:=1 To length(cha) Do Begin val(cha[i],v,e); s := s+v; End; sommechiffre := s; End; //***************************************** Function some_fact_prem(ch:String) : integer; Var v,e,sch : integer; ch1 : string; Begin sch := 0; ch := ch+'*'; While (pos('*',ch)<>0) Do Begin ch1 := copy(ch,1,pos('*',ch)-1); If (length(ch1)=1) Then val(ch1,v,e) Else Begin val(ch1,v,e); v := sommechiffre(v); End; sch := sch+v; delete(ch,1,pos('*',ch)); End; some_fact_prem := sch; End; //***************************************** Procedure rigolo(a:integer;Var ch:String;Var ok:boolean); Var s,sch : integer; Begin s := sommechiffre(a); ch := decomp(a); sch := some_fact_prem(ch); If (s=sch) Then ok := true Else ok := false; End; //***************************************** Procedure affiche(Var f:text); Var ligne : string; Begin reset(f); While (Not(eof(f))) Do Begin readln(f,ligne); writeln(ligne); End; End; //***************************************** Begin assign(f,'resultat.txt'); rewrite(f); Repeat write('Donner M: '); readln(m); write('Donner N: '); readln(n); Until (m>100) And (m<n) And (n<1000); nb := 0; For k:=m To n Do Begin rigolo(k,ch,ok); If (ok) Then Begin nb := nb+1; str(k,chk); ligne := chk+'= '+ch+' est un nombre rigolo.'; writeln(ligne); readln; writeln(f,ligne); End; End; clrscr; If (nb=0) Then writeln('Il n''y a aucun nombre rigolo.') Else Begin writeln(' Les nombres rigolo entre [',m,',',n,'] sont: '); writeln; writeln('---------------------------------------------------------'); writeln; affiche(f); End; close(f); End.
 
Back to top