Program Example_103;
const n=3;
type vectr=array[1..n] of real;
matr= array[1..n,1..n+1] of real;
var I: integer; a: matr; z:vectr;
procedure Data(var x:matr);
{ процедура ввода данных }
var i,j:integer;
begin
for i:=1 to nn do
for j:=1 to mm do
x[i,j]:=random(21)-10;
end;
procedure Print(x:matr);
{ процедура вывода данных }
var i,j:integer;
begin
for i:=1 to nn do begin
for j:=1 to mm do
write(x[i,j]:5); writeln; end
end;
procedure Swap(var a,b:real);
var z:real;
begin
z:=a; a:=b; b:=z
end;
function Det(a:matr):real;
{ вычисление определителя }
function Turn(k:integer):real;
var s:real; k1,k2,k3,k4: integer;
begin s:=0;
k1:=2-k; k2:=2; k3:=2+k;
for I:=1 to n do
begin
s:=s + a[1,k1]*a[2,k2]*a[3,k3];
k4:=k1; k1:=k2; k2:=k3; k3:=k4
end;
Turn:=s
end;
begin
Det:=Turn(1)-Turn(-1)
end;
procedure Solve_Kram(a:matr;var x:vectr);
{ процедура решения системы уравнений методом Крамера}
var d:real; I,j:integer;
begin
d:=Det(a);
if (abs(d) < 1.0e-6 ) then begin writeln('Error'); Exit end;
for j:=1 to n do
begin
for I:=1 to n do Swap(a[I,j],a[I,j+1]);
x[j]:=Det(a)/d;
for I:=1 to n do Swap(a[I,n+1],a[I,j])
end;
end;
{ Основная программа }
Begin
Data(a); Print(a); Solve_Kram(a,z);
for I:=1 to n do writeln(‘x[‘,I:2,’]=’,z[i];
readln
End.
Другие языки программирования и технологии
Дан пример из паскаля, в нём несколько ошибок, нужно исправить их чтоб пример заработал.
Program Example_103;
const n=3;
type vectr=array[1..n] of real;
matr=array[1..n,1..n+1] of real;
var
I: integer; a: matr; z:vectr;
procedure Data(var x:matr); { процедура ввода данных }
var
i,j,m:integer;
begin
m:=4;
for i:=1 to n do for j:=1 to m do x[i,j]:=random(21)-10;
end;
procedure Print(x:matr); { процедура вывода данных }
var
i,j,m:integer;
begin for i:=1 to n do begin for j:=1 to m do write(x[i,j]:5);
writeln;
end
end;
procedure Swap(var a,b:real);
var
z:real;
begin
z:=a; a:=b; b:=z
end;
function Det(a:matr):real; { вычисление определителя }
function Turn(k:integer):real;
var
s:real; k1,k2,k3,k4: integer;
I: integer;
begin
s:=0; k1:=2-k; k2:=2; k3:=2+k;
for I:=1 to n do
begin
s:=s + a[1,k1]*a[2,k2]*a[3,k3]; k4:=k1; k1:=k2; k2:=k3; k3:=k4
end;
Turn:=s
end;
begin
Det:=Turn(1)-Turn(-1)
end;
procedure Solve_Kram(a:matr;
var
x:vectr); { процедура решения системы уравнений методом Крамера}
var
d:real; I,j:integer;
begin
d:=Det(a);
if (abs(d) < 1.0e-6 ) then
begin
writeln('Error');
Exit end;
for j:=1 to n do
begin
for I:=1 to n do Swap(a[I,j],a[I,j+1]);
x[j]:=Det(a)/d;
for I:=1 to n do Swap(a[I,n+1],a[I,j])
end;
end; { Основная программа }
Begin Data(a);
Print(a);
Solve_Kram(a,z);
for I:=1 to n do writeln('x[',I:2,']=',z[i]);
readln
End.
const n=3;
type vectr=array[1..n] of real;
matr=array[1..n,1..n+1] of real;
var
I: integer; a: matr; z:vectr;
procedure Data(var x:matr); { процедура ввода данных }
var
i,j,m:integer;
begin
m:=4;
for i:=1 to n do for j:=1 to m do x[i,j]:=random(21)-10;
end;
procedure Print(x:matr); { процедура вывода данных }
var
i,j,m:integer;
begin for i:=1 to n do begin for j:=1 to m do write(x[i,j]:5);
writeln;
end
end;
procedure Swap(var a,b:real);
var
z:real;
begin
z:=a; a:=b; b:=z
end;
function Det(a:matr):real; { вычисление определителя }
function Turn(k:integer):real;
var
s:real; k1,k2,k3,k4: integer;
I: integer;
begin
s:=0; k1:=2-k; k2:=2; k3:=2+k;
for I:=1 to n do
begin
s:=s + a[1,k1]*a[2,k2]*a[3,k3]; k4:=k1; k1:=k2; k2:=k3; k3:=k4
end;
Turn:=s
end;
begin
Det:=Turn(1)-Turn(-1)
end;
procedure Solve_Kram(a:matr;
var
x:vectr); { процедура решения системы уравнений методом Крамера}
var
d:real; I,j:integer;
begin
d:=Det(a);
if (abs(d) < 1.0e-6 ) then
begin
writeln('Error');
Exit end;
for j:=1 to n do
begin
for I:=1 to n do Swap(a[I,j],a[I,j+1]);
x[j]:=Det(a)/d;
for I:=1 to n do Swap(a[I,n+1],a[I,j])
end;
end; { Основная программа }
Begin Data(a);
Print(a);
Solve_Kram(a,z);
for I:=1 to n do writeln('x[',I:2,']=',z[i]);
readln
End.
Kirill Тихомиров
Спасибо! честно говоря, уже начинал сомневаться что это можно заставить работать без радикальных изменений, буквально одна ошибка за другой. <3
То, что программа стала запускаться, вовсе не значит, что она стала работать правильно.
Вы запутались в перестановках столбцов. Например X[1] в этой программе всегда -1, так как вы делите определители матриц с переставленными столбцами.
Советую добавить отладочный вывод Print(a) в функцию Det, чтобы понять, определитель чего вы считаете. Для правильной работы нужно заменить всего 1 букву.
Вы запутались в перестановках столбцов. Например X[1] в этой программе всегда -1, так как вы делите определители матриц с переставленными столбцами.
Советую добавить отладочный вывод Print(a) в функцию Det, чтобы понять, определитель чего вы считаете. Для правильной работы нужно заменить всего 1 букву.
Kirill Тихомиров
Не считая 4 частей procedure - в остальном программа таковой и давалась в условиях задания, я её не менял. если-бы нужно было создать работающую программу решения системы уравнений методом Крамера - я-бы просто взял готовую которые к слову строчек на 6-10 короче этой и логически понятней для меня, но нужно было именно эту заставить работать.
Emin Quliyev
Да понятно, что это задание. И смысл которого как раз в том, чтобы вы включили голову и попытались разобраться, как должна работать этав программа. Вам дали готовый ответ, который всё ещё содержит ОДНУ ошибку, попытайтесь найти её самостоятельно, благо компиляцция работает.
Похожие вопросы
- Владеющие паскалем! SOS! Найдите пожалуйста ошибку!((( думаю уже долго, ошибку найти не могу(((Помогите пожалуйста!!!
- C++: Что это значит? Что мне нужно исправить, чтобы не выдавало ошибку?
- Есть вопрос: Паскаль ругается и выдает ошибку в программе что делать
- Программа на C++ (нужно исправить)!
- нужно исправить программу
- Помогите с задачами на паскале кто может. пожалуста очень нужно...
- Задача в паскале. помогите пожалуйста... очень срочно нужно!
- покажите пример использования /s в taskkill (.bat) что нужно писать после /s? ip адрес?
- Ищу человека, разбирающегося в фотошопе. Нужно исправить дату на копии паспорта
- Помогите в паскале Исправить ошибку?