Другие языки программирования и технологии

Паскаль, двумерный массив =\

Дана матрица размера 5 x 10. Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой строке
procedure Swap(var N1, N2 : Integer); begin N1 := N1 + N2; N2 := N1 - N2; N1 := N1 - N2; end;

const Rows = 5; Cols = 10;
var A : array [1..Rows, 1..Cols] of Integer; Row, Col, Min, Max : Byte;
begin
WriteLn('Исходная матрица: '); Randomize;
for Row := 1 to Rows do begin for Col := 1 to Cols do begin A[Row, Col] := Random(100); Write(A[Row, Col]:3); end; WriteLn; end;

for Row := 1 to Rows do begin Min := 1; Max := 1; for Col := 2 to Cols do if A[Row, Col] < A[Row, Min] then Min := Col else if A[Row, Col] > A[Row, Max] then Max := Col; Swap(A[Row, Min], A[Row, Max]); end;

WriteLn('Полученная матрица: ');
for Row := 1 to Rows do begin for Col := 1 to Cols do Write(A[Row, Col]); WriteLn; end;
end.
КТ
Кайрат Тубекбаев
76 917
Лучший ответ
пиши в агент или icq 452371863
Айназ Ризаев
Айназ Ризаев
68 014
Запускаем два вложенных цикла - один по строкам будет проверять, другой каждую строку по символам. Во вложенном цикле используем два указателя
max и min. Присваиваем им значение первого элемента строки. Дальше, сравниваем каждый последующий элемент с этими. Если он больше max, делаем его текущим max, если меньше min, делаем текущим min. По окончании работы внутреннего цикла (который строку по символам разбирал) обмениваем местами значения min и max

int* temp;
*temp = *max;
*max = *min;
*min = *temp;

Дальше, переходим к увеличению счетчика внешнего цикла.

Сорри, что в коде с++ написано, не знаю паскаля.