Оставить в строках матрицы элементы которые встречаются более одного раза, остальные заменить нулем - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д