Pascal ABC. Помогите решить задачку по программированию в Pascal. Нужно именно само...

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

Pascal ABC. Помогите решить задачку по программированию в Pascal. Нужно именно само действие, как найти числа которые повторяются в трочках.
Сама задача звучит так:
Найти все числа, каждое из которых встречается в каждой строке матрицы A(m,n)


Информатика (34 баллов) | 54 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Const
 n=2;
 m=3;

Var
 ma:array[1..m,1..n] of integer;
 i,j:integer;
 s:set of integer; {множество, в которое будут попадать элементы строки}
begin
 randomize;
 s:=[];
 writeln('Matrix:');
 for i:=1 to m do
 begin
  for j:=1 to n do
   begin
    ma[i,j]:=random(5);
    write(ma[i,j]:4);
   end;
  writeln;
 end;
for i:=1 to m do
begin
 for j:=1 to n do
  if not (ma[i,j] in s) then s:=s+[ma[i,j]]; {если элемента нет в множестве - добавляю}
 writeln(s); {вывод множества}
 s:=[]; {отчищаю множество для следующей строки}
end;
end.

Пример работы программы:
Matrix:
   1   1
   0   2
   0   2
{1}
{2,0}
{2,0}

(336 баллов)
0

Программа работает не так, как нужно. Нужно собственноручно вводить размерность матрицы, это может быть 10x10, и нужно вывести только те числа, которые есть в КАЖДОЙ строке всей матрицы.

0

>"Нужно собственноручно вводить размерность матрицы" Это указано в вопросе?

0

это указано преподавателем

0

Const
n=2;
m=3;

Var
ma:array[1..m,1..n] of integer;
i,j:integer;
begin
randomize;
writeln('Matrix:');
for i:=1 to m do
begin
for j:=1 to n do
begin
ma[i,j]:=random(5);
write(ma[i,j]:4);
end;
writeln;
end;

0

var s:=seqrandominteger(0,0,1);
var s1:=seqrandominteger(0,0,1);
for j:=1 to n do
s:=s+ma[1,j];
for i:=2 to m do
begin
for j:=1 to n do
s1:=s1+ma[i,j];
s:=s1.Intersect(s);
s1:=seqrandominteger(0,0,1);
end;
writeln('Посл:');
s.Println(',');
end.

0

Как сделать ввод размерности матрицы сами додумаетесь.