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

Сортировка методом вставки чётных и нечётных чисел

27.02.2015, 21:35. Показов 2435. Ответов 7
Метки нет (Все метки)

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

Признаюсь, даже простая сортировка методом вставки не работает у меня.
Но, пытался делать эту программу, предполагая, что нужно в ходе сортировки определять число на чётность или нечётность. В итоге вылетела с exitcode201. Даже специально отключал rangecheckerror, но всё-равно вылетало.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.02.2015, 21:35
Ответы с готовыми решениями:

Сортировка одномерного массива методом «пузырька», выделение массивов из четных и нечетных чисел. Вычисление суммы нечетных чисел
Program Sortirovka; Uses Crt; Var a:array of integer; i,j,k,n,Sum : integer; BEGIN...

Сортировка методом четных и нечетных транспозиций
Добрый день. Необходимо отсортировать массив методом четных и нечетных транспозиций. Написал, но...

Двумерный массив рациональных чисел + среднее арифметическое чисел массива + сортировка методом вставки
Ничего не могу понять!Вроде все правильно создавал, но считает неправильно. +Выдает ошибку Так же...

Сортировка рандомных чисел спиралью методом вставки
Здравствуйте, нужна помощь с решением следующей задачи: Задана матрица размером 10х10 рандомных...

7
1646 / 1075 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
27.02.2015, 22:39 2
Цитата Сообщение от Magestian Посмотреть сообщение
определять число на чётность или нечётность.
function Odd(i: integer): boolean;
Возвращает True, если i нечетно
0
1 / 1 / 0
Регистрация: 25.09.2014
Сообщений: 125
27.02.2015, 23:10  [ТС] 3
Как сделать, что бы программа сначала отдельно чётные элементы сортировала, а потом лишь нечётные? У меня выходит всё вперемешку.
0
Эксперт Pascal/Delphi
6809 / 4566 / 4819
Регистрация: 05.06.2014
Сообщений: 22,438
28.02.2015, 08:52 4
Сортировка пузырьковым методом очень срочно!!! Вначале - чётные по возрастанию, затем нечётные - по убыванию.

Добавлено через 1 минуту
Ой. Вставкой надо было. Сами переделаете?
0
1 / 1 / 0
Регистрация: 25.09.2014
Сообщений: 125
01.03.2015, 14:49  [ТС] 5
Не могу, к сожалению.

Добавлено через 21 час 37 минут
Попрошу помочь.
0
Модератор
Эксперт по электронике
8340 / 4234 / 1605
Регистрация: 01.02.2015
Сообщений: 13,187
Записей в блоге: 5
01.03.2015, 15:26 6
1 вариант
проходишь по массиву a[1..n] и создаёшь массив индексов с чётными элементами Indx[1..KEven], потом сортируешь массив a через Indx - например сравнение пары чётных элементов if a[Indx[i]]<a[Indx[j]] then
И тоже самое для нечётных
2 вариант
Он хорош именно для метода вставок. Потому, что там все действия с последовательно расположенными элементами.
определи функцию NextEven(i), которая будет искать следующий за i четный элемент в массиве a. И выполняй вставку элемента, переход к следующему элементу.

Это твоё задание и оно не слишком сложное, чтобы после "8-й монеты", решённой тобою самостоятельно за пару часов, ты не мог справиться. Но и не так сложно, чтобы из любопытства, его хотелось решать другим.
Здесь не видно твоих попыток решения, одни "Up-Up-Up".
Вперёд! На клавиатуру! За алгоритм! За знания! Вдарь Паскалем по невыполненным заданиям! Сегодня он Паскаль не знает, а завтра милостыню собирает! Ура!
0
1 / 1 / 0
Регистрация: 25.09.2014
Сообщений: 125
01.03.2015, 20:37  [ТС] 7
Благодарю за пинок!
Сделал так:
1)Разделил массив на два массива: чётные и нечётные.
2)По отдельности упорядочил их как надо.
3)Слил их вместе.

К.П.:
Ввод: 22, 32, 64, 55, 31, 47, 92, 11, 19, 28, 82, 12, 41, 59, 66, 39, 93, 44, 69, 15.
Вывод: 12, 22, 28, 32, 44, 64, 66, 82, 92, 93, 69, 59, 55, 47, 41, 39, 31, 19, 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
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
Program ctrCcrtV;
uses    crt;
const   n=20;
var     i,k,pa,ne,temp,j,l:integer;
        a:array[1..n] of integer;
        pr:array[1..n] of integer;
        np:array[1..n] of integer;
Begin
textbackground(lightgray);
textcolor(black);
clrscr;
for i:=1 to n do
 Begin
 write('Enter a[',i,']: ');
 readln(a[i]);
 End;
 
for i:=1 to n do
 if odd(a[i])=false then
 Begin
 inc(pa);
 for k:=pa to pa do
 pr[k]:=a[i];
 End
 else if odd(a[i])=true then
 Begin
 inc(ne);
 for k:=ne to ne do
 np[k]:=a[i];
 End;
writeln;
writeln;
textcolor(green);
writeln('Chetnye: ');
for k:=1 to pa do
write(pr[k],' ');
writeln;
writeln;
textcolor(magenta);
writeln('Nechetnye: ');
for k:=1 to ne do
write(np[k],' ');
 
for k:=2 to pa do
Begin
temp:=pr[k];
j:=k-1;
while (j>=1) and (pr[j]>temp) do
Begin
pr[j+1]:=pr[j];
j:=j-1;
End;
pr[j+1]:=temp;
End;
 
for k:=2 to ne do
Begin
temp:=np[k];
j:=k-1;
while (j>=1) and (np[j]<temp) do
Begin
np[j+1]:=np[j];
j:=j-1;
End;
np[j+1]:=temp;
End;
writeln;
writeln;
textcolor(red);
writeln('Sort chetnye ');
for k:=1 to pa do
write(pr[k],' ');
textcolor(lightblue);
writeln;
writeln;
writeln('Sort nechetnye: ');
for k:=1 to ne do
write(np[k],' ');
 readln;
 
for i:=1 to pa do
a[i]:=pr[i];
l:=0;
for i:=pa+1 to n do
Begin
inc(l);
a[i]:=np[l];
End;
textcolor(blue);
writeln;
writeln('Sorted array: ');
for i:=1 to n do
write(a[i],' ');
 
readln;
End.
1
Модератор
Эксперт по электронике
8340 / 4234 / 1605
Регистрация: 01.02.2015
Сообщений: 13,187
Записей в блоге: 5
01.03.2015, 20:43 8
Хоть я думаю, что смысл сортировки - сортировка на месте без дополнительных сопоставимых по объёмам структур. Приведу и своё решение. Единственное замечание, сама сортировка - наивная, даже не пузырёк. Но это легко поправить, взяв образец нужной на форуме.
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
{
[url]https://www.cyberforum.ru/turbo-pascal/thread1384197.html[/url]
Организовать массив, что состоит из 20 целых чисел.
 Упорядочить отдельно чётные элементы по возрастанию, а после - нечётные по убыванию.
}
program DualSort;
 
const
  Nmax = 10;
type
  TArray = array[0..Nmax - 1] of integer;
  TIndex = array[0..Nmax - 1] of integer;
 
  procedure GetIndexes(const a: TArray; var Indx: TIndex; var n: integer;
    ParityEven: boolean);
  var
    i: integer;
  begin
    n := 0;
    for i := low(a) to high(a) do
      if odd(a[i]) xor ParityEven then
      begin
        Indx[n] := i;
        Inc(n);
      end;
  end;
 
  procedure sort(var a: TArray; const Indx: TIndex; n: integer; DirectUp: boolean);
  var
    i, j: integer;
    x: integer;
  begin
    if n < 2 then
      Exit;
    for i := 0 to n - 1 do
      for j := i + 1 to n - 1 do
      begin
        if (a[Indx[i]] < a[Indx[j]]) xor DirectUp then
        begin
          x := a[Indx[i]];
          a[Indx[i]] := a[Indx[j]];
          a[Indx[j]] := x;
        end;
      end;
  end;
 
var
  a: TArray = (8, 1, 6, 3, 4, 5, 2, 7, 0, 9);
  i: integer;
  Indexes: TIndex;
  Len: integer;
begin
  GetIndexes(a, Indexes, Len, True);
  sort(a, Indexes, Len, true);
  GetIndexes(a, Indexes, Len, False);
  sort(a, Indexes, Len, False);
  for i := low(a) to high(a) do
    Write(a[i]: 4);
  writeln;
end.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.03.2015, 20:43
Помогаю со студенческими работами здесь

Сортировка чётных и нечётных чисел
Программа сортирует 1)чётные по возрастанию, нечётные по убыванию. 2)Чётные слева, нечётные справа....

В двух заданных массивах найти количество чётных и нечётных чисел (в первом - чётных, во втором - нечётных)
Даны два массива целых чисел А (15) и В (15). Найти количество четных чисел в первом массиве и...

Масивы и сортировка методом обмена, методом вставки, методом выбора
Сортировку осуществить тремя способами: методом обмена. методом вставки, методом выбора.Решение...

Числа. Подсчитать количество четных и нечетных чисел- разрядов. Найти суммы только всех четных и только нечетных, проверить какая из сумм больше
Добрый день, не могу понять как же составить программу для этой задачи без использования массивов....


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

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

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