gotoxy (1,24);
writeln ('Для перехода укажите номер страницы (от 1 до 6). ');
writeln ('Для возврата в меню нажмите Esc. Для вывода справки нажмите цифру 0. ');
end;
procedure menuSpravki;
begin
clrscr;
textcolor (9);
TextBackground (0);
gotoxy (1,23);
writeln ('------------------------------------------------------------------------');
gotoxy (1,24);
writeln ('Для возврата назад нажмите "1". ');
writeln ('Для возврата в меню нажмите (Esc). ');
end;
procedure menuPrimera;
begin
clrscr;
textcolor (9);
TextBackground (0);
gotoxy (1,23);
writeln ('------------------------------------------------------------------------');
gotoxy (1,24);
writeln ('Для перехода укажите номер страницы (от 1 до 4). ');
writeln ('Для вывода справки нажмите "0". Для входа в меню нажмите (Esc). ');
end;
procedure Spravka;
var n: char; {номер страницы}
begin
menuSpravki;
gotoxy (1,1);
LoadFile ('A: Spravka1. txt');
repeat
n: =readkey; until n in ['1',#27] ;
case n of
'1': begin
end;
end;
end;
procedure Teoria;
var n: char; {номер страницы}
begin
menuTeorii;
gotoxy (1,1);
writeln ('страница 1');
LoadFile ('A: Text1. txt');
repeat
repeat n: =readkey; until n in ['0'. '6',#27] ;
case n of
'1': begin
menuTeorii;
gotoxy (1,1);
writeln ('страница 1');
LoadFile ('A: Text1. txt');
end;
'2': begin
menuTeorii;
gotoxy (1,1);
writeln ('страница 2');
LoadFile ('A: Text2. txt');
end;
'3': begin
menuTeorii;
gotoxy (1,1);
writeln ('страница 3');
LoadFile ('A: Text3. txt');
end;
'4': begin
menuTeorii;
gotoxy (1,1);
writeln ('страница 4');
LoadFile ('A: Text4. txt');
end;
'5': begin
menuTeorii;
gotoxy (1,1);
writeln ('страница 5');
LoadFile ('A: Text5. txt');
end;
'6': begin
menuTeorii;
gotoxy (1,1);
writeln ('страница 6');
LoadFile ('A: Text6. txt');
end;
'0': begin
Spravka;
gotoxy (1,1);
LoadFile ('A: Spravka1. txt');
end;
end;
until n=#27;
end;
procedure grafic (a1,b1,c1,a2,b2,c2,xc,yc: real);
var
minx,maxx,miny,maxy: real;
mx,my: real;
x1,y1,x2,y2: integer;
x0,y0: integer;
grDriver: Integer;
grMode: Integer;
ErrCode: Integer;
begin
grDriver: = Detect;
InitGraph (grDriver, grMode,'c: \bps\bin\egavga. bgi');
ErrCode: = GraphResult;
if ErrCode = grOk then
begin
minx: =xc-2*xc;
maxx: =xc+2*xc;
miny: =yc-2*yc;
maxy: =yc+2*yc;
mx: =getmaxx;
mx: =mx/ (maxx-minx);
my: =getmaxy/ (maxy-miny);
y0: =round (abs (xc) *mx);
x0: =round (abs (yc) *my);
setcolor (white);
line (x0,0,x0,getmaxy);
line (0,y0,getmaxx,y0);
setcolor (red);
x1: =x0+round (minx*mx);
y1: =y0-round ( (c1-a1*minx) /b1*my);
x2: =x0+round (maxx*mx);
y2: =y0-round ( (c1-a1*maxx) /b1*my);
line (x1,y1,x2,y2);
setcolor (yellow);
x1: =x0+round (minx*mx);
y1: =y0-round ( (c2-a2*minx) /b2*my);
x2: =x0+round (maxx*mx);
y2: =y0-round ( (c2-a2*maxx) /b2*my);
line (x1,y1,x2,y2);
Readkey;
CloseGraph;
end
else
Writeln ('Ошибка работы с графикой: ', GraphErrorMsg (ErrCode));
end;
{$S-}
procedure vvod (var x: real; var code: integer);
var s: string;
begin
readln (s);
val (s,x,code);
if code<>0 then
writeln ('Ошибка, повторите ввод');
end;
procedure vvod1 (var n: integer);
var s: string;
code: integer;
begin
repeat
write ('Введите количество элементов матрицы');
readln (s);
val (s,n,code);
if (code<>0) or (N<0) or (N>Nmax) then
writeln ('Ввод не верный. Повторите ввод... ');
until (N>0) and (N<=Nmax) and (code=0);
end;
procedure Rewenie;
var
x: array [1. Nmax] of real;
A: array [1. Nmax,
1. Nmax] of real;
B: array [1. Nmax] of real;
N, i, ii,j,l,Rez,kol: integer;
k,S: real;
f,f1: text;
code: integer;
c: char;
Name: string;
Begin
assign (f,'otvet. txt');
rewrite (f);
clrscr;
gotoxy (30,12);
writeln ('1-Ввод с клавиатуры');
gotoxy (32,13);
writeln ('2-Ввод с файла');
gotoxy (28,14);
writeln ('3-Выход в основное меню');
repeat c: =readkey; until c in ['1','2','3'] ;
if c='3' then
begin
readkey;
exit;
end;
if c='1' then
begin
vvod1 (n);
writeln ('введите матрицу коэфициентов');
for i: =1 to n do
begin
for j: =1 to N do
repeat
write ('A [', i,',',j,'] =');
vvod (A [i,j],code);
until code=0;
repeat
write ('B [', i,'] =');
vvod (B [i],code);
until code=0;
end;
end
else
begin
writeln ('Задайте имя файла');
readln (Name);
assign (f1,Name);
{$I-}
reset (f);
code: =Ioresult;
if code<>0 then
begin
writeln ('Ошибка. Файл не найден! ');
writeln ('Для выхода в основное меню нажмите любую клавишу. ');
readkey;
exit;
end
else
begin
readln (f1,n);
if Ioresult<>0 then
begin
writeln ('Ошибка чтения из файла! Для выхода в основное меню нажмите любую клавишу. ');
readkey;
exit;
end;
for i: =1 to n do
begin
for j: =1 to N do
begin
read (f1,a [i,j]);
if Ioresult<>0 then
begin
writeln ('Ошибка чтения из файла! Для выхода в основное меню нажмите любую клавишу. ');
readkey;
exit;
end;
end;
read (f1,b [i]);
if Ioresult<>0 then
begin
writeln ('Ошибка чтения из файла! Для выхода в основное меню нажмите любую клавишу. ');
readkey;
exit;
end;
end;
end;
close (f1);
end;
clrscr;
writeln (f,'Исходная матрица: ');
writeln ('Исходная матрица: ');
for i: =1 to N do
begin
for j: =1 to N do
begin
write (A [i,j]: 10: 4);
write (f,A [i,j]: 10: 4);
end;
writeln (' I',B [i]: 10: 4);
writeln (f,' I',B [i]: 10: 4);
end;
for i: =1 to N-1 do begin
for l: =i+1 to N do begin
if a [l, i] =0 then
begin
writeln ('Преобразования матрицы на ', i,'-м шаге выполнить нельзя! ');
writeln ('Диагональный элемент равен 0! ');
writeln (f,'Преобразования матрицы на ', i,'-м шаге выполнить нельзя! ');
writeln (f,'Диагональный элемент равен 0! ');
readkey;
exit;
end;
k: =-A [i, i] /a [l, i] ;
for j: =1 to n do
A [l,j]: =A [l,j] *k+A [i,j] ;
B [l]: =B [l] *k+B [i] ;
end;
writeln;
writeln ('Преобразования матрицы на ', i,'-м шаге');
writeln (f);
writeln (f,'Преобразования матрицы на ', i,'-м шаге');
for ii: =1 to N do
begin
for j: =1 to N do
begin
write (A [ii,j]: 10: 4);
write (f,A [ii,j]: 10: 4);
end;
writeln (' I',B [i]: 10: 4);
writeln (f,' I',B [i]: 10: 4);
end;
readkey;
writeln;
writeln;
writeln (f);
writeln (f);
end;
rez: =1;
for i: =1 to n do
begin
kol: =0;
for j: =1 to N do
if A [i,j] =0 then
kol: =kol+1;
if kol=N then
if B [i] =0 then
begin
Rez: =2;
break;
end
else
begin
Rez: =0;
break;
end;
end;
if rez=1 then
begin
x [N]: =b [n] /a [n,n] ;
for i: =N-1 downto 1 do
begin
S: =0;
for j: =i+1 to N do
S: =S+x [j] *A [i,j] ;
x [i]: = (B [i] -S) /A [i,j] ;
end;
writeln ('Преобразованная матрица');
writeln (f,'Преобразованная матрица');
for i: =1 to N do
begin
for j: =1 to N do
begin
write (A [i,j]: 10: 4);
write (f,A [i,j]: 10: 4);
end;
writeln (' I',B [i]: 10: 4);
writeln (f,' I',B [i]: 10: 4);
end;
writeln ('Вектор ответов');
writeln (f,'Вектор ответов');
for i: =1 to N do
begin
writeln ('x [', i,'] =',x [i]: 10: 4);
writeln (f,'x [', i,'] =',x [i]: 10: 4);
end;
if N=2 then
begin
writeln ('Нажмите любую клавишу для просмотра графика');
readkey;
grafic (a [1,1],a [1,2],b [1],a [2,1],a [2,2],b [2],x [1],x [2]);
end;
end
else
if rez=0 then
begin
writeln ('Решений бесконечное множество');
writeln (f,'Решений бесконечное множество');
end
else
begin
writeln ('Решений НЕТ');
writeln (f,'Решений НЕТ');
end;
readkey;
close (f);
end;
procedure Primer;
varn: char; {номер страницы}
begin
menuPrimera;
gotoxy (1,1);
writeln ('страница 1');
LoadFile ('A: Primer1. txt');
repeat
repeat n: =readkey; until n in ['0'. '4',#27] ;
case n of
'1': begin
menuPrimera;
gotoxy (1,1);
writeln ('страница 1');
LoadFile ('A: Primer1. txt');
end;
'2': begin
menuPrimera;
gotoxy (1,1);
writeln ('страница 2');
LoadFile ('A: Primer2. txt');
end;
'3': begin
menuPrimera;
gotoxy (1,1);
writeln ('страница 3');
LoadFile ('A: Primer3. txt');
end;
'0': begin
Spravka;
gotoxy (1,1);
LoadFile ('A: Spravka1. txt');
end;
'4': begin
menuPrimera;
gotoxy (1,1);
writeln ('страница 4');
LoadFile ('A: Primer4. txt');
end;
end;
until n=#27;
end;
procedure Vuxod;
begin
exit;
end;
Begin
repeat
menu;
repeat ch: =readkey;
until ch in ['1'. '5'] ;
case ch of
'1': Teoria;
'2': Primer;
'3': Rewenie;
'4': Spravka;
'5': Vuxod;
end;
until ch='5';
end.