Консультация № 132117
14.04.2008, 10:51
0.00 руб.
0 1 1
помогите пожалуйста с решением данной задачи:
1. Дана матрица целых чисел. Отмеченной строкой считается та, пер-
вый элемент которой > 0, в этой строке отрицательные элементы
заменить на -1, а положительные на 1, нулевые оставить без изме-
нения. Отсортировать матрицу по убыванию.

Обсуждение

давно
Профессор
401888
1232
14.04.2008, 17:52
общий
это ответ
Здравствуйте, Тимощенко Елизавета Владимировна!
Решение задачи в приложении. Первая часть задачи простая, вытекает из условия, поэтому в особых пояснениях не нуждается. Сортировку матрицы я сделал с помощью линейного массива. Сначала матрицу разворачиваем в линейнй массив, который легко сортировать, а затем, после сортировки, снова собираем массив в матрицу.


Приложение:
uses crt;const n=6; m=7;var a:array[1..n,1..m]of integer; b:array[1..n*m]of integer; i,j,max,min,imax,imin,k,x:integer;beginclrscr;randomize;{Ввод элементов матрицы(случайные числа из интервала[-8,11])}writeln(‘Ishodnaia matrica:‘);for i:=1 to n do begin for j:=1 to m do begin a[i,j]:=random(20)-8; write(a[i,j]:3); end; writeln; end;readln;{Выполнение первого условия}for i:=1 to n do begin for j:=1 to m do if a[i,1]>0 then begin if a[i,j]<0 then a[i,j]:=-1 else if a[i,j]>0 then a[i,j]:=1; end; end;writeln(‘Obrabotannaia matrica:‘);for i:=1 to n do begin for j:=1 to m do write(a[i,j]:3); writeln; end;readln;{Sortirovka matricy}k:=0;for i:=1 to n dofor j:=1 to m dobegink:=k+1;b[k]:=a[i,j];end;for i:=1 to k-1 dofor j:=1 to k-1 doif b[j]<b[j+1]then begin x:=b[j]; b[j]:=b[j+1]; b[j+1]:=x; end;writeln(‘Sortirovannaia matrica:‘);for i:=1 to n do begin for j:=1 to m do begin a[i,j]:=b[j+m*(i-1)]; write(a[i,j]:3); end; writeln; end;readln;end.
Форма ответа