Mansyr4ikX
Ученик
(246)
1 год назад
Чтобы сделать программу более универсальной и позволить пользователю вводить размеры матрицы, тебе нужно сделать следующие изменения:
1. Объявить переменные `n` и `m` в глобальной области видимости, чтобы они были доступны в процедурах `Vvod` и `Vyvod`.
2. Передать эти переменные в параметры процедур.
3. Использовать введенные значения `n` и `m` при работе с матрицей.
Вот исправленный код:
```pascal
type
mas = array[1..10, 1..10] of integer;
var
n, m: integer; // объявляем переменные n и m глобально
procedure Vvod(var v: mas; var n, m: integer);
var
i, j: integer;
begin
randomize;
writeln('Введите количество строк в матрице:');
read(n);
writeln('Введите количество столбцов в матрице:');
read(m);
for j := 1 to n do
for i := 1 to m do
v[i, j] := random(100) - 50;
end;
procedure Vyvod(var v: mas; n, m: integer);
var
i, j: integer;
begin
for j := 1 to n do
begin
for i := 1 to m do
begin
write(v[i, j]:4);
end;
writeln;
end;
end;
procedure sil(var a: mas; n, m: integer);
var
f, i, j, x, strmin, r, k: integer;
begin
i := 1;
f := 0;
while (i <= n) and (f = 0) do
begin
strmin := a[i, 1];
j := 2;
x := 1;
while (j <= m) and (f = 0) do
begin
if a[i, j] < strmin then
begin
strmin := a[i, j];
x := j;
end;
inc(j);
end;
r := 0;
k := 1;
while (k <= n) and (r = 0) do
begin
if a[k, x] > strmin then
r := 1;
inc(k);
end;
if r = 0 then
begin
writeln('seldowaja tochta: a[', x, ';', i, ']=', strmin);
f := 1;
end;
inc(i);
end;
if f = 0 then
writeln('sedlowyh tochek net!');
end;
var
a, b: mas;
begin
Vvod(a, n, m);
Vyvod(a, n, m);
sil(a, n, m);
end.
```
Теперь программа позволяет вводить количество строк и столбцов в матрице и использует эти значения при работе с матрицей.
Вот сам код
type mas=array[1..10,1..10] of integer;
procedure Vvod(var v:mas);
var i,j, n, m:integer;
begin
randomize;
writeln('Введите количество строк в матрице:');
read(n);
writeln('Введите количество столбцов в матрице:');
read(m);
for j:=1 to n do
for i:=1 to m do
v[i,j]:=random(100)-50;
end;
procedure Vyvod(var v:mas);
var i,j:integer;
begin
for j:=1 to n do begin
for i:=1 to m do begin
write(v[i,j]:4);
end;
writeln;
end;
end;
procedure sil(var a:mas);
var f, i, j, x, strmin, r, k :integer;
begin
i:=1;
f:=0;
while (i<=n)and(f=0) do
begin
strmin:=a[i,1];
j:=2; x:=1;
while (j<=n)and(f=0) do
begin
if a[i,j]<strmin then begin strmin:=a[i,j]; x:=j; end;
inc(j);
end;
r:=0; k:=1;
while (k<=n)and(r=0) do begin
if a[k,x]>strmin then r:=1;
inc(k);
end;
if r=0 then begin writeln ('seldowaja tochta: a[',x,';',i,']=',strmin); f:=1; end;
inc(i);
end;
if f=0 then writeln('sedlowyh tochek net!');
end;
var a,b:mas;
begin
Vvod(a);
Vyvod(a);
sil(a);
end.