Консультация № 197286
02.12.2019, 12:43
0.00 руб.
0 4 2
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
Составьте программу, упорядочивающую по убыванию элементы каждого строки матрицы размером m*n. (размер матрицы вводится с клавиатуры, но не более 10). Массив заполнить случайными вещественными числами от 0 до 20.


Приложение:
Pascal / Delphi

Обсуждение

давно
Профессор
401888
1232
02.12.2019, 13:33
общий
это ответ
Здравствуйте, bodya!
[code lang=pascal]var a:array[1..10,1..10] of real;
m,n,i,j,k:integer;
x:real;
begin
randomize;
repeat
writeln('Введите размеры матрицы m,n от 2 до 10');
readln(m,n);
until(m in [2..10])and(n in [2..10]);
writeln('Исходная матрица');
for i:=1 to m do
begin
for j:=1 to n do
begin
a[i,j]:=random(2001)/100;
write(a[i,j]:6:2);
end;
writeln;
end;
for i:=1 to m do
for j:=1 to n-1 do
for k:=j+1 to n do
if a[i,j]<a[i,k] then
begin
x:=a[i,j];
a[i,j]:=a[i,k];
a[i,k]:=x;
end;
writeln('Сортировка строк по убыванию');
for i:=1 to m do
begin
for j:=1 to n do
write(a[i,j]:6:2);
writeln;
end;
end.[/code]
давно
Студент
402651
154
02.12.2019, 13:50
общий
14.01.2020, 18:46
это ответ
Здравствуйте, bodya!
Вот еще вариант... Тип массива в описании и сортировке - поставишь Сам
[code lang=pascal]program Sort_Matr_Stroki;

uses crt;

var
c: array[1..10, 1..10] of double; // описание массива - тип ????
i, j: integer;
n, m: integer;

procedure Sort(l: integer);
var
i, j: integer; k: double;// сортировка массива - тип ????
begin
for i := 1 to m do
for j := 1 to m do
if c[l, i] < c[l, j] then
begin
k := c[l, i];
c[l, i] := c[l, j];
c[l, j] := k;
end;
end;

begin
writeln('Введите размер матрицы, n,m <= 10');
write('Введите n= ');
readln(n); // Вводим размер матрицы
write('Введите m= ');
readln(m); // Вводим размер матрицы
for i := 1 to n do
begin
for j := 1 to m do
begin
c[i, j] := random(20);
Write(c[i, j]:8:2);
end;
writeln;
end;
writeln;
for i := 1 to n do Sort(i);
for i := 1 to n do
begin
for j := 1 to m do
begin
Write(c[i, j]:8:2);
end;
writeln;
end;
writeln('Для выхода -> Enter');
readln;
end.[/code]
давно
Посетитель
403420
4
19.12.2019, 13:17
общий
Адресаты:
можно сделать с процедурами ?
давно
Профессор
401888
1232
19.12.2019, 13:29
общий
Адресаты:
Можно так, если нужно по другому, пишите более внятно.
[code lang=pascal]type mtr=array[1..10,1..10] of real;
procedure matrix(var a:mtr;var m,n:integer);
var i,j:integer;
begin
repeat
writeln('Введите размеры матрицы m,n от 2 до 10');
readln(m,n);
until(m in [2..10])and(n in [2..10]);
writeln('Исходная матрица');
for i:=1 to m do
begin
for j:=1 to n do
begin
a[i,j]:=random(2001)/100;
write(a[i,j]:6:2);
end;
writeln;
end;
end;
procedure sort(var a:mtr;m,n:integer);
var i,j,k:integer;
x:real;
begin
for i:=1 to m do
for j:=1 to n-1 do
for k:=j+1 to n do
if a[i,j]<a[i,k] then
begin
x:=a[i,j];
a[i,j]:=a[i,k];
a[i,k]:=x;
end;
writeln('Сортировка строк по убыванию');
for i:=1 to m do
begin
for j:=1 to n do
write(a[i,j]:6:2);
writeln;
end;
end;
var a:mtr;
m,n:integer;
begin
randomize;
matrix(a,m,n);
sort(a,m,n);
end.[/code]
Форма ответа