165 / 1 / 1
Регистрация: 15.02.2012
Сообщений: 41

Отсортировать столбцы матрицы по невозрастанию количества отрицательных чисел в столбцах (простыми вставками)

05.04.2012, 23:04. Показов 1687. Ответов 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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
procedure task2(var ns1,ns2:integer; mas:PTable);
 
 
 var
  max:array[1..{ns2}20] of integer;
   i,j,t1,z,f:integer;
       b:boolean;
       t2:TElem;
 
 
 begin
  { создаю ключи - последовательность содержащая количество отр чисел в столбцах для каждого столбца соотв элемент }
 
  for j:=1 to ns2 do max[j]:=0;
 
 
  for j:=1 to ns2 do
   begin
    for i:=1 to ns1 do
     if mas^[i]^[j]<0 then inc(max[j]);
 
   end;
                             for i:=1 to ns2 do
   write(max[i]);
                 writeln;
  { вот здесь пытался сделать сортировку \\ пузырек получался но простые вставки не получаются }
 
  for i := 2 to ns2 do
 if max[i - 1] > max[i] then                {*}
   begin
 
 
    t1 := max[i];
    j := i - 1;
   while (j > 0) and (max[j] > t1
   ) do
     begin
      max[j + 1] := max[j];
      j := j - 1;
     end;
   max[j + 1] := t1;
 
    (*
 
 
  for f:=1 to ns1 do begin
     t2 := mas^[f]^[i];
    j := i - 1;
   while (j > 0) and (mas^[f]^[j] > t2) do      {**}
     begin
      mas^[f]^[j + 1] := mas^[f]^[j];
      j := j - 1;
     end;
   mas^[f]^[j + 1] := t2;
 
               end;
 
 
                *)
 
 
 
 end;
 
 
                for i:=1 to ns2 do
   write(max[i]);
end;
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.04.2012, 23:04
Ответы с готовыми решениями:

Переставить столбцы матрицы по росту количества отрицательных элементов в столбцах
Для матрицы С (m, n), 1 &lt;m, n &lt;10 переставить столбцы по росту количества отрицательных элементов в столбцах. Помогите пожалуйста, или...

Переставить столбцы матрицы по возрастанию количества отрицательных элементов в столбцах
Переставить столбцы по возрастанию количества отрицательных элементов в столбцах.

Отсортировать столбцы матрицы в порядке невозрастания количества отрицательных элементов
подскажите пожалуйста с чего начать ЗАДАЧА 26. Отсортировать столбцы матрицы в по-рядке невозрастания количества отрицательных...

2
11 / 11 / 4
Регистрация: 11.03.2011
Сообщений: 30
06.04.2012, 01:22
У меня есть сортировка методом прямое включение. насколько я помню это и есть простые вставки. вот код:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Procedure  vkl(m:integer; var mass:TA); {m - кол-во элементов массива} 
Var i,j,x:integer;
    sr,per:longint;
begin
   sr:=0;
   per:=0;
   for i:=2 to m do
   begin
     x:=mass[i];
     j:=i-1;
     while (j>=1) and (mass[j]>x) do begin
       sr:=sr+1;
       per:=per+1;
       mass[j+1]:=mass[j];
       j:=j-1;
     end;
     sr:=sr+1;
     mass[j+1]:=x;
   end;
   write(sr:10,'  |',per:12,'  |');
end;
Добавлено через 11 минут
Забыла сказать. Программа выводит кол-во сравнений sr и перестановок per при сортировке
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
06.04.2012, 08:25
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
uses crt;
const nmax=20;
type  matr=array[1..nmax,1..nmax] of integer;
procedure Vvod(var mt:matr;var x,y:byte);
{создаем исходную матрицу}
var i,j:byte;
begin
repeat
write('Количество строк до ',nmax-1,'=');
readln(x);
until x in [1..nmax-1];
repeat
write('Количество столбцов=');
readln(y);
until y in [1..nmax];
writeln('Исходная матрица:');
for i:=1 to x do
for j:=1 to y do
mt[i,j]:=-20+random(40);
end;
 
procedure KolOtr(var mt:matr;x,y:byte);
{считаем количество отрицательных в столбце}
var i,j,k:byte;
begin
for j:=1 to y do
 begin
  k:=0;
  for i:=1 to x do
  if mt[i,j]<0 then k:=k+1;
  mt[x+1,j]:=k;{и записываем в дополнительную строку}
 end;
end;
 
procedure Vyvod(var mt:matr;x,y:byte);
{вывод матриц с суммой}
var i,j:byte;
begin
for i:=1 to x do
 begin
  write(' ':8);{5 пробелов в начале строки}
  for j:=1 to y do
  write(mt[i,j]:4);{элементы строки}
  writeln;
 end;
write('Кол.отр.');{дополнительная строка с суммами}
for j:=1 to y do
write(mt[x+1,j]:4);
writeln;
writeln;
end;
 
procedure SrVst(var mt:matr;x,y:byte);
{перестановка столбцов по невозрастанию количества отрицательных  методом вставок}
var i,j,k:byte;
    buf:integer;{буфер для обмена в строке сумм}
    p:array[1..nmax] of integer; {буферы для обмена в остальных строках}
begin
for i:=2 to y do{по строке}
 begin
  buf:=mt[x+1,i];{запоминаем элемент в строке сумм}
  for k:=1 to x do
  p[k]:=mt[k,i]; {элементы на тех же позициях в остальных строках}
  j:=i-1;{смотрим элемент перед ним}
  while (j>=1) and (mt[x+1,j]<buf) do
  {пока не дошли до первого и элемент больше начального}
   begin
    mt[x+1,j+1]:=mt[x+1,j];{сдвигаем вправо}
    for k:=1 to x do
    mt[k,j+1]:=mt[k,j];{то же с элемнтами в других строках}
    j:=j-1;{следующий влево элемент}
   end;
  mt[x+1,j+1]:=buf;{вставляем элемент на место}
  for k:=1 to x do
  mt[k,j+1]:=p[k];{то же с элемнтами в других строках}
 end;
end;
 
var a:matr;
    n,m:byte;
begin
clrscr;
randomize;
Vvod(a,n,m);
KolOtr(a,n,m);
Vyvod(a,n,m);
SrVst(a,n,m);
writeln('Столбцы упорядочены:');
Vyvod(a,n,m);
readln
end.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.04.2012, 08:25
Помогаю со студенческими работами здесь

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

Отсортировать столбцы матрицы в порядке невозрастания количества отрицательных элементов содержащихсяв них
Задание\ Отсортировать столбцы матрицы в порядке невозрастания количества отрицательных элементов содержащихсяв них . Сортировка...

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

Отсортировать столбцы по убыванию суммы чисел в столбцах
Дана матрица (N+15)x(N+15), отсортировать столбцы по убыванию суммы чисел в столбцах. Числа генерировать случайно в интервале . ...

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


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

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

Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru