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