Pohuyumer

Lab 10

Jan 14th, 2020
118
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  program Project10;
  2. {Задан целочисленный одномерный массив A из N элементов. Найти минимальное значение
  3. положительных элементов, расположенных после первого элемента кратного пяти. Если нет
  4. элементов кратных 5, искать с начала массива. (Подсказка: «Сначала найти первый со
  5. значением, кратным 5, и последний положительный, а затем уже искать минимум либо
  6. вывести сообщение о причинах невозможности поиска.»)}
  7.  
  8. {$APPTYPE CONSOLE}
  9.  
  10. uses
  11.   System.SysUtils,
  12.   Windows;
  13.  
  14. const b=30;
  15. type mass = array[1..b] of integer;
  16.  
  17. procedure input {schit} (var x:mass; var n:integer; var file_in:textfile);
  18. var i:integer;
  19.  
  20.   begin
  21.     for i := 1 to n do
  22.     read(file_in,x[i]);
  23.   end;
  24.  
  25. procedure w {mod5} (const x:mass; const n:integer; out i1:integer);
  26. var i:integer;
  27. flag:boolean;
  28.  
  29.      begin
  30.       flag:=true;
  31.        i1:=0;
  32.         for i := 1 to n do
  33.         begin
  34.           if (x[i] mod 5 = 0) and (flag=true) then
  35.  
  36.            begin
  37.  
  38.             i1:=i;
  39.             flag:=false;
  40.  
  41.             end;
  42.         end;
  43.      end;
  44.  
  45. procedure e {usl} (const x:mass; const n:integer; out posl:integer);
  46. var i:integer;
  47.  
  48.   begin
  49.       posl:=0;
  50.       for i := 1 to n do
  51.  
  52.    begin
  53.      if x[i] > 0  then posl:=i;
  54.    end;
  55.   end;
  56.  
  57. procedure r {i1<posl} (const x:mass; const n:integer; const posl:integer; out i2,g:integer; var i1:integer; var file_out:textfile);
  58. var i:integer;
  59.  
  60.    begin
  61.  
  62.   i2:=i1+1;
  63.   g:=x[posl];
  64.  
  65.        for i := i2 to posl do
  66.  
  67.        begin
  68.        if (g > x[i]) and (x[i]>0) then
  69.  
  70.        g:=x[i];
  71.        end;
  72.  
  73.       writeln(file_out, '-------------');
  74.       writeln(file_out, i1, ' nomer pervogo kratnogo 5');
  75.       writeln(file_out, posl, ' nomer poslednego polozhitelnogo');
  76.       writeln(file_out, '-------------');
  77.       writeln(file_out,g, ' minimalnoe znachenie polozhitelnyh elementov, raspolozhennyh posle pervogo elementa kratnogo 5');
  78.       write('...');
  79.   end;
  80.  
  81. procedure t {else} (out file_out:textfile);
  82.  
  83.  
  84.     begin
  85.       writeln(file_out, '-------------');
  86.       writeln(file_out, 'elementy, raspolozhennye posle pervogo elementa, kratnogo 5 ne naideny');
  87.       write('...');
  88.     end;
  89.  
  90. procedure output {vivod nachalnogo massiva} (const x:mass; const n:integer; var file_out:textfile);
  91.   var i:integer;
  92.  
  93.   begin
  94.     writeln(file_out, 'massiv');
  95.     for i:=1 to n do
  96.     write(file_out,x[i],' ');
  97.     writeln(file_out);
  98.   end;
  99.  
  100. procedure close {closefile} (out file_in,file_out:textfile);
  101.  
  102.   begin
  103.     closefile(file_in);
  104.     closefile(file_out);
  105.     readln;
  106.   end;
  107.  
  108. procedure param(var file_in,file_out:textfile);
  109.  
  110.  begin
  111.   assignfile(file_in, paramstr(1));
  112.   reset(file_in);
  113.   assignfile(file_out, paramstr(2));
  114.   rewrite(file_out);
  115.  end;
  116.  
  117.  
  118. var
  119. x:mass;
  120. n,i,i1{номер первого кратного 5},i2,posl{номер последнего положительного}:integer;
  121. g{минимальное  значение положительных элементов, расположенных после первого элемента, кратного пяти}:integer;
  122. file_in, file_out:textfile;
  123.  
  124.  
  125.  begin
  126.  
  127.   param(file_in,file_out);
  128.  
  129.   readln(file_in,n);
  130.  
  131.   if (n>30) or (n<1)then
  132.   writeln(file_out, 'nekorrektnoe kolichestvo elementov massiva')
  133.   else
  134.  
  135.  begin
  136.  
  137.   input(x,n,file_in);
  138.  
  139.   output(x,n,file_out);
  140.  
  141.   w(x,n,i1);
  142.  
  143.   e(x,n,posl);
  144.  
  145.   if i1<posl then
  146.  
  147.   r(x,n,posl,i2,g,i1,file_out)
  148.  
  149.   else
  150.  
  151.   t(file_out);
  152.  
  153.    end;
  154.    close(file_in, file_out);
  155. end.
RAW Paste Data