Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/29: Рейтинг темы: голосов - 29, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 04.01.2017
Сообщений: 16
1

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

05.01.2017, 21:25. Показов 5321. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
помогите найти ошибку.не верно сортирует.
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
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
#include <iostream>
#include <math.h>
#include<stdlib.h>
#include<conio.h>
#include<string>
#include<time.h>
using namespace std;
int main()
 {  
     srand(time(0));
    int n,i,s,k,j,d,max;
     setlocale(LC_ALL,"rus");
     cout<<"вв размерность  n=";
     cin>>n;
     int a[n],b[n],c[n];
     for (i=0; i<n; i++) 
     a[i]=rand()%30-10; 
     cout<<" a[n]=";
     cout<<"\n";
      for (i=0; i<n; i++) 
 {
     cout<<a[i]<<"\t";
 }
     i=0;
     k=0;
     j=0;
     do
{
    if(a[i]%2==0) 
    {
    c[k]=a[i];
    k++;
    }
    else
    {
    b[j]=a[i];
    j++;
    }
    i++;
}
while(i<n);
for(i=0; i<k+1;i++)
{
     for(d=0;d<k;d++)
     {
     if(c[d]<c[d+1])
       {
        max=c[d];
        c[d]=c[d+1];
        c[d+1]=max;
         }  
     }
}
for(j=0; j<k+1; j++ )   
{
    for(d=0;d<k;d++)
    {
     if(c[d]>c[d+1])
     {
        max=c[d];
        c[d]=c[d+1];
        c[d+1]=max;
    }   
}
}
     i=0;
     d=0;
     j=0;
for(j<k+1;i<n;i++)
if(d<k+1)
{
a[i]=c[d]; 
d++;
}
else
{
a[i]=a[j]; 
j++;
}
for(i<k+1;i<n;i++)
cout<<a[i]<<"\t";
return 0;
 }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.01.2017, 21:25
Ответы с готовыми решениями:

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

Отсортировать четные столбцы матрицы по убыванию, нечетные по возрастанию (сортировка Шелла)
Богом прошу, помогите! Совершенно запутался. Необходимо: сортировкой Шелла с шагом d = N/2^i...

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

Отсортировать нечетные элементы массива по убыванию
1. Отсортируйте в массиве нечетные элементы по убыванию.

4
Модератор
Эксперт CЭксперт С++
5286 / 2373 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
05.01.2017, 22:20 2
Дарья 2207, вряд ли кто-то захочет разбираться в Вашем коде. Проще всё с нуля написать.
0
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
06.01.2017, 09:38 3
Дарья 2207
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>
#include <vector>
#include <random>
#include <algorithm>
#include <iterator>
#include <functional>
 
//===============================================================================
using Iter = std::vector<size_t>::const_iterator;
 
void Out (Iter a, Iter b)
{
  std::copy(a, b, std::ostream_iterator<size_t>(std::cout, " "));
  std::cout << std::endl;
}
 
//===============================================================================
int main ()
{
  const size_t SZ = 10;
  std::vector<size_t> arr(SZ, 0);
 
  std::random_device rd;
  std::default_random_engine dre(rd());
  std::uniform_int_distribution<size_t> distr(0, 100);
 
  std::generate(arr.begin(), arr.end(), std::bind(distr, dre));
  Out(arr.cbegin(), arr.cend());
 
  size_t indx, elem;
  for (size_t j = 0, sz = arr.size(); j < sz; j += 2)
  {
    indx = j;
    elem = arr[j];
    for (size_t k = j + 2; k < sz; k += 2)
      if (elem < arr[k])
      {
        indx = k;
        elem = arr[k];
      }
 
    if (indx != j)
      std::swap(arr[j], arr[indx]);
  }
 
  for (size_t j = 1, sz = arr.size(); j < sz; j += 2)
  {
    indx = j;
    elem = arr[j];
    for (size_t k = j + 2; k < sz; k += 2)
      if (elem > arr[k])
      {
        indx = k;
        elem = arr[k];
      }
 
    if (indx != j)
      std::swap(arr[j], arr[indx]);
  }
 
  Out(arr.cbegin(), arr.cend());
 
  return 0;
}
gru74ik, вы абсолютно правы.. вообще с таким кодом по хорошему надо в отдел Си отправлять... там из плюсов только std::cin, std::cout
0
0 / 0 / 0
Регистрация: 04.01.2017
Сообщений: 16
07.01.2017, 19:53  [ТС] 4
подскажите, что должно быть обязательно в коде чтобы сортировать эл-ты по возрастанию и убыванию?
0
Модератор
Эксперт CЭксперт С++
5286 / 2373 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
07.01.2017, 20:34 5
Дарья 2207, Вы что, смеётесь над нами? Вы сами назвали тему 'задан массив чисел. отсортировать четные элементы по возрастанию, а не четные по убыванию', а теперь спрашиваете, почему Вам написали код, делающий ровно то, что написано в заглавии темы?
0
07.01.2017, 20:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.01.2017, 20:34
Помогаю со студенческими работами здесь

Отсортировать по возрастанию только четные элементы массива
№1: Отсортировать по возрастанию только четные элементы массива.

Отсортировать по возрастанию только четные элементы массива
№1: Отсортировать по возрастанию только четные элементы массива. У меня массив сам выводится, но...

Сортировка: сначала нечетные по возрастанию затем четные по убыванию
Как сделать так что б сначала нечетные по возрастанию затем парные по убыванию (это все в рандоме и...

Отсортировать по убыванию элементы массива слева от случайного числа, и справа - по возрастанию.
Дан массив из 20 целых чисел со значениями от 1 до 20. Необходимо: написать функцию,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru