0 / 0 / 0
Регистрация: 26.09.2018
Сообщений: 6
1

Отсортировать элементы выше главной диагонали матрицы по возрастанию, а ниже главной диагонали по убыванию

26.09.2018, 21:15. Показов 3839. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1) Вводится массив 6*6. Отсортировать элементы выше главной диагонали по возрастанию, а ниже главной диагонали по убыванию.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.09.2018, 21:15
Ответы с готовыми решениями:

Отсортировать по возрастанию/убыванию элементы главной и побочной диагонали матрицы 4х4
Дана матрица размером 4х4. Нужно отсортировать главную диагональ по возрастанию и побочную...

Обнулить элементы матрицы, лежащие одновременно ниже главной диагонали и выше побочной диагонали
Дана квадратная матрица порядка М. Обнулить элементы матрицы, лежащие одновременно ниже главной...

Определить сумму элементов выше главной диагонали и ниже главной диагонали. какая из них больше
в матрице размером 5х5 определить сумму элементов выше главной диагонали и ниже главной диагонали....

Отсортировать по возрастанию элементы главной диагонали матрицы
Ввести элементы массива К, состоящего из 3 строк и 3 столбцов. Отсортировать по возрастанию...

9
Почетный модератор
64288 / 47587 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
27.09.2018, 09:52 2
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
const n=6;
//процедура обмена двух элементов
procedure Swap(var a,b:integer);
var tmp:integer;
begin
tmp:=a;
a:=b;
b:=tmp;
end;
var a:array[0..n-1,0..n-1] of integer;
    i,j,k:byte;
    x:integer;
begin
randomize;
writeln('Исходная матрица:');
for i:=0 to n-1 do
 begin
  for j:=0 to n-1 do
   begin
    a[i,j]:=-10+random(21);
    write(a[i,j]:4);
   end;
  writeln;
 end;
for i:=0 to n*n-2 do
for j:=i+1 to n*n-1 do
//выше главной по возрастанию
if ((i mod n>i div n)and(j mod n>j div n)and(a[i div n,i mod n]>a[j div n,j mod n]))
//ниже главной по убыванию
or ((i mod n<i div n)and(j mod n<j div n)and(a[i div n,i mod n]<a[j div n,j mod n]))
then Swap(a[i div n,i mod n],a[j div n,j mod n]);
writeln('Отсортированная матрица:');
for i:=0 to n-1 do
 begin
  for j:=0 to n-1 do
  write(a[i,j]:4);
  writeln;
 end;
end.
0
0 / 0 / 0
Регистрация: 26.09.2018
Сообщений: 6
23.10.2018, 15:40  [ТС] 3
Неправильна программа

Добавлено через 48 секунд
Неправильная программа
0
Почетный модератор
64288 / 47587 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
23.10.2018, 15:45 4
И что здесь неправильно?
Миниатюры
Отсортировать элементы выше главной диагонали матрицы по возрастанию, а ниже главной диагонали по убыванию  
0
0 / 0 / 0
Регистрация: 26.09.2018
Сообщений: 6
23.10.2018, 15:48  [ТС] 5
А можно как то без процедур обмена это сделать?
0
Почетный модератор
64288 / 47587 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
23.10.2018, 16:05 6
Конечно можно, делайте, только зачем?
0
0 / 0 / 0
Регистрация: 26.09.2018
Сообщений: 6
23.10.2018, 17:00  [ТС] 7
Сказали что не через процедуры надо было делать и надо переделать

Добавлено через 53 минуты
Как написать эту программу без процедуры обмена
0
Почетный модератор
64288 / 47587 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
23.10.2018, 17:05 8
Лучший ответ Сообщение было отмечено kostya99 как решение

Решение

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
const n=6;
var a:array[0..n-1,0..n-1] of integer;
    i,j,k:byte;
    x:integer;
begin
randomize;
writeln('Исходная матрица:');
for i:=0 to n-1 do
 begin
  for j:=0 to n-1 do
   begin
    a[i,j]:=-10+random(21);
    write(a[i,j]:4);
   end;
  writeln;
 end;
for i:=0 to n*n-2 do
for j:=i+1 to n*n-1 do
//выше главной по возрастанию
if ((i mod n>i div n)and(j mod n>j div n)and(a[i div n,i mod n]>a[j div n,j mod n]))
//ниже главной по убыванию
or ((i mod n<i div n)and(j mod n<j div n)and(a[i div n,i mod n]<a[j div n,j mod n]))then
 begin
  x:=a[i div n,i mod n];
  a[i div n,i mod n]:=a[j div n,j mod n];
  a[j div n,j mod n]:=x;
 end;
writeln('Отсортированная матрица:');
for i:=0 to n-1 do
 begin
  for j:=0 to n-1 do
  write(a[i,j]:4);
  writeln;
 end;
end.
1
0 / 0 / 0
Регистрация: 26.09.2018
Сообщений: 6
23.10.2018, 17:55  [ТС] 9
Как изменить эту программу чтобы получилось " отсортировать главную диагональ по возрастанию"

Добавлено через 9 минут
Пожалуйста срочно надо
0
Почетный модератор
64288 / 47587 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
23.10.2018, 19:07 10
Pascal
1
2
3
4
5
6
7
8
for i:=1 to n-1 do
for j:=i+1 to n do
if a[[i,i]>a[j,j] then
 begin
  x:=a[i,i];
  a[i,i]:=a[j,j];
  a[j,j]:=x;
 end;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.10.2018, 19:07
Помогаю со студенческими работами здесь

Матрицы. Обнулить элементы, лежащие одновременно ниже главной и выше побочной диагонали
Всем привет Есть задачка Дана квадратная матрица порядка М. Обнулить элементы матрицы, лежащие...

Отсортировать элементы матрицы выше главной диагонали по возрастанию
отсортировать элементы выше главной диагонали по возрастанию. что-то не работает( for i:=1 to n...

Найти количество нулевых элементов матрицы, стоящих: выше главной диагонали; ниже главной диагонали
Дана квадратная вещественная матрица размерности n. Найти количество нулевых элементов, стоящих:...

Обнулить элементы матрицы, лежащие одновременно выше главной диагонали и ниже побочной диагонали
Дана квадратная матрица порядка М. Обнулить элементы матрицы,лежащие одновременно выше главной...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru