Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Project12mod;
- {$APPTYPE CONSOLE}
- uses
- SysUtils,
- Windows,
- modulestart;
- var na: ShortInt;
- errN: byte;
- a: matr;
- c: mass;
- fin, fout: Text;
- fl: boolean;
- begin
- fl:=true;
- getConsole();
- checkFiles(fin,fout);
- errN:=checkN(fin,Nname,na);
- errhalt(fin,fout,errN);
- errN:=readInput(fin,Aname,Cname,a,c,na);
- errhalt(fin,fout,errN);
- writeln(fout,'Лабораторная работа №12':20);
- outputForm(fout,Aname,Cname,a,c,na);
- if checksra(sra(a,na),c,na)=true then
- editmatr (a,na,sra(a,na))
- else
- begin
- fl:=false;
- writeln(fout,'Среднее арифметическое СА элементов главной диагонали матрицы не меньше хотя бы одного элемента последовалельности {Сn}.')
- end;
- if fl=true then outputquest(fout,a,na);
- closePr(fin,fout);
- readln
- end.
- unit modulestart;
- interface
- const Nmass=10;
- Aname:string ='A';
- Cname:string ='C';
- Nname:string ='N';
- type mass = array [1..Nmass] of shortint;
- matr = array [1..Nmass,1..Nmass] of real;
- procedure getConsole ();
- procedure checkFiles (var fin,fout: text);
- procedure closePr (var fin,fout: text);
- procedure outputForm(var fout: text;matrname,massname: string;var b: matr;var c: mass;n:shortint);
- procedure errhalt(var fin,fout: text;var errN: byte);
- procedure editmatr(var a: matr; na: shortint;sra: real);
- procedure outputquest(var fout: text; var a: matr; na: shortint);
- function readInput(var fin: text;matrname,massname: string; var b: matr;var c:mass;n: shortint):byte;
- function checkN(var fin: text;nname: string; var n:shortint):byte;
- function sra(var a: matr;na: shortint):real;
- function checksra (sra: real; var c: mass; na: shortint):boolean;
- implementation
- uses
- SysUtils,
- Windows;
- procedure getConsole ();
- begin
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- end;
- procedure checkFiles; //проверка файлов
- begin
- if (ParamCount = 0) then
- begin
- writeln ('Либо программа только скомпилирована, либо к ярлыку не привязаны файлы...');
- readln;
- halt
- end;
- assign(fin,ParamStr(1));
- assign(fout,ParamStr(2));
- Reset(fin);
- Rewrite(fout);
- end;
- function checkN; //проверка N на читабельность и диапазон
- var errN: byte;
- begin
- errN:=0;
- readln(fin, n);
- if (n<1) or (n>Nmass) then
- begin
- writeln(nname, ' выходит за диапазон условленных значений');
- inc(errN)
- end;
- result:=errN;
- end;
- procedure closePr; //банальный выход из программы
- begin
- writeln('...');
- Close(fin);
- Close(fout);
- readln;
- halt
- end;
- procedure outputForm;
- var i,j: shortint;
- begin
- writeln(fout,'Размер матрицы и последовательности(',matrname,',',massname,'): ',n);
- writeln(fout,'Введённая матрица: ');
- writeln(fout,matrname,': ');
- for i:=1 to n do
- begin
- for j:=1 to n do
- write (fout,b[i,j]:3:0,' ');
- writeln(fout)
- end;
- writeln (fout, 'Введённая последовательность: ');
- writeln(fout,massname,': ');
- for i:=1 to n do write(fout,c[i]:3,' ');
- writeln (fout);
- end;
- function readInput; //Считывание матрицы и массива, а также их проверка на диапазон
- var i,j: shortint;
- errN: byte;
- begin
- i:=0;
- errN:=0;
- while (i<n) and (errN=0) do
- begin
- j:=0;
- inc(i);
- while (j<n) and (errN=0) do
- begin
- inc(j);
- read (fin, b[i,j]);
- if (b[i,j]>10) or (b[i,j]<-10) then
- begin
- writeln('Элемент матрицы ',matrname,'[',i,',',j,'] выходит за диапазон условленных значений');
- inc(errN)
- end;
- end;
- readln(fin);
- end;
- i:=0;
- while (i<n) and (errN=0) do
- begin
- inc(i);
- read (fin,c[i]);
- if(c[i]>10) or (c[i]<-10) then
- begin
- writeln('Элемент последовательности ',massname,'[',i,'] выходит за диапазон условленных значений');
- inc(errN)
- end;
- end;
- result:=errN
- end;
- procedure errhalt; // блок ошибок
- begin
- if errN<>0 then
- begin
- writeln('Завершение по причине ошибка');
- closePr(fin,fout)
- end
- end;
- function sra;
- var i: shortint;
- sr: real;
- begin
- sr:=0; i:=0;
- while (i<na) do
- begin
- inc(i);
- sr:=sr+a[i,i]/na
- end;
- result:=sr;
- end;
- function checksra;
- var i: shortint;
- begin
- i:=0;
- result:=true;
- while (i<na) and (result=true) do
- begin
- inc(i);
- if (c[i]<=sra) then result:= false
- end
- end;
- procedure editmatr;
- var i,j: shortint;
- begin
- i:=0;
- while (i<na) do
- begin
- inc(i);
- j:=0;
- while (j<na) do
- begin
- inc(j);
- if a[i,j]>0 then a[i,j]:=a[i,j]+sra
- else if a[i,j]<0 then a[i,j]:=a[i,j]-sra
- end
- end;
- end;
- procedure outputquest;
- var i,j: shortint;
- begin
- writeln (fout,'Среднее арифметическое СА элементов главной диагонали матрицы А меньше каждого из элементов {Cn}');
- writeln(fout,'Отредактированная матрица: ');
- writeln(fout,'А: ');
- for i:=1 to na do
- begin
- for j:=1 to na do
- write (fout,a[i,j]:4:1,' ');
- writeln(fout)
- end;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement