Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 5.64 KB | None | 0 0
  1. program Project12mod;
  2. {$APPTYPE CONSOLE}
  3. uses
  4.   SysUtils,
  5.   Windows,
  6.   modulestart;
  7. var na: ShortInt;
  8.     errN: byte;
  9.     a: matr;
  10.     c: mass;
  11.     fin, fout: Text;
  12.     fl: boolean;
  13. begin
  14.   fl:=true;
  15.   getConsole();
  16.   checkFiles(fin,fout);
  17.   errN:=checkN(fin,Nname,na);
  18.   errhalt(fin,fout,errN);
  19.   errN:=readInput(fin,Aname,Cname,a,c,na);
  20.   errhalt(fin,fout,errN);
  21.   writeln(fout,'Лабораторная работа №12':20);
  22.   outputForm(fout,Aname,Cname,a,c,na);
  23.   if checksra(sra(a,na),c,na)=true then
  24.   editmatr (a,na,sra(a,na))
  25.     else
  26.       begin
  27.       fl:=false;
  28.       writeln(fout,'Среднее арифметическое СА элементов главной диагонали матрицы не меньше хотя бы одного элемента последовалельности {Сn}.')
  29.       end;
  30.   if fl=true then outputquest(fout,a,na);
  31.   closePr(fin,fout);
  32.   readln
  33. end.
  34.  
  35. unit modulestart;
  36. interface
  37. const Nmass=10;
  38.       Aname:string ='A';
  39.       Cname:string ='C';
  40.       Nname:string ='N';
  41. type  mass = array [1..Nmass] of shortint;
  42.       matr = array [1..Nmass,1..Nmass] of real;
  43. procedure getConsole ();
  44. procedure checkFiles (var fin,fout: text);
  45. procedure closePr (var fin,fout: text);
  46. procedure outputForm(var fout: text;matrname,massname: string;var b: matr;var c: mass;n:shortint);
  47. procedure errhalt(var fin,fout: text;var errN: byte);
  48. procedure editmatr(var a: matr; na: shortint;sra: real);
  49. procedure outputquest(var fout: text; var a: matr; na: shortint);
  50. function readInput(var fin: text;matrname,massname: string; var b: matr;var c:mass;n: shortint):byte;
  51. function checkN(var fin: text;nname: string; var n:shortint):byte;
  52. function sra(var a: matr;na: shortint):real;
  53. function checksra (sra: real; var c: mass; na: shortint):boolean;
  54. implementation
  55. uses
  56.   SysUtils,
  57.   Windows;
  58. procedure getConsole ();
  59.   begin
  60.   SetConsoleCP(1251);
  61.   SetConsoleOutputCP(1251);
  62.   end;
  63. procedure checkFiles;    //проверка файлов
  64.   begin
  65.   if (ParamCount = 0) then
  66.     begin
  67.     writeln ('Либо программа только скомпилирована, либо к ярлыку не привязаны файлы...');
  68.     readln;
  69.     halt
  70.     end;
  71.   assign(fin,ParamStr(1));
  72.   assign(fout,ParamStr(2));
  73.   Reset(fin);
  74.   Rewrite(fout);
  75.   end;
  76. function checkN;    //проверка N на читабельность и диапазон
  77. var errN: byte;
  78.   begin
  79.   errN:=0;
  80.   readln(fin, n);
  81.   if (n<1) or (n>Nmass) then
  82.     begin
  83.     writeln(nname, ' выходит за диапазон условленных значений');
  84.     inc(errN)
  85.     end;
  86.   result:=errN;
  87.   end;
  88.  
  89. procedure closePr;     //банальный выход из программы
  90.   begin
  91.   writeln('...');
  92.   Close(fin);
  93.   Close(fout);
  94.   readln;
  95.   halt
  96.   end;
  97.  
  98. procedure outputForm;
  99. var i,j: shortint;
  100.   begin
  101.   writeln(fout,'Размер матрицы и последовательности(',matrname,',',massname,'): ',n);
  102.   writeln(fout,'Введённая матрица: ');
  103.   writeln(fout,matrname,': ');
  104.   for i:=1 to n do
  105.     begin
  106.     for j:=1 to n do
  107.       write (fout,b[i,j]:3:0,' ');
  108.     writeln(fout)
  109.     end;
  110.   writeln (fout, 'Введённая последовательность: ');
  111.   writeln(fout,massname,': ');
  112.   for i:=1 to n do write(fout,c[i]:3,' ');
  113.   writeln (fout);
  114.   end;
  115. function readInput;   //Считывание матрицы и массива, а также их проверка на диапазон
  116. var i,j: shortint;
  117.   errN: byte;
  118.   begin
  119.   i:=0;
  120.   errN:=0;
  121.   while (i<n) and (errN=0) do
  122.     begin
  123.     j:=0;
  124.     inc(i);
  125.       while (j<n) and (errN=0) do
  126.       begin
  127.       inc(j);
  128.       read (fin, b[i,j]);
  129.       if (b[i,j]>10) or (b[i,j]<-10) then
  130.         begin
  131.         writeln('Элемент матрицы ',matrname,'[',i,',',j,'] выходит за диапазон условленных значений');
  132.         inc(errN)
  133.         end;
  134.       end;
  135.     readln(fin);
  136.     end;
  137.   i:=0;
  138.   while (i<n) and (errN=0) do
  139.     begin
  140.     inc(i);
  141.     read (fin,c[i]);
  142.     if(c[i]>10) or (c[i]<-10) then
  143.       begin
  144.       writeln('Элемент последовательности ',massname,'[',i,'] выходит за диапазон условленных значений');
  145.       inc(errN)
  146.       end;
  147.     end;
  148.   result:=errN
  149.   end;
  150. procedure errhalt;      // блок ошибок
  151.   begin
  152.   if errN<>0 then
  153.     begin
  154.     writeln('Завершение по причине ошибка');
  155.     closePr(fin,fout)
  156.     end
  157.   end;
  158. function sra;
  159. var i: shortint;
  160.     sr: real;
  161.   begin
  162.   sr:=0; i:=0;
  163.   while (i<na) do
  164.     begin
  165.     inc(i);
  166.     sr:=sr+a[i,i]/na
  167.     end;
  168.   result:=sr;
  169.   end;
  170. function checksra;
  171. var i: shortint;
  172.   begin
  173.   i:=0;
  174.   result:=true;
  175.   while (i<na) and (result=true) do
  176.     begin
  177.     inc(i);
  178.     if (c[i]<=sra) then result:= false
  179.     end
  180.   end;
  181. procedure editmatr;
  182. var i,j: shortint;
  183.   begin
  184.   i:=0;
  185.   while (i<na) do
  186.     begin
  187.     inc(i);
  188.     j:=0;
  189.     while (j<na) do
  190.       begin
  191.       inc(j);
  192.       if a[i,j]>0 then a[i,j]:=a[i,j]+sra
  193.         else if a[i,j]<0 then a[i,j]:=a[i,j]-sra
  194.       end
  195.     end;
  196.   end;
  197. procedure outputquest;
  198. var i,j: shortint;
  199.   begin
  200.   writeln (fout,'Среднее арифметическое СА элементов главной диагонали матрицы А меньше каждого из элементов {Cn}');
  201.   writeln(fout,'Отредактированная матрица: ');
  202.   writeln(fout,'А: ');
  203.   for i:=1 to na do
  204.     begin
  205.     for j:=1 to na do
  206.       write (fout,a[i,j]:4:1,' ');
  207.     writeln(fout)
  208.     end;
  209.   end;
  210. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement