Аватар для voice8787
19 / 19 / 12
Регистрация: 21.08.2010
Сообщений: 136

Упорядочить массив

02.09.2010, 10:01. Показов 811. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задан массив чисел. Он разбит на подмассивы, которые находятся между нулями. Упорядочить элементы подмассивов по возрастанию, элементы не входящие в подмассивы, а так же подмассивы между собой (по минимальному элементу).
Например если задан массив 9850650073210078044, то 1-й подмассив - 65, 2-й -7321, 3-й - 78. Элементы 985, 44 , не входят в подмассивы.
В результате должно получиться 5890123700560078044.

Обьяснил как мог, задачи нет в текстовом варианте.

Интересно, можно ли её решить менее громоздким способом.

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
program sortt;
type
massiv=array[1..100] of integer;
var
nommax,max,nommin,y,min,x,nom:massiv;
w,u,p,s,d,a,f,h,j,k,b,i,n:integer;
 
begin
k:=0;
write('n=');
readln(n);
for i:=1 to n do
begin
write('x[',i,']=');
readln(x[i]);
if x[i]=0 then
begin
k:=k+1;
nom[k]:=i;
end;
end;
 
 
for h:=1 to n do
begin
for i:=1 to n do
begin
if (x[i]<>0) and (x[i+1]<>0) then
begin
if x[i]>x[i+1] then
begin
b:=x[i+1];
x[i+1]:=x[i];
x[i]:=b;
end;
end;
end;
end;
 
 
u:=0;
for j:=1 to k-1 do
begin
if ((nom[j+1]-nom[j])>1) then
begin
u:=u+1;
min[u]:=100;
for i:=nom[j]+1 to nom[j+1]-1 do
begin
if x[i]<min[u] then
begin
min[u]:=x[i];
nommin[u]:=i;
end;
end;
end;
end;
 
u:=0;
for j:=1 to k-1 do
begin
if ((nom[j+1]-nom[j])>1) then
begin
u:=u+1;
max[u]:=-100;
for i:=nom[j]+1 to nom[j+1]-1 do
begin
if x[i]>max[u] then
begin
max[u]:=x[i];
nommax[u]:=i;
end;
end;
end;
end;
 
for i:=1 to u-1 do
begin
for j:=1 to u-i do
begin
if min[j+1]<min[j] then
begin
b:=nommin[j];
nommin[j]:=nommin[j+1];
nommin[j+1]:=b;
p:=nommax[j];
nommax[j]:=nommax[j+1];
nommax[j+1]:=p;
end;
end;
end;
s:=1;
j:=1;
d:=1;
while d<=n do
begin
while ((d<nom[1]) or (d>nom[k]))  and (d<=n) do
begin
y[d]:=x[d];
d:=d+1;
end;
 
if s<=k-1 then
begin
y[d]:=0;
while ((nom[s+1]-nom[s])=1) do
begin
d:=d+1;
y[d]:=0;
s:=s+1;
end;
end;
 
if s<=k-1 then
begin
for f:=nommin[j] to nommax[j] do
begin
d:=d+1;
y[d]:=x[f];
end;
end;
 
d:=d+1;
j:=j+1;
s:=s+1;
end;
 
 
for d:=1 to n do
begin
write('y[',d,']=');
writeln(y[d]);
end;
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.09.2010, 10:01
Ответы с готовыми решениями:

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

Создайте массив, который состоит из 15 разных чисел. Упорядочить массив по спаданию
Создайте массив, который состоит из 15 разных чисел. Упорядочить массив по спаданию

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

6
Почетный модератор
 Аватар для Puporev
64312 / 47609 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
02.09.2010, 10:13
Мне кажется
В результате должно получиться
44 0 1237 00 56 00 78 0 985
44 и 985 не сортируем, но меняем местами, так минимальный элемент в 44(4) меньше минимального элемента в 985(5).
подмассивы также расставляем по возрастанию минимального элемента,
я так думаю...
0
 Аватар для voice8787
19 / 19 / 12
Регистрация: 21.08.2010
Сообщений: 136
02.09.2010, 10:20  [ТС]
нет, 44 и 985 сортируем, но местами не меняем
меняются местами только подмассивы стоящие между нулями

остальное верно, подмассивы расставляем по возрастанию минимального элемента
0
Почетный модератор
 Аватар для Puporev
64312 / 47609 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
02.09.2010, 10:27
1.
Цитата Сообщение от voice8787 Посмотреть сообщение
Упорядочить элементы подмассивов по возрастанию,
Это сортировка подмассивов и только их
2.
Цитата Сообщение от voice8787 Посмотреть сообщение
элементы не входящие в подмассивы, а так же подмассивы между собой (по минимальному элементу).
А сейчас все куски сортируем между собой по минимальному элементу.

Добавлено через 3 минуты
Я бы создал тип массив записей такого вида
Pascal
1
2
3
4
5
type mzap=record
                n:byte;//размер подмассива
                m:array [1..100] of integer;//сам подмассив
                min:integer;//его минимальный
                end;
Собрал бы куски массива в него и издевался бы уже над ним.
0
 Аватар для voice8787
19 / 19 / 12
Регистрация: 21.08.2010
Сообщений: 136
02.09.2010, 10:31  [ТС]
Еще раз. Подмассивы - элементы находящиеся между нулями. Просортировать каждый подмассив по возрастанию. Затем просортировать подмассивы между собой по минимальному элементу. Элементы не входящие в подмассивы между нулями просто просортировать по возрастанию, но местами не менять.
0
Почетный модератор
 Аватар для Puporev
64312 / 47609 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
02.09.2010, 10:48
voice8787, С бугра конечно виднее. Наверное я не сильно русский и плохо понимаю этот язык. Удачи тебе!
0
 Аватар для voice8787
19 / 19 / 12
Регистрация: 21.08.2010
Сообщений: 136
02.09.2010, 10:54  [ТС]
Puporev, тебе виднее, удачи!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.09.2010, 10:54
Помогаю со студенческими работами здесь

Массив: Массив из 100эл заполнен случайными числами в диапазоне от 2 до 98 упорядочить в порядке возрастания
Помогите решить пожайлуста задачу: Массив из 100эл заполнен случайными числами в диапазоне от 2 до 98( значение всех эл. должно быть быть...

упорядочить массив
Помогите сделать!!! дан массив натуральных чисел. упорядочить его элементы с массивом индексов по убыванию произведения нечетных чифр в...

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

Упорядочить символьный массив
задан символьный массив Аnn со случайно расставленными, не идущими подряд строчными буквами латинского алфавита. Расставить их по авфавиту

Упорядочить массив по возрастанию
Вот задачка. Сортировка Шелла. Дан массив n действительных чисел. Требуется упорядочить его по возрастанию. Делается это следующим...


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

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

Новые блоги и статьи
Согласованность транзакций в MongoDB
Codd 30.04.2025
MongoDB, начинавшая свой путь как классическая NoSQL система с акцентом на гибкость и масштабируемость, сильно спрогрессировала, включив в свой арсенал поддержку транзакционной согласованности. Это. . .
Продвинутый ввод-вывод в Java: NIO, NIO.2 и асинхронный I/O
Javaican 30.04.2025
Когда речь заходит о вводе-выводе в Java, классический пакет java. io долгие годы был единственным вариантом для разработчиков, но его ограничения становились всё очевиднее с ростом требований к. . .
Обнаружение объектов в реальном времени на Python с YOLO и OpenCV
AI_Generated 29.04.2025
Компьютерное зрение — одна из самых динамично развивающихся областей искусственного интеллекта. В нашем мире, где визуальная информация стала доминирующим способом коммуникации, способность машин. . .
Эффективные парсеры и токенизаторы строк на C#
UnmanagedCoder 29.04.2025
Обработка текстовых данных — частая задача в программировании, с которой сталкивается почти каждый разработчик. Парсеры и токенизаторы составляют основу множества современных приложений: от. . .
C++ в XXI веке - Эволюция языка и взгляд Бьярне Страуструпа
bytestream 29.04.2025
C++ существует уже более 45 лет с момента его первоначальной концепции. Как и было задумано, он эволюционировал, отвечая на новые вызовы, но многие разработчики продолжают использовать C++ так, будто. . .
Слабые указатели в Go: управление памятью и предотвращение утечек ресурсов
golander 29.04.2025
Управление памятью — один из краеугольных камней разработки высоконагруженных приложений. Го (Go) занимает уникальную нишу в этом вопросе, предоставляя разработчикам автоматическое управление памятью. . .
Разработка кастомных расширений для компилятора C++
NullReferenced 29.04.2025
Создание кастомных расширений для компиляторов C++ — инструмент оптимизации кода, внедрения новых языковых функций и автоматизации задач. Многие разработчики недооценивают гибкость современных. . .
Гайд по обработке исключений в C#
stackOverflow 29.04.2025
Разработка надёжного программного обеспечения невозможна без грамотной обработки исключительных ситуаций. Любая программа, независимо от её размера и сложности, может столкнуться с непредвиденными. . .
Создаем RESTful API с Laravel
Jason-Webb 28.04.2025
REST (Representational State Transfer) — это архитектурный стиль, который определяет набор принципов для создания веб-сервисов. Этот подход к построению API стал стандартом де-факто в современной. . .
Дженерики в C# - продвинутые техники
stackOverflow 28.04.2025
История дженериков началась с простой идеи — создать механизм для разработки типобезопасного кода без потери производительности. До их появления программисты использовали неуклюжие преобразования. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru