Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 03.08.2017
Сообщений: 4
1

Упорядочить строки матрицы по убыванию

03.08.2017, 08:01. Показов 1679. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброе утро, такое задание. У меня вступительные экзамены, а я в программировании вообще не шарю, сидел в интернете читал, что да как. Нашел как сделать 1 строку матрицы по возрастанию, а как сделать все? Пытался сделать 15 аналогичных циклов, но что то пошло не так). Сильно не смейтесь)
Разработать алгоритм и написать программу (СИ или Паскаль), которая преобразует матрицу X (20,15) таким образом, чтобы строки матрицы были упорядочены по убыванию. Значения элементов матрицы заданы. Вывести матрицу до и после преобразования.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
uses crt;
const nmax=20;
var a:array[1..15,1..20] of integer;
    m,n,i,j,k,p,imax:byte;
    buf:integer;
begin
clrscr;
randomize;
repeat
write('Количество строк до ',nmax,' m=');
readln(m);
until m in [1..nmax];
repeat
write('Количество столбцов до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Исходная матрица:');
for i:=1 to m do
 begin
  for j:=1 to n do
   begin
    a[i,j]:=random(20);
    write(a[i,j]:4);
   end;
  writeln;
 end;
writeln;
repeat
write('Выберите строку для сортировки от 1 до ',m,' k=');
readln(k);
until k in [1..m];
for j:=1 to n-1 do{идем по строке К не до конца}
  begin
   imax:=j;
   for p:=j+1 to n do{смотрим впереди}
   if a[k,p]>a[k,imax] then imax:=p;{если есть элемент меньше}
   for i:=1 to m do{по всем строкам}
    begin
     buf:=a[i,j];
     a[i,j]:=a[i,imax];{обмениваем найденный элемент с тем что сравнивали}
     a[i,imax]:=buf;
    end;
  end;
writeln('Столбцы упорядочены по убыванию элементов строки ',k);
for i:=1 to m do
 begin
  for j:=1 to n do
  write(a[i,j]:4);
  writeln;
 end;
readln;
end.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.08.2017, 08:01
Ответы с готовыми решениями:

Отсортировать строки матрицы по убыванию средних арифметических значений элементов каждой строки
Привет всем,прошу помочь в решении задачи,так как не умею решать задания на матрицы. Дана...

Упорядочить строки матрицы по убыванию
Дана действительная прямоугольная матрица размерности NxM. Упорядочить строки матрицы по убыванию...

Упорядочить строки матрицы по убыванию
Задача !! Если в матрице все элементы различны, упорядочить строки матрицы по неубыванию количества...

Упорядочить четные строки матрицы по возрастанию, нечетные строки – по убыванию
Матрица 6х6 заполнена случайными числами от 0 до 20. Упорядочить четные строки матрицы по...

10
5084 / 2655 / 2350
Регистрация: 10.12.2014
Сообщений: 10,046
03.08.2017, 08:20 2
Лучший ответ Сообщение было отмечено АлексР как решение

Решение

20·15 = 300

Столько элементов для отладки набивать не захотелось.
Поэтому задал размерность 5х5.

А программы достаточно всего то:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
const
  m = 5;
  n = 5;
begin
  Write('Введите все значения элементов матрицы через пробел: ');
  var x := ReadMatrInteger(m,n);
  WriteLn('Исходная матрица:'); x.Println;
  for var Row := 0 to m-1 do
    begin
      var sr := x.Row(Row).Sorted.Reverse.ToArray;
      for var Col := 0 to n-1 do x[Row, Col] := sr[Col];
    end;
  WriteLn('Преобразованная матрица:'); x.Println;
end.
1
129 / 127 / 107
Регистрация: 09.01.2017
Сообщений: 1,651
03.08.2017, 10:04 3
JuriiMW, на сколько я знаю, на вступительных экзаменах лучше писать не на .Net'e...
0
5084 / 2655 / 2350
Регистрация: 10.12.2014
Сообщений: 10,046
03.08.2017, 11:19 4
Zwelenewskiy, зачем ТС создавал ветку в .NET ?
Хотели? Получите и распишитесь…

Добавлено через 15 минут
И, кстати, формулировка задачи неполная/неверная (ненужное зачеркнуть)!
Ибо, если в строке попадётся несколько одинаковых значений, то как их упорядочить по убыванию?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32964 / 21280 / 8170
Регистрация: 22.10.2011
Сообщений: 36,550
Записей в блоге: 8
03.08.2017, 11:55 5
Цитата Сообщение от JuriiMW Посмотреть сообщение
А программы достаточно всего то:
Этого даже много. Достаточно:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
const
  m = 5;
  n = 5;
begin
  Write('Введите все значения элементов матрицы через пробел: ');
  var x := ReadMatrInteger(m,n);
  WriteLn('Исходная матрица:'); x.Println;
  
  for var i := 0 to Pred(x.RowCount) do x.SetRow(i, x.Row(i).SortedDescending.ToArray);
  // или вообще вот так: x.Rows.ForEach(procedure(r, i) -> x.SetRow(i, r.SortedDescending.ToArray));
  
  WriteLn('Преобразованная матрица:'); x.Println;
end.
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
03.08.2017, 12:02 6
Цитата Сообщение от JuriiMW Посмотреть сообщение
несколько одинаковых значений, то как их упорядочить по убыванию
Да так и оставить
15 10 8 8 8 8 6
0
Модератор
10011 / 5366 / 3340
Регистрация: 17.08.2012
Сообщений: 16,351
04.08.2017, 00:50 7
Puporev, вообще-то, это по невозрастанию. Если последовательность содержит одинаковые значения, упорядочить её по убыванию (или возрастанию) невозможно по определению.
0
129 / 127 / 107
Регистрация: 09.01.2017
Сообщений: 1,651
04.08.2017, 06:55 8
АлексР, напишите в лс - у меня время свободное есть,может,и смогу чем-то еще помочь
0
Эксперт Pascal/Delphi
2386 / 1298 / 1492
Регистрация: 29.08.2014
Сообщений: 4,661
04.08.2017, 07:12 9
Zwelenewskiy, вообще-то решение тут писать нужно
АлексР, как вариант:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
const n=20;m=15;
var
  a:array[1..n,1..m] of integer;
  i,j,t,l:integer;
begin
  randomize;
  writeln('Matrix:');
  for i:=1 to n do begin
    for j:=1 to m do begin
      a[i,j]:=random(100)-50;
      write(a[i,j]:4);
    end;
    writeln;
  end;
  for i:=1 to n do begin
    for l:=1 to m-1 do
    for j:=l+1 to m do
     if a[i,l]<a[i,j] then begin
       t:=a[i,l];a[i,l]:=a[i,j];a[i,j]:=t;
     end;
  end;
  writeln('New Matrix:');
  for i:=1 to n do begin
    for j:=1 to m do write(a[i,j]:4);
    writeln;
  end;
readln
end.
1
Cyborg Drone
04.08.2017, 07:39
  #10

Не по теме:

Цитата Сообщение от Zwelenewskiy Посмотреть сообщение
напишите в лс
[nick]Zwelenewskiy, никаких ЛС, обсуждение вопроса темы в тематических разделах где-либо ещё, кроме самой темы, запрещено. Рекомендую Вам перечитать правила форума.

0
129 / 127 / 107
Регистрация: 09.01.2017
Сообщений: 1,651
04.08.2017, 15:57 11
Joy, я не насчет решения писал - может,еще в чем-то помощь нужна будет
0
04.08.2017, 15:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.08.2017, 15:57
Помогаю со студенческими работами здесь

Упорядочить строки матрицы по не убыванию их среднеарифметического.
Снова нужна Ваша помощь! Помогите написать программу! Многомерный массив. Дана вещественная...

Все строки матрицы упорядочить по убыванию
Все строки номер вещественной матрицы размером 10х15 упорядочить по убыванию значений их элементов.

Упорядочить по убыванию элементы строки матрицы
В одномерном массиве 1)Упорядочить по убыванию элементы той строки матрицы A(n×m), в которой...

Упорядочить элементы последней строки матрицы по убыванию
Всем привет, проблема такова, мне нужно в созданном массиве 4х4 упорядочить элементы последней...

Упорядочить по убыванию элементы каждой строки матрицы
Составьте программу, упорядочивающую по убыванию элементы каждой строки матрицы размером m*n.

Упорядочить строки матрицы по убыванию сумм их элементов
Дана матрица целых чисел X(n, т). Упорядочить ее строки по убыванию сумм их элементов. Вывести...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru