Консультация № 191376
24.09.2017, 08:09
0.00 руб.
0 36 1
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
Решение системы линейных уравнений методом Крамера. Размер системы параметр n<=10
Можете помочь реализовать пожалуйста?

Обсуждение

давно
Старший Модератор
31795
6196
25.09.2017, 13:02
общий
Адресаты:
показывайте свой код, проще показать, где ошибки в коде, человеку, который его написал, чем написанный с нуля чужой код объяснить. Т.к. я к примеру не знаю уровень Ваших знаний, а тут можно такое с указателями на воротить.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
399158
228
25.09.2017, 13:05
общий
http://resheno.blogspot.ru/2009/06/26001750.html вот, я тут взял)
давно
Старший Модератор
31795
6196
25.09.2017, 13:59
общий
Адресаты:
Т.е. это не Ваш код
[code lang=pascal h=300]const n = 3; { размерность матрицы }
type matr = array[1..n, 1..n] of longint;
procedure GetMatr(a:matr; var b:matr; m,i,j:integer);
{ Вычеркивание из матрицы строки и столбца }
var ki,kj,di,dj:integer;
begin
di:=0;
for ki:=1 to m-1 do
begin
if (ki=i) then di:=1;
dj:=0;
for kj:=1 to m-1 do
begin
if (kj=j) then dj:=1;
b[ki,kj]:=a[ki+di,kj+dj];
end;
end;
end;
Function Determinant(a: matr; n: integer) : longint;
{ Вычисление определителя матрицы }
var i,j,d,k:longint;
b:matr;
begin
d:=0; k:=1;
if (n<1) then
begin
writeln('Determinant: Cann''t run. N=',n); halt;
end;
if (n=1)
then d:=a[1,1]
else if (n=2)
then d:=a[1,1]*a[2,2]-a[2,1]*a[1,2]
else { n>2 }
for i:=1 to n do
begin
GetMatr(a,b,n,i,1);
{writeln('i=',i,' a[',i,',1]=',a[i,1]);
PrintMatr(b,n-1);}
d:=d+k*a[i,1]*Determinant(b,n-1);
k:=-k;
end;
Determinant:=d;
end;
var
a: matr;
b: array [1..n] of integer;
i, j, dt: longint;
temp: integer;
x: real;
begin
{ Заполнение матриц }
a[1, 1]:=2; a[2, 1]:= 5; a[3, 1]:=4; b[1]:=30;
a[1, 2]:=1; a[2, 2]:= 3; a[3, 2]:=2; b[2]:=150;
a[1, 3]:=2; a[2, 3]:= 10; a[3, 3]:=9; b[3]:=110;
{ Вычисление определителя }
dt := Determinant(a, n);
for i:=1 to n do begin
{меняем местами b с текущим стоблцом матрицы a}
for j:=1 to n do begin
temp := b[j];
b[j] := a[i, j];
a[i, j] := temp;
end;
x:=Determinant(a, n) / dt;
writeln('x(', i, ') = ', x:3:0); {поменяйте на нужный формат вывода}
{назад: меняем местами b с текущим стоблцом матрицы a}
for j:=1 to n do begin
temp := b[j];
b[j] := a[i, j];
a[i, j] := temp;
end;
end;
end.[/code]
А уровень Ваших знаний какой?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
25.09.2017, 15:03
общий
Адресаты:
Попробуйте разобраться с этим участком кода и поставить комментарии:
[code lang=asm h=200]var
a,b,t,x:^integer;
c,d,e:integer;
begin
repeat
write('Enter matrix size:');
readln(e);
until e>0;
{}
GetMem(a,e*e);
t:=a;
for c:=1 to e do
for d:=1 to e do
begin
write('Enter A[',c,',',d,']:');
readln(t^);
inc(t);
end;
{}
t:=a;
for c:=1 to e do
begin
for d:=1 to e do
begin
write(t^:5);
inc(t);
end;
writeln;
end;
FreeMem(a,e*e);
end.[/code]
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
399158
228
25.09.2017, 15:17
общий
блин, трудно с указателями этими)) можете объяснить?)
давно
Старший Модератор
31795
6196
25.09.2017, 15:48
общий
Адресаты:
Цитата: Посетитель - 399158
блин, трудно с указателями этими

Понятно, а как бы Вы сдавали код с нуля.

Массив в памяти расположен последовательно, следующим образом(к примеру по адресу 1000):
1000 а11
1002 а12
1004 а13
1006 а21
1008 а22
и т.д.

Сам по себе указатель представляет адрес, переменная тоже адрес, но компилятор навязывает ей еще и тип, т.е. длину в байтах, которая ей выделяется в памяти. Указатели есть двух видов:
-типизованные (принадлежат определенному типу и компилятор работая с ним применяет методы характерные для этого типа, к примеру как в программе -^integer указатель на переменную целого типа;
- не типизованные - pointer.
Попробуйте теперь написать комментарии.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
399158
228
25.09.2017, 15:53
общий
Код:

var
a,b,t,x:^integer; //типизированные указатели типа int
c,d,e:integer;
begin
repeat
write('Enter matrix size:'); //вводим размер n параметр
readln(e);
until e>0;
{}
GetMem(a,e*e); //тут что звездочка означает?
t:=a;
for c:=1 to e do
for d:=1 to e do
begin
write('Enter A[',c,',',d,']:');
readln(t^); //обращаемся к памяти?
inc(t);
end;
{}
t:=a;
for c:=1 to e do
begin
for d:=1 to e do
begin
write(t^:5); //обращаемся к памяти?
inc(t);
end;
writeln;
end;
FreeMem(a,e*e); // и тут
end.
давно
Старший Модератор
31795
6196
25.09.2017, 17:05
общий
25.09.2017, 17:11
Адресаты:
Цитата: Посетитель - 399158
//тут что звездочка означает?


Работу этих двух подпрограмм нужно будет Вам основательно изучить, т.к. работа с динамикой в основном построена на них.
GetMem (процедура)
Создает динамическую переменную определенного размера и записывает ее адрес
в памяти в указательную переменную.

Объявление:
Procedure GetMem(Var P : Pointer; Size : Word);
Замечания:
Параметр P - переменная любого указательного типа. Параметр Size - выражение, определяющее размер динамической переменной в байтах. Недавно созданная переменная может быть вызвана как P^. Если в куче недостаточно свободного пространства для распределения динамической переменной, то происходит ошибка во время выполнения программы.

Ограничения:
Самый большой блок, который может быть безопасно распределен в куче равен 65,528 байт (64K-$8).

FreeMem (процедура)
Освобождает память, занятую динамической переменной данного размера.

Объявление:
Procedure FreeMem(Var P : Pointer; Size : Word);

Замечания:
Параметр P - переменная любого указательного типа, предварительно распределенная в памяти процедурой GetMem или та, которой было присвоено значение оператором присваивания. Параметр Size - выражение, определяющее размер динамической переменной в байтах, память, занимаемую которой нужно освободить. Он должен быть равен числу байт, предварительно распределенных для этой переменной процедурой GetMem. Процедура FreeMem уничтожает переменную, связанную с P и освобождает память, занимаемую этой переменной. Если P не указывает на область памяти в куче, то происходит ошибка во время выполнения программы. После обращения к FreeMem, значение P становится неопределенным и если вы впоследствии пытаетесь сослаться на P^, то происходит ошибка.



Там ошибка, еще должна быть двойка, размер элемента типа integer. Но для данной учебной программы, это пока роли не играет, т.к. в куче эта матрица только одна и она ничего не гробит.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
399158
228
25.09.2017, 17:08
общий
ооо, спасибо, а можете всю программе вместе с методам в одном файле скинуть?
давно
Посетитель
399158
228
25.09.2017, 22:00
общий
сможете все в одном сделать?
давно
Старший Модератор
31795
6196
26.09.2017, 14:24
общий
это ответ
Здравствуйте, Посетитель - 399158!
Смотрите приложение:
[code lang=pascal h=250]function det(a:pointer;b:integer):integer;
var
c:pointer;
t,f:^integer;
d,k,k0,i,j,ji:integer;
begin
t:=a;
k:=1;
d:=t^;
if b>1 then
begin
GetMem(c,(b-1)*(b-1)*2);
d:=0;
for i:=1 to b do
begin
f:=c;t:=a;
for j:=1 to b do begin if i=j then k0:=t^;inc(t);end;
for j:=1 to b-1 do
for ji:=1 to b do
if ji=i then inc(t)
else begin f^:=t^;inc(t);inc(f);end;
d:=d+k*k0*det(c,b-1);
k:=-k;
end;
FreeMem(c,(b-1)*(b-1)*2);
end;
det:=d;
end;
var
a,b,x:pointer;
t,f:^integer;
c,d,detA,e,g,i,j:integer;
begin
repeat write('Enter matrix size:');readln(e);until e>0;
GetMem(a,e*e*2);
t:=a;
writeln('Enter A:');
for c:=1 to e do
for d:=1 to e do
begin
write('A[',c,',',d,']:=');
readln(t^);
inc(t);
end;
detA:=det(a,e);
writeln('determinant=',detA);
if detA=0 then writeln('the determinant of the matrix is zero')
else
begin
GetMem(b,e*2);
t:=b;
writeln('Enter B:');
for c:=1 to e do
begin
write('B[',c,']:=');
readln(t^);
inc(t);
end;
for c:=1 to e do
begin
t:=a;
f:=b;
inc(t,(c-1));
for d:=1 to e do
begin
g:=f^;
f^:=t^;
t^:=g;
inc(t,e);
inc(f);
end;
writeln('x[',c,']:=',det(a,e)/detA);
t:=a;
f:=b;
inc(t,(c-1));
for d:=1 to e do
begin
g:=f^;
f^:=t^;
t^:=g;
inc(t,e);
inc(f);
end;
end;
FreeMem(b,e*2);
end;
FreeMem(a,e*e*2);
end.[/code]
Удачи!
5
Спасибо большое.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
399158
228
26.09.2017, 22:33
общий
А можете коментарии расставить что и где, что уже на верняка понял)
давно
Старший Модератор
31795
6196
27.09.2017, 09:01
общий
Адресаты:
Тут комментировать особо нечего, т.к. зная метод Крамера, можно увидеть, что подпрограмма det рекурсивно вызывается, каждый раз понижая степень минора(в строках 17-20 происходит формирование минора и соответственно вычеркивание строки-столбца), до тех пор, пока размер матрицы не станет равным 1х1. При каждом вызове подпрограммы резервируется память GetMem(c,(b-1)*(b-1)*2); с учетом понижения степени, и соответственно потом освобождается FreeMem(c,(b-1)*(b-1)*2);. Это значение возвращается из подпрограммы, как один из множителей в строке d:=d+k*k0*det(c,b-1);.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
399158
228
27.09.2017, 09:39
общий
http://c2n.me/3O55LCm пишет ошибку такую. как быть?
давно
Старший Модератор
31795
6196
27.09.2017, 11:32
общий
Адресаты:
Блин, а сразу сказать трудно было?
а)можно скачать нормальный дистрибутив паскаля и если ОСь 64-ти битная то и DOSBox.
б)подождать пока перепишу(как только будет время).
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
399158
228
27.09.2017, 11:34
общий
в том то и дело, что я сдавать даже не на своем ноуте буду. может сделать чтобы везде работало?
давно
Старший Модератор
31795
6196
27.09.2017, 12:49
общий
Везде работало, это когда везде стоит одинаковая IDE

[code lang=pascal h=250]function det(a:array of integer;b:integer):integer;
var
c:array of integer;
a0,c0:integer;
d,k,k0,i,j,ji:integer;
begin
a0:=0;
k:=1;//
d:=a[a0];
if b>1 then
begin
c:= new integer[(b-1)*(b-1)];
d:=0;
for i:=1 to b do
begin
c0:=0;a0:=0;
for j:=1 to b do begin if i=j then k0:=a[a0];inc(a0);end;
for j:=1 to b-1 do
for ji:=1 to b do
if ji=i then inc(a0)
else begin c[c0]:=a[a0];inc(a0);inc(c0);end;
d:=d+k*k0*det(c,b-1);
k:=-k;
end;
c:=nil;
end;
det:=d;
end;
var
a,b:array of integer;
a0,b0:integer;
c,d,detA,e,g:integer;
begin
repeat write('Enter matrix size:');readln(e);until e>0;
a:= new integer [e*e];
a0:=0;
writeln('Enter A:');
for c:=1 to e do
for d:=1 to e do
begin
write('A[',c,',',d,']:=');
readln(a[a0]);
inc(a0);
end;
detA:=det(a,e);
writeln('determinant=',detA:10);
if detA=0 then writeln('the determinant of the matrix is zero')
else
begin
b:=new integer[e];
b0:=0;
writeln('Enter B:');
for c:=1 to e do
begin
write('B[',c,']:=');
readln(b[b0]);
inc(b0);
end;
for c:=1 to e do
begin
a0:=0;
b0:=0;
inc(a0,(c-1));
for d:=1 to e do
begin
g:=b[b0];
b[b0]:=a[a0];
a[a0]:=g;
inc(a0,e);
inc(b0);
end;
writeln('x[',c,']:=',det(a,e)/detA);
a0:=0;
b0:=0;
inc(a0,(c-1));
for d:=1 to e do
begin
g:=b[b0];
b[b0]:=a[a0];
a[a0]:=g;
inc(a0,e);
inc(b0);
end;
end;
b:=nil;
end;
a:=nil;
end.[/code]
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
399158
228
01.10.2017, 00:00
общий
еще вопрос, а как быть с этим:
В программе учесть все варианты решения (система имеет линейных уравнений единственное решение, система линейных уравнений имеет множество решений, система линейных уравнений не имеет решений ???
давно
Старший Модератор
31795
6196
02.10.2017, 08:57
общий
Адресаты:
Цитата: Посетитель - 399158
В программе учесть все варианты решения (система имеет линейных уравнений единственное решение, система линейных уравнений имеет множество решений, система линейных уравнений не имеет решений ???


Если запустить любой онлайн-калькулятор(к примеру этот) на такую матрицу А((1,2,3),(4,5,6),(7,8,9)), то детерминант будет нулевым и калькулятор даст:
Ответ: так как детерминант матрицы равен нулю, то система не может быть решена этим методом (система не имеет решений или имеет множество решений).
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
399158
228
02.10.2017, 09:00
общий
а можете комментарии написать к программе, т.к. я не до конца понимаю что где происходит...
давно
Старший Модератор
31795
6196
02.10.2017, 09:26
общий
Адресаты:
В коде все происходит чисто по методу Крамера.
Есть функция которая рекурсивно считает детерминант матрицы с помощью понижения порядка матрицы(миноров), пока порядок больше 1. Для матрицы А(1,1) - детерминант равен самому элементу, после этого все найденные значения подставляются в знакопеременную сумму. Об этом я писал постом выше, там, где есть рисунок показывающий работу программы.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
399158
228
02.10.2017, 09:38
общий
Код:

begin
b:=new integer[e];
b0:=0;
writeln('Enter B:');
for c:=1 to e do
begin
write('B[',c,']:=');
readln(b[b0]);
inc(b0);
end;
for c:=1 to e do
begin
a0:=0;
b0:=0;
inc(a0,(c-1));
for d:=1 to e do
begin
g:=b[b0];//тут можете написать что делаем?
b[b0]:=a[a0];//тут можете написать что делаем?
a[a0]:=g;//тут можете написать что делаем?
inc(a0,e);//тут можете написать что делаем?
inc(b0);//тут можете написать что делаем?
end;
writeln('x[',c,']:=',det(a,e)/detA);
a0:=0;
b0:=0;
inc(a0,(c-1));
for d:=1 to e do
begin
g:=b[b0];
b[b0]:=a[a0];
a[a0]:=g;
inc(a0,e);
inc(b0);
end;
end;
b:=nil; // это мы память освобождает? если да, то зачем
end;
a:=nil; // это мы память освобождает? если да, то зачем
давно
Старший Модератор
31795
6196
02.10.2017, 10:22
общий
Адресаты:
[code lang=pascal] g:=b[b0];//следующие три строчки делают постановку свободных
b[b0]:=a[a0];//членов в i-ый столбец исходной матрицы и запоминание
a[a0]:=g;//самого i-ого столбца, для последующего востановления
inc(a0,e);//переход к следующему элементу столбца
inc(b0);//переход к следующему элементу свободных членов[/code]

Цитата: Посетитель - 399158
это мы память освобождает? если да, то зачем

Правилом хорошего тона считается: взял память, попользовался, освободи.
В учебных программах, это не заметно, но в более менее больших проектах недостаток памяти, может влиять на результат.

Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
399158
228
02.10.2017, 15:28
общий
последний вопрос. сейчс если детерминант 0 - пишет типа the determinant of the matrix is zero
а преподаватель сказал нужно чтобы было:
-Единственное решение
-Нет решений.
-Бесконечное множество.

Код:

function det(a:array of integer;b:integer):integer;
var
c:array of integer;
a0,c0:integer;
d,k,k0,i,j,ji:integer;
begin
a0:=0;
k:=1;//
d:=a[a0];
if b>1 then
begin
c:= new integer[(b-1)*(b-1)];
d:=0;
for i:=1 to b do
begin
c0:=0;a0:=0;
for j:=1 to b do begin if i=j then k0:=a[a0];inc(a0);end;
for j:=1 to b-1 do
for ji:=1 to b do
if ji=i then inc(a0)
else begin c[c0]:=a[a0];inc(a0);inc(c0);end;
d:=d+k*k0*det(c,b-1);
k:=-k;
end;
c:=nil;
end;
det:=d;
end;
var
a,b:array of integer;
a0,b0:integer;
c,d,detA,e,g:integer;
begin
repeat write('Enter matrix size:');readln(e);until e>0;
a:= new integer [e*e];
a0:=0;
writeln('Enter A:');
for c:=1 to e do
for d:=1 to e do
begin
write('A[',c,',',d,']:=');
readln(a[a0]);
inc(a0);
end;
detA:=det(a,e);
writeln('determinant=',detA:10);
if detA=0 then writeln('Нет решений')
else
if det(a,e)=0 then writeln('Бесконечное множество решений')
else
begin
b:=new integer[e];
b0:=0;
writeln('Enter B:');
for c:=1 to e do
begin
write('B[',c,']:=');
readln(b[b0]);
inc(b0);
end;
for c:=1 to e do
begin
a0:=0;
b0:=0;
inc(a0,(c-1));
for d:=1 to e do
begin
g:=b[b0];
b[b0]:=a[a0];
a[a0]:=g;
inc(a0,e);
inc(b0);
end;
writeln('x[',c,']:=',det(a,e)/detA);
a0:=0;
b0:=0;
inc(a0,(c-1));
for d:=1 to e do
begin
g:=b[b0];
b[b0]:=a[a0];
a[a0]:=g;
inc(a0,e);
inc(b0);
end;
end;
b:=nil;
end;
a:=nil;
Readln;
end.


вот пытался, не вышло, можете помочь?
давно
Старший Модератор
31795
6196
02.10.2017, 15:44
общий
Адресаты:
Цитата: Посетитель - 399158
сейчс если детерминант 0

т.к. детерминант матрицы нулевой и он участвует в делении в виде знаменателя, а на ноль делить нельзя, то
система не может быть решена этим методом. Я уже писал об этом.
Ответ: так как детерминант матрицы равен нулю, то система не может быть решена этим методом (система не имеет решений или имеет множество решений).

Если препод умеет делить на ноль пусть научит.
В эту строку if detA=0 then writeln('Нет решений') можете скопировать мою цитату выше
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
399158
228
02.10.2017, 15:46
общий
да я знаю, но он говорит должно выдаваться 3 сообщения. решение, как у вас сейчас, нет решений и бесконечное множество.
http://www.math24.ru/%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B-%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85-%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9.html может он хочет типа как тут. я хз.... как быть? переубедить не вариант
давно
Старший Модератор
31795
6196
02.10.2017, 16:51
общий
Адресаты:
[code lang=pascal h=300]function det(a:array of integer;b:integer):integer;
var
c:array of integer;
a0,c0:integer;
d,k,k0,i,j,ji:integer;
begin
a0:=0;
k:=1;//
d:=a[a0];
if b>1 then
begin
c:= new integer[(b-1)*(b-1)];
d:=0;
for i:=1 to b do
begin
c0:=0;a0:=0;
for j:=1 to b do begin if i=j then k0:=a[a0];inc(a0);end;
for j:=1 to b-1 do
for ji:=1 to b do
if ji=i then inc(a0)
else begin c[c0]:=a[a0];inc(a0);inc(c0);end;
d:=d+k*k0*det(c,b-1);
k:=-k;
end;
c:=nil;
end;
det:=d;
end;
var
a,b,detAi:array of integer;
a0,b0:integer;
c,d,detA,e,g:integer;
begin
repeat write('Enter matrix size:');readln(e);until e>0;
a:= new integer [e*e];
a0:=0;
writeln('Enter A:');
for c:=1 to e do
for d:=1 to e do
begin
write('A[',c,',',d,']:=');
readln(a[a0]);
inc(a0);
end;
detA:=det(a,e);
writeln('determinant=',detA:10);
b:=new integer[e];
b0:=0;
writeln('Enter B:');
for c:=1 to e do
begin
write('B[',c,']:=');
readln(b[b0]);
inc(b0);
end;
detAi:= new integer[e];
for c:=1 to e do
begin
a0:=0;
b0:=0;
inc(a0,(c-1));
for d:=1 to e do
begin
g:=b[b0];
b[b0]:=a[a0];
a[a0]:=g;
inc(a0,e);
inc(b0);
end;
detAi[c-1]:=det(a,e);
a0:=0;
b0:=0;
inc(a0,(c-1));
for d:=1 to e do
begin
g:=b[b0];
b[b0]:=a[a0];
a[a0]:=g;
inc(a0,e);
inc(b0);
end;
end;
b:=nil;
g:=0;
for c:=0 to e-1 do
if detAi[c]<>0 then inc(g);
if detA<>0 then
for c:=1 to e-1 do
writeln('x[',c,']:=',detAi[c-1]/detA:10:5)
else
if g>=0 then writeln('то система несовместна (не имеет решений)')
else writeln('то система совместна и имеет бесконечное множество решений');
detAi:=nil;
a:=nil;
end.[/code]
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
399158
228
08.10.2017, 12:38
общий
имеет бесконечное множество не работает.

http://mathprofi.ru/g/slu_nesovmestnye_sistemy_i_sistemy_s_obshim_resheniem_clip_image022.gif вот пример тут ответ бесконечное множество.
http://mathprofi.ru/slu_nesovmestnye_sistemy_i_sistemy_s_obshim_resheniem.html (пример 3).
Сможете поправить?
давно
Посетитель
399158
228
08.10.2017, 20:15
общий
можете помочь?
давно
Старший Модератор
31795
6196
09.10.2017, 08:47
общий
Адресаты:
строка 91
[code lang=pascal] if g>0 then writeln('то система несовместна (не имеет решений)')[/code]
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа