Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 03.11.2009
Сообщений: 3

Сортировка массива методом линейной вставки☺

03.11.2009, 19:00. Показов 4169. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У нас получилась разбежка практики с лекциями на 8 пар, вот и не знаю как решить☺
Дана действительная матрица A размерности . Каждый столбец содержит хотя бы один отрицательный элемент. Если максимальный элемент матрицы принадлежит интер-валу [4, 15], то упорядочить столбцы матрицы по возрастанию сумм отрицательных элемен-тов столбцов методом линейной вставки. В противном случае матрицу оставить без изме-нения. посят на печать выдавать всю исходную информацию, промежуточные результаты и преобразованную матрицу.
Написать две программы:
 без использования подпрограмм
 с использованием подпрограмм с передачей параметров, реализующих: ввод, вывод, обработка матрицы, метод сортировки.
Помогите пожалуйста☺
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.11.2009, 19:00
Ответы с готовыми решениями:

Сортировка двумерного массива методом вставки
Необходимо в двумерном массиве отсортировать столбцы по среднему значению по убыванию методом вставки!

Сортировка одномерного массива по убыванию методом вставки
разработать программу реализующую сортировку одномерного массива по убыванию методом вставки

Упорядочить столбцы матрицы по возрастанию максимальных элементов столбцов методом линейной вставки
1 задача... Тема: «Методы сортировок» Выполнить задание по обработке матриц с использованием указанных методов сорти-ровок. ...

4
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
03.11.2009, 19:03
Цитата Сообщение от m-o-r-t-r-o-m Посмотреть сообщение
Дана действительная матрица A размерности .
Какой?
0
0 / 0 / 0
Регистрация: 03.11.2009
Сообщений: 3
03.11.2009, 19:16  [ТС]
Видимо они хотят, что бы размерность матрицы можно было задать при выполнении.

Добавлено через 6 минут
m*n к примеру, так чтобы m и n задавались
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
04.11.2009, 09:40
С подпрограммами.
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
uses crt;
const nmax=20;
type  matr=array[1..nmax,1..nmax] of real;
{проверяем есть ли в каждом столбце хоть 1 отрицательный}
function Proverka(mt:matr;x,y:byte):boolean;
var i,j,k,s:byte;
begin
s:=0;
for j:=1 to y do
 begin
  k:=0;
  for i:=1 to x do
  if mt[i,j]<0 then
   begin
    k:=1;{есть в столбце}
    break;{дальше не ищем}
   end;
  if k=1 then s:=s+1;{считаем столбцы с отрицательными}
 end;
if s=y then  Proverka:=true {если есть во всех, OK}
else Proverka:=false;
end;
procedure Vvod(var mt:matr;var x,y:byte);
var i,j:byte;
begin
repeat
write('Количество строк=');readln(x);
until x in [1..nmax];
repeat
write('Количество столбцов=');readln(y);
until y in [1..nmax];
writeln('Исходная матрица:');
repeat
for i:=1 to x do
for j:=1 to y do
mt[i,j]:=36*random-20;
until Proverka(mt,x,y);{матрица генерируется, пока не выполнится условие}
end;
procedure Vyvod1(var mt:matr;x,y:byte);{вывод исходной матрицы}
var i,j:byte;
begin
for i:=1 to x do
 begin
  for j:=1 to y do
  write(mt[i,j]:7:2);
  writeln;
 end;
writeln;
end;
procedure Vyvod2(var mt:matr;x,y:byte);{вывод матриц с суммой}
var i,j:byte;
begin
for i:=1 to x do
 begin
  write(' ':5);{5 пробелов в начале строки}
  for j:=1 to y do
  write(mt[i,j]:7:2);{элементы строки}
  writeln;
 end;
write('Сумма');{дополнительная строка с суммами}
for j:=1 to y do
write(mt[x+1,j]:7:2);
writeln;
writeln;
end;
function Max(mt:matr;x,y:byte):real;{находим макс в матрице}
var i,j:byte;
    mx:real;
begin
mx:=mt[1,1];
for i:=1 to x do
for j:=1 to y do
if mt[i,j]>mx then mx:=mt[i,j];
Max:=mx;
end;
procedure Summ(var mt:matr;x:byte;y:byte);
{считаем сумму отрицательных в столбце}
var i,j:byte;
    sm:real;
begin
for j:=1 to y do
 begin
  sm:=0;
  for i:=1 to x do
  if mt[i,j]<0 then sm:=sm+mt[i,j];
  mt[x+1,j]:=sm;{и записываем в дополнительную строку}
 end;
end;
procedure SrVst(var mt:matr;x,y:byte);
{перестановка столбцов по возрастанию суммы методом вставок}
var i,j,k:byte;
    buf:real;{буфер для обмена в строке сумм}
    p:array[1..nmax] of real; {буферы для обмена в остальных строках}
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);
Vyvod1(a,n,m);
Writeln('Максимальный=',Max(a,n,m):0:2);
writeln;
if (Max(a,n,m)<4)or(Max(a,n,m)>15)then
 begin
  writeln('Матрица не изменена:');
  Vyvod1(a,n,m);
 end
else
 begin
  Summ(a,n,m);
  writeln('Суммы отрицательных в столбцах:');
  Vyvod2(a,n,m);
  SrVst(a,n,m);
  writeln('Столбцы упорядочены:');
  Vyvod2(a,n,m);
 end;
readln
end.
Без подпрограмм.
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
uses crt;
const nmax=20;
var a:array[1..nmax,1..nmax] of real;
    n,m,i,j,s,k:byte;
    f:boolean;
    mx,sm:real;
    buf:real;{буфер для обмена в строке сумм}
    p:array[1..nmax] of real;{буферы для обмена в остальных строках}
begin
clrscr;
randomize;
repeat
write('Количество строк=');readln(n);
until n in [1..nmax];
repeat
write('Количество столбцов=');readln(m);
until m in [1..nmax];
writeln('Исходная матрица:');
repeat
for i:=1 to n do
for j:=1 to m do
a[i,j]:=36*random-20;
{проверяем есть ли в каждом столбце хоть 1 отрицательный}
s:=0;
for j:=1 to m do
 begin
  k:=0;
  for i:=1 to n do
  if a[i,j]<0 then
   begin
    k:=1;{есть в столбце}
    break;{дальше не ищем}
   end;
  if k=1 then s:=s+1;{считаем столбцы с отрицательными}
 end;
if s=m then  f:=true {если есть во всех, OK}
else f:=false;
until f;{матрица генерируется, пока не выполнится условие}
for i:=1 to n do
 begin
  for j:=1 to m do
  write(a[i,j]:7:2);
  writeln;
 end;
writeln;
mx:=a[1,1];{ищем максимальный}
for i:=1 to n do
for j:=1 to m do
if a[i,j]>mx then mx:=a[i,j];
writeln('Максимальный=',mx:0:2);
writeln;
if (mx<4)or(mx>15)then
 begin
  writeln('Матрица не изменена:');
  for i:=1 to n do
   begin
    for j:=1 to m do
    write(a[i,j]:7:2);
    writeln;
   end;
 end
else
 begin
  {считаем сумму отрицательных в столбце}
  for j:=1 to m do
   begin
    sm:=0;
    for i:=1 to n do
    if a[i,j]<0 then sm:=sm+a[i,j];
    a[n+1,j]:=sm;{и записываем в дополнительную строку}
   end;
  writeln('Суммы отрицательных в столбцах:');
  for i:=1 to n do
   begin
    write(' ':5);{5 пробелов в начале строки}
    for j:=1 to m do
    write(a[i,j]:7:2);{элементы строки}
    writeln;
   end;
  write('Сумма');{дополнительная строка с суммами}
  for j:=1 to m do
  write(a[n+1,j]:7:2);
  writeln;
  writeln;
  for i:=2 to m do{по строке}
   begin
    buf:=a[n+1,i];{запоминаем элемент в строке сумм}
    for k:=1 to n do
    p[k]:=a[k,i]; {элементы на тех же позициях в остальных строках}
    j:=i-1;{смотрим элемент перед ним}
    while (j>=1) and (a[n+1,j]>buf) do
    {пока не дошли до первого и элемент больше начального}
     begin
      a[n+1,j+1]:=a[n+1,j];{сдвигаем вправо}
      for k:=1 to n do
      a[k,j+1]:=a[k,j];{то же с элемнтами в других строках}
      j:=j-1;{следующий влево элемент}
     end;
    a[n+1,j+1]:=buf;{вставляем элемент на место}
    for k:=1 to n do
    a[k,j+1]:=p[k];{то же с элемнтами в других строках}
   end;
  writeln('Столбцы упорядочены:');
  for i:=1 to n do
   begin
    write(' ':5);{5 пробелов в начале строки}
    for j:=1 to m do
    write(a[i,j]:7:2);{элементы строки}
    writeln;
   end;
  write('Сумма');{дополнительная строка с суммами}
  for j:=1 to m do
  write(a[n+1,j]:7:2);
 end;
readln
end.
0
0 / 0 / 0
Регистрация: 03.11.2009
Сообщений: 3
04.11.2009, 15:05  [ТС]
Спасибо большое. Отдельная благодарность за коментарии☺
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.11.2009, 15:05
Помогаю со студенческими работами здесь

Сортировка методом вставки
Мне нужна отсортировать масыв методом вставки Вот я штота делав но уменя почумута все 0 выходит проверьте што не так Program vstavka; ...

Сортировка методом выбора и вставки
Помогите пожалуйста решить задачу:Определить массив из 50 вещественных чисел: x = Cos( i/10), i= 1, 2, . . . 50. Отсортировать массив по...

Сортировка числового вектора методом вставки
Сортировка числового вектора методом вставки Добавлено через 2 минуты люди! очень нужна помощь! Добавлено через 6 минут ...

Сортировка методом вставки чётных и нечётных чисел
Организовать массив, что состоит из 20 целых чисел. Упорядочить отдельно чётные элементы по возрастанию, а после - нечётные по убыванию. ...

Задача на сортировку одномерного массива методом простой вставки
Люди help!!! Две недели безрезультатно гроблю время на эту задачу! Составить алгоритм, упорядочивающий элементы массива, стоящие на...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru