СРОЧНО!Пишу прогу с процедурами, которая считает количество "особых "элементов матрицы,...

0 голосов
63 просмотров

СРОЧНО!Пишу прогу с процедурами, которая считает количество "особых "элементов матрицы, но в конце проги не работает writeln, в чём может быть проблема?
Вот задача.
Заданная целочисленная матрица размером NXM. Определить k-количество "особых" элементов матрицы, считая элемент "особым", если в его строке слева от него находятся элементы, меньшие его, а справа - большие.
Вот мой код.И если уж у меня все плохо,то предложите свой код программы.
program samost;
const n=5;
m=5;
type tmatr = array[1..n, 1..m] of integer;
var a:tmatr;
i,j,k:integer;
procedure PrintMatrix(var g:tmatr);
begin
var i,j,k:integer;
for i:=1 to n do
begin
for j:=1 to n do
write(g[i,j]:4);
writeln
end;
end;
procedure MakeMatrix;
begin
var i,j,k:integer;
randomize;
for i:=1 to n do
for j:=1 to n do
begin
a[i,j]:=random(10)-5;
end;
end;
begin
MakeMatrix;
writeln('matrica A: ');
PrintMatrix(a);

k:=0;
for i:=1 to n do
for j:=1 to m do
begin
if (a[i,j]a[i-1,j]) then inc(k)
end;
writeln('kolichestvo elementov = ',k);
end.


Информатика (166 баллов) | 63 просмотров
0

ну 1 readln;-удаляй,после PrintMatrix(a);,это задерживает программу.2.if (a[i,j]a[i-1,j]) then inc(k) тут 2 ошибки:1)Пропущен знак,как я понял там должно быть "<"2)"i-1"-так писать нельзя,т.к. когда i=1 то у тебя получается 0,а такого не может быть.Исправь программу,и она у тебя не полностью,допиши и измени,попробую помочь еще!

0

я не полностью код поставил, уже и сам понял.Помоги, что делать дальше?

0

Как я и говорил writeln не работает и пишет что "К" нигде не используется

0

т.е. первый и последний элементы в строке особыми быть не могут по определению (нет соседа справа или слева)?

0

получается что да

0

да,тоже хотел заметить,то есть j:=2,а не 1,чтобы не рассматривать 1 элемент,и m:=m-1

0

Было много ошибок, поисправлял.

Дано ответов: 2
0 голосов
Правильный ответ

Program samost;

const
  n = 5;
  m = 5;

type
  tmatr = array[1..n, 1..m] of integer;

procedure PrintMatrix(g: tmatr);
var
  i, j: integer;
begin
  for i := 1 to n do
  begin
    for j := 1 to n do Write(g[i, j]:4);
    Writeln
  end
end;

procedure MakeMatrix(var a: tmatr);
var
  i, j: integer;
begin
  Randomize;
  for i := 1 to n do
    for j := 1 to n do a[i, j] := random(10) - 5;
end;

var
  a: tmatr;
  i, j, k: integer;

begin
  MakeMatrix(a);
  Writeln('matrica A: ');
  PrintMatrix(a);
  k := 0;
  for i := 1 to n do
    for j := 2 to m-1 do
      if (a[i, j] < a[i, j+1]) and (a[i, j] > a[i, j-1]) then inc(k);
  Writeln('kolichestvo elementov = ', k);
end.

Тестовое решение:

matrica A:
   4   4   0  -2  -3
   1  -4   4  -5   0
   2   4  -2   1  -2
  -4  -5  -4  -2   4
   1   0   0  -3   2
kolichestvo elementov = 2



(142k баллов)
0 голосов

Program samost;
const n=5; 
m=5; 
type tmatr = array[1..n, 1..m] of integer;
var a:tmatr; 
i,j,k:integer; 
procedure PrintMatrix(var g:tmatr);
begin 
var i,j:integer; 
for i:=1 to n do 
begin 
for j:=1 to n do 
write(g[i,j]:4); 
writeln 
end;
end; 
procedure MakeMatrix;
begin 
var i,j,k:integer; 
randomize; 
for i:=1 to n do 
for j:=1 to n do 
begin 
a[i,j]:=random(10)-5; 
end;
end; 
begin 
MakeMatrix; 
writeln('matrica A: '); 
PrintMatrix(a); 
k:=0; 
for i:=1 to n do 
for j:=2 to m-1 do 
begin 

if (a[i,j]>a[i,j-1])and(a[i,j]begin
k:=k+1; ;
writeln(i,j);
end;
end; 
writeln('kolichestvo elementov = ',k);
end.

(346 баллов)
0

это чтобы знать какой элемент,можешь удалить

0

writeln(i,j);-это чтобы знать какой элемент,можешь удалить