Оставить в строках матрицы элементы которые встречаются более одного раза, остальные заменить нулем - Turbo Pascal
Формулировка задачи:
Нужно решить задачку. С другом сколько не пытались решить, так и не решили.
Изменить таблицу a[1..m,1..n] так, чтобы в строках остались элементы которые встречаются более одного раза, остальные заменить нулем.
Помогите пожалуйста, спасибо большое!
Решение задачи: «Оставить в строках матрицы элементы которые встречаются более одного раза, остальные заменить нулем»
textual
Листинг программы
const M = 10;
const N = 5;
type item_t = integer;
type line_t = array[1..M] of item_t;
type tabl_t = array[1..N] of line_t;
procedure printLine( const l: line_t );
var
i: integer;
begin
for i:= 1 to M do
write(l[i] :5);
writeln;
end;
procedure printTabl( const t: tabl_t );
var
i: integer;
begin
for i:= 1 to N do
printLine(t[i]);
end;
procedure sortLine( var l: line_t; tS: boolean );
var
i,j: integer;
tmp: item_t;
begin
if ts then
for i:=1 to M-1 do
for j:=M downto i do begin
if l[j] < l[i] then begin
tmp := l[j];
l[j] := l[i];
l[i] := tmp;
end;
end
else
for i:=1 to M-1 do
for j:=M downto i do begin
if l[j] > l[i] then begin
tmp := l[j];
l[j] := l[i];
l[i] := tmp;
end;
end;
end;
const DEV_FRB_EL_NEED = false;
var
a: tabl_t;
x,x2,y,y2: integer;
min, max, eCount: integer;
fBreak : boolean;
begin
for y:=1 to N do
for x:=1 to M do
a[y][x] := random(-100 , 100);
printTabl(a);
Writeln('-------------------------------');
for y:=1 to N do
for x:=1 to M do begin
fBreak := false;
for x2:=1 to M do
if (a[y][x] = a[y][x2]) AND (x <> x2) then begin
fBreak := true;
break;
end;
if fBreak then continue;
a[y][x] := 0;
end;
printTabl(a);
end.