M1RAI

prat_2011

Apr 18th, 2020
652
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. program div11;
  2. uses wincrt;
  3. type
  4. eng=Record
  5. nb_dec:string;
  6. mention:string;
  7. end;
  8. fich=file of eng;
  9. var
  10. ft:text;
  11. fe:fich;
  12. n:byte;
  13.  
  14. procedure saisie(var n:byte);
  15. begin
  16.     Repeat
  17.         write('n=');
  18.         readln(n);
  19.     until n in[1..49];
  20. end;
  21.  
  22. function verif(ch:string):Boolean;
  23. var i:integer;
  24. begin
  25.     i:=1;
  26.     while((ch[i] in ['0'..'9']) OR (Upcase(ch[i]) in ['A'..'Z'])) AND (i <= length(ch)) do
  27.         i:=i+1;
  28.     verif:=i>length(ch);
  29. end;
  30.  
  31.  
  32. procedure rempft(var ft:text ; n:byte);
  33. var
  34. ch:string;
  35. i:byte;
  36. begin
  37.         rewrite(ft);
  38.         for i:=1 to n do
  39.         begin
  40.                 Repeat
  41.                     readln(ch);
  42.                 until (length(ch) <=9) AND (verif(ch));
  43.                 writeln(ft,ch);
  44.         end;
  45.         close(ft);
  46. end;
  47.  
  48. procedure rempfe(var fe:fich; var ft:text);
  49. var
  50. ch,chnum:string;
  51. i,j,spair,simpair,e,e1:integer;
  52. c:byte;
  53. x:eng;  
  54. begin
  55.         reset(ft);
  56.         rewrite(fe);
  57.         while not(eof(ft)) do
  58.         begin
  59.                 readln(ft,ch);
  60.                 spair:=0;
  61.                 simpair:=0;
  62.                 for i:=1 to length(ch) do
  63.                     if ch[i] in ['0'..'9'] then chnum := chnum + ch[i];
  64.                 for j:=1 to length(chnum) do
  65.                     if chnum[j] in ['0','2','4','6','8']
  66.                     then
  67.                     begin
  68.                             val(chnum[j],c,e);
  69.                             spair:=spair+c;
  70.                     end
  71.                     Else
  72.                     begin
  73.                             val(chnum[j],c,e);
  74.                             simpair:=simpair+c;
  75.                     end;
  76.                     x.nb_dec:=chnum;
  77.                     if abs(spair-simpair) mod 11 = 0 then x.mention:='divisible par 11'
  78.                     else x.mention:='n est pas divisible par 11';
  79.                     if chnum =''
  80.                     then
  81.                     begin
  82.                             x.nb_dec:='1999999999';
  83.                             x.mention:='ce n est pas un nombre decimal';
  84.                     end;
  85.                     write(fe,x);
  86.         end;
  87.         close(fe);
  88.         close(ft);
  89. end;
  90.  
  91.  
  92. procedure aff(var fe:fich);
  93. var
  94. x:eng;
  95. begin
  96.     reset(fe);
  97.     while not(eof(fe)) do
  98.     begin
  99.             read(fe,x);
  100.             writeln(x.nb_dec,'  ',x.mention);
  101.     end;
  102. end;
  103.  
  104. begin
  105. assign(ft,'C:\Pascal\prat_2011\chaines.txt');
  106. assign(fe,'C:\Pascal\prat_2011\nombres.dat');
  107. saisie(n);
  108. rempft(ft,n);
  109. rempfe(fe,ft);
  110. aff(fe);
  111. end.
RAW Paste Data