Мне нужно найти одинаковые элементы матрицы и сформировать из них вектор. У меня не получается их найти, подскажите как это сделать. Заранее спасибо
Program lab1_1; Uses WinCrt; Var A:Array[1..5,1..6] of integer; B:Array[1..30] of integer; i,j,k:Byte; f:Text; Begin WriteLn('Типовые приемы ввода и вывода элементов массива'); WriteLn('Задание 1'); Randomize; For i:=1 to 5 do For j:=1 to 6 do Begin A[i,j]:=Random(20); End; WriteLn('Массив A'); For i:=1 to 5 do begin For j:=1 to 6 do Begin Write(A[i,j]:3,' '); End; WriteLn; end; {Поиск одинаковых элемнтов} For i:=1 to 5 do For j:=1 to 6 do begin if A[i,j]=A[i,j] then begin k:=k+1; B[k]:=A[i,j]; end; end;
WriteLn('Полученный вектор'); For i:=1 to k do Write(B[i]:3,' ');
end.
мисс_граффити
26.03.2007 18:29
Что значит "одинаковые элементы"? Все элементы, которые встречаются более одного раза?
A[i,j]=A[i,j]
это условие будет выполняться всегда - какой в нем смысл?
volvo
26.03.2007 18:44
Исходную матрицу менять можно? Тогда так:
// Описания типов и процедур - добавлено... const lines = 5; columns = 6; type matrix = array[1 .. lines, 1 .. columns] of integer; vector = array[1 .. lines * columns] of integer;
procedure bubble(var ar: vector; n: integer); var i, j, T: Integer; begin for i := 1 to n do for j := n downto i + 1 do if ar[Pred(j)] > ar[j] then begin T := ar[Pred(j)]; ar[Pred(j)] := ar[j]; ar[j] := T end end;
// **** Основная программа
// заполнила матрицу значениями ... // отсортировала ее сквозной сортировкой по возрастанию // (любым алгоритмом, я для простоты попробовал "пузырек") bubble(vector(a), lines * columns);
// и заполняешь повторяющимися значениями массив B: curr := 0;
i := 1; while i < lines * columns do begin count := 1; while (i < lines * columns) and (vector(a)[i] = vector(a)[i + 1]) do begin inc(i); inc(count); end; if count > 1 then begin inc(curr); b[curr] := vector(a)[i - 1]; end; inc(i); end;
for i := 1 to curr do write(b[i]:4); writeln;
Selena
26.03.2007 19:01
Вообще мне немного не это нужно. Там в задачи идет такое задание: если в матрице А есть одинаковые элементы, то найти max элемент и т.д Мне нужно именно как правильно записать это условие: если есть одинаковые элементы
volvo
26.03.2007 19:08
const lines = 5; columns = 6; type matrix = array[1 .. lines, 1 .. columns] of integer;
function has_dup(var ar: vector; n: integer): boolean; var i, j, T: Integer; begin has_dup := true; for i := 1 to n do for j := i + 1 to n do if ar[i] = ar[j] then exit; has_dup := false; end;
if has_dup(vector(a), lines * columns) then // есть дублирующиеся элементы else // нет ...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.