Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 24.10.2018
Сообщений: 5
1

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

24.10.2018, 11:50. Просмотров 2383. Ответов 11

ввести массив данных из N произвольных чисел и расположить четные из них от большего к меньшему, а затем нечетные - от меньшего к большему.
заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.10.2018, 11:50
Ответы с готовыми решениями:

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

Определить для массива X[n] алгебраические суммы четных и нечетных элементов массива
Вариант № 17 Задание 1. Определить для массива X алгебраические суммы четных и нечетных элементов...

Вывод четных и нечетных элементов массива
const n=10; var f1,f2: text; i,s,f,t1,t2,j,t,a: integer; m: array of integer; b:string; ...

Сложить минимальное четных и максимальное нечетных элементов массива
Даны натуральное число n, действительные числа a1, a2, … ,an. Получить min(a2, a4, … )+ max(a1,...

11
3312 / 2691 / 727
Регистрация: 25.03.2012
Сообщений: 9,720
Записей в блоге: 1
24.10.2018, 12:14 2
любой алгоритм сортировки подойдёт с модифицированным условием сравнения
то есть берёшь любую программу сортировки и заменяешь банальное a[i]>... на compare(a[i], ...
при условии что выше впрограмме прописана функция
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
function compare(left, right: integer):boolean;
begin
  if left mod 2 = 0 then
    if right mod 2 = 0 then
      compare:=(left>right)
    else
      compare:=true
  else
    if right mod 2 = 0 then
      compare:=false
    else
      compare:=(left<right)
end;
0
Модератор
62525 / 46704 / 32191
Регистрация: 18.05.2008
Сообщений: 113,017
24.10.2018, 12:29 3
Поскольку нужно
Цитата Сообщение от Pelmen500 Посмотреть сообщение
расположить четные из них от большего к меньшему, а затем нечетные - от меньшего к большему.
заменить везде mod 2 = 0 на mod 2 <> 0
0
3312 / 2691 / 727
Регистрация: 25.03.2012
Сообщений: 9,720
Записей в блоге: 1
24.10.2018, 12:48 4
Puporev, а смысл? В зависимости от того какой смысл вкладывать в значение compare=true, в таком ключе и делать условия.
У меня compare=true означает, что left в массиве должен стоять перед right, но можно и наоборот условиться.
0
Модератор
62525 / 46704 / 32191
Регистрация: 18.05.2008
Сообщений: 113,017
24.10.2018, 12:51 5
Да просто я запустил сортировку с Вашей функцией и вывело сначала нечетные, потом четные. Сменил знак, вывело нормально. В суть не вникал.
0
0 / 0 / 0
Регистрация: 24.10.2018
Сообщений: 5
24.10.2018, 13:16  [ТС] 6
мы просто еще не проходили boolean, можете в двух словах объяснить, что это?
0
Модератор
62525 / 46704 / 32191
Регистрация: 18.05.2008
Сообщений: 113,017
24.10.2018, 13:25 7
Это такой логический тип.
Pascal
1
2
3
4
5
6
7
var x,y:boolean;
begin
x:=2<1;
y:=2.1;
writeln(x);
writeln(y);
end.
выведет х=false, поскольку это неверное утверждение, и y=true, поскольку это верное утверждение.
0
0 / 0 / 0
Регистрация: 24.10.2018
Сообщений: 5
24.10.2018, 13:28  [ТС] 8
всем спасибо!

Добавлено через 1 минуту
и все-таки я не понял, что после end еще нужно писать?
0
3312 / 2691 / 727
Регистрация: 25.03.2012
Сообщений: 9,720
Записей в блоге: 1
24.10.2018, 13:29 9
Pelmen500, сортировку, ваш кеп
0
Модератор
62525 / 46704 / 32191
Регистрация: 18.05.2008
Сообщений: 113,017
24.10.2018, 13:31 10
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
function compare(left, right: integer):boolean;
begin
  if left mod 2 <>0 then
    if right mod 2 <> 0 then
      compare:=(left>right)
    else
      compare:=true
  else
    if right mod 2 <> 0 then
      compare:=false
    else
      compare:=(left<right)
end;
const n=20;
var a:array[1..n] of integer;
    i,j,x:integer;
begin
randomize;
for i:=1 to n do
 begin
  a[i]:=10+random(90);
  write(a[i]:3);
 end;
writeln;
writeln;
for i:=1 to n-1 do
for j:=i+1 to n do
if compare(a[i],a[j]) then
 begin
  x:=a[i];
  a[i]:=a[j];
  a[j]:=x;
 end;
for i:=1 to n do
write(a[i]:3);
end.
0
3312 / 2691 / 727
Регистрация: 25.03.2012
Сообщений: 9,720
Записей в блоге: 1
24.10.2018, 13:37 11
Цитата Сообщение от Puporev Посмотреть сообщение
if compare(a[i],a[j]) then
if not compare
0
Модератор
62525 / 46704 / 32191
Регистрация: 18.05.2008
Сообщений: 113,017
24.10.2018, 13:44 12
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
function compare(left, right: integer):boolean;
begin
  if left mod 2 = 0 then
    if right mod 2 = 0 then
      compare:=(left>right)
    else
      compare:=true
  else
    if right mod 2 = 0 then
      compare:=false
    else
      compare:=(left<right)
end;
const n=20;
var a:array[1..n] of integer;
    i,j,x:integer;
begin
randomize;
for i:=1 to n do
 begin
  a[i]:=10+random(90);
  write(a[i]:3);
 end;
writeln;
writeln;
for i:=1 to n-1 do
for j:=i+1 to n do
if not compare(a[i],a[j]) then
 begin
  x:=a[i];
  a[i]:=a[j];
  a[j]:=x;
 end;
for i:=1 to n do
write(a[i]:3);
end.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.10.2018, 13:44

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Сформировать два массива из четных и нечетных элементов исходного
Задан массив с количеством элементов N. Сформировать два массива: в первый включить элементы...

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

Определить количество четных и нечетных элементов одномерного массива.
Создать одномерный массив из 10 целых чисел. Определить количество четных и нечетных элементов...

Подсчитать количество четных и нечетных элементов одномерного массива
Подсчитать количество четных и нечетных элементов одномерного массива, заданного датчиком случайных...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.