Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
3 / 3 / 1
Регистрация: 05.12.2014
Сообщений: 74
Записей в блоге: 3

Нечетные числа массива отсортировать по возрастанию, а четные по убыванию

06.06.2015, 23:26. Показов 3922. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, уважаемые программисты и разработчики C++.
Вот такая задача стоит : разработать программу, в которой необходимо ввести динамический массив с клавиатуры, а затем все нечетные числа этого массива отсортировать по возрастанию, а четные по убыванию, следующим образом.
Например :
размерность 6
массив 6 5 4 3 2 1
выходные данные

1 3 5 6 4 2

Заранее большое спасибо !
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.06.2015, 23:26
Ответы с готовыми решениями:

Отсортировать четные элементы массива по возрастанию, а нечетные по убыванию
помогите найти ошибку.не верно сортирует. #include <iostream> #include <math.h> #include<stdlib.h> #include<conio.h> ...

Отсортировать четные элементы массива по возрастанию, а нечетные по убыванию
По четным по возрастанию по нечетным по убыванию. Пробую пузырьковую сортировку не получается(

В одномерном массиве отсортировать все четные числа по возрастанию, а нечетные - по убыванию на своих местах
В одномерном числовом массиве отсортировать все четные числа по возрастанию, а нечетные по убыванию на своих местах. Пример: 3284967 ...

34
3 / 3 / 1
Регистрация: 05.12.2014
Сообщений: 74
Записей в блоге: 3
07.06.2015, 01:14  [ТС]
Студворк — интернет-сервис помощи студентам
Velesthau,
C++
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
#include <iostream.h>
 
int main(){
/* ñîðòèðîâêà ìàññèâà */
 
int n,i;
cin >> n;
int *array;
array = new int [n]; 
cout << "dd"<< endl;
for(i=0;i<n;i++){
                 cin>>array[i];
                 }  
      for(i=0;i<n;i++){
                       int pos = i;
                       int tmp = array[i];
                       for(int j=i+1;j<n;j++){
                               if(array[j]<tmp){
                                                pos=j;
                                                tmp=array[j];
                                                }
                               }
                               array[pos]=array[i];
                               array[i]=tmp;
                               cout << array[i] << " " ;
                       }
        
system("pause");
return 0;
}
Добавлено через 29 секунд
Velesthau, спасибо, чувак, я понял как делать )
0
07.06.2015, 01:16

Не по теме:

Цитата Сообщение от tabbols Посмотреть сообщение
спасибо, чувак, я понял как делать
Сомневаюсь, чувак :) но дело твое.

0
3 / 3 / 1
Регистрация: 05.12.2014
Сообщений: 74
Записей в блоге: 3
07.06.2015, 01:18  [ТС]
Velesthau, сомневаешься в том, что я понял ?
0
07.06.2015, 01:19

Не по теме:

Цитата Сообщение от tabbols Посмотреть сообщение
Velesthau, сомневаешься в том, что я понял ?
Точно. В любом случае, решение выше у тебя есть.

0
3 / 3 / 1
Регистрация: 05.12.2014
Сообщений: 74
Записей в блоге: 3
07.06.2015, 01:30  [ТС]
Velesthau,
C++
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
#include <iostream.h>
 
int main(){
/* сортировка массива */
 
int n,i;
cin >> n;
int *array;
array = new int [n]; 
for(i=0;i<n;i++){
                 cin>>array[i];
                 }  
      for(i=0;i<n;i++){
                       if(array[i]%2!=0){
                       int pos = i;
                       int tmp = array[i];
                       for(int j=i+1;j<n;j++){
                               if(array[j]<tmp and array[j]%2!=0){
                                                pos=j;
                                                tmp=array[j];
                                                }
                               }
                               array[pos]=array[i];
                               array[i]=tmp;
                               cout << array[i] << " " ;
                               }
                               }
      for(i=0;i<n;i++){
                       if(array[i]%2==0){
                       int pos = i;
                       int tmp = array[i];
                       for(int j=i+1;j<n;j++){
                               if(array[j]>tmp and array[j]%2==0){
                                                pos=j;
                                                tmp=array[j];
                                                }
                               }
                               array[pos]=array[i];
                               array[i]=tmp;
                               cout << array[i] << " " ;
                               }
                               }
                               cout << endl;
        
system("pause");
return 0;
}
Добавлено через 19 секунд
Velesthau, и все хорошо работает )
0
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
07.06.2015, 01:37

Не по теме:

Хоть так.



Добавлено через 3 минуты

Не по теме:

Цитата Сообщение от tabbols Посмотреть сообщение
и все хорошо работает )
"хорошо" - понятие относительное )

0
3 / 3 / 1
Регистрация: 05.12.2014
Сообщений: 74
Записей в блоге: 3
07.06.2015, 01:37  [ТС]
Velesthau, я учусь не на программиста, так что мне и так уже хорошо, главное я научился )
0
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
07.06.2015, 01:38

Не по теме:

Цитата Сообщение от tabbols Посмотреть сообщение
Velesthau, я учусь не на программиста, так что мне и так уже хорошо, главное я научился )
Ок-ок.



Добавлено через 44 секунды

Не по теме:

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

0
3 / 3 / 1
Регистрация: 05.12.2014
Сообщений: 74
Записей в блоге: 3
07.06.2015, 01:39  [ТС]
Velesthau, учитель математики и информатики !
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
07.06.2015, 09:43
Цитата Сообщение от tabbols Посмотреть сообщение
мне нужно понять, как сделать сортировку
Фильтруешь массив на четные и не четные, т.о. будет два массива - четных и нечетных. Сортируешь эти массивы с учетом задания, далее эти два массива лепишь в один.
Можно сделать и без "промежуточных" массивов, но алгоритм будет на порядок сложнее.
Надеюсь знаешь как определить четное или нечетное ?
0
3 / 3 / 1
Регистрация: 05.12.2014
Сообщений: 74
Записей в блоге: 3
07.06.2015, 12:43  [ТС]
Почтальон, да, я уже сделал, я просто не знал, как отсортировать массив
0
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
08.06.2015, 12:55
Цитата Сообщение от Почтальон Посмотреть сообщение
Можно сделать и без "промежуточных" массивов, но алгоритм будет на порядок сложнее.
Да не. Просто берешь любой алгоритм сортировки и немного меняешь условие. И все будет работать.
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
08.06.2015, 13:12
Velesthau, tabbols, забыли про удаление массива.
Velesthau, куда столько оффтопа?

Балуюсь
C++
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
#include <vector>
#include <algorithm>
#include <iostream>
 
using namespace std;
 
int main()
{
int n;                           //// Если так хочется
cin >> n;                          //
int *array;                        //
array = new int [n];               //
cout << "dd"<< endl;               //
for(int i=0;i<n;i++){              //
                 cin>>array[i];    //
                 }               ////
 
std::vector< int > even( 0 ),
                   odd ( 0 );
 
for( int count=0; count<n; count++ )
  if( array[count] % 2 )
    even.push_back( array[count] );
  else
    odd.push_back( array[count] );
 
std::sort( odd.begin(),  odd.end() );
std::sort( even.begin(), even.end() );
std::reverse( even.begin(), even.end() );
 
memcpy( array,              odd.begin(),  odd.size()  * sizeof( int ) );
memcpy( array + odd.size(), even.begin(), even.size() * sizeof( int ) );
 
for( int i=0; i<n; i++ )
  cout << array[i] << ' ';
 
cin.ignore(2);
 
delete []array;
return 0;
}
0
08.06.2015, 13:31

Не по теме:

Цитата Сообщение от SatanaXIII Посмотреть сообщение
Velesthau, куда столько оффтопа?
Все относительно.

0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
08.06.2015, 14:16
Цитата Сообщение от Velesthau Посмотреть сообщение
Все относительно.
Перефразирую:
 Комментарий модератора 
Поменьше оффтопа, пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.06.2015, 14:16

Сортировка массива: Четные числа — по возрастанию, нечетные числа — по убыванию
Дан целочисленный массив. Надо отсортировать его. Четные числа - по возрастанию Нечетные числа - по убыванию Эта программа является...

Сортировка массива вставкой, чтобы четные числа шли по возрастанию, а нечетные по убыванию
Всем привет! Есть задача отсортировать массив таким образом, чтобы четные числа шли в нем по возрастанию, а нечетные по убыванию. Числа...

Отсортировать чётные элементы по возрастанию, а нечётные по убыванию
Вот условие(могу кое где ошибаться в правильности постановки задачи) Составить одномерный массив, в котором бы выводилось 20(или более)...

Отсортировать четные строки матрицы по возрастанию, а нечетные по убыванию
помогите пожалуйста с программой))) отсортировать четные строки матрицы M*N по возрастанию, а не четные по убыванию (чтоб запускалась...

В массиве отсортировать четные строчки по возрастанию, а нечетные по убыванию
Дан двумерный массив с рандомными значениями , как отсортировать четные строчки по возрастанию, а нечетные по убыванию? from random...


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

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru