С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
Дарья 2207
0 / 0 / 0
Регистрация: 04.01.2017
Сообщений: 16
1

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

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

помогите найти ошибку.не верно сортирует.
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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.01.2017, 21:25
Ответы с готовыми решениями:

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

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

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

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

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

4
sourcerer
Модератор
Эксперт CЭксперт С++
4875 / 2061 / 325
Регистрация: 20.02.2013
Сообщений: 5,558
Записей в блоге: 24
Завершенные тесты: 1
05.01.2017, 22:20 2
Дарья 2207, вряд ли кто-то захочет разбираться в Вашем коде. Проще всё с нуля написать.
0
JIawliet
78 / 78 / 31
Регистрация: 20.07.2016
Сообщений: 332
Завершенные тесты: 2
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
Дарья 2207
0 / 0 / 0
Регистрация: 04.01.2017
Сообщений: 16
07.01.2017, 19:53  [ТС] 4
подскажите, что должно быть обязательно в коде чтобы сортировать эл-ты по возрастанию и убыванию?
0
sourcerer
Модератор
Эксперт CЭксперт С++
4875 / 2061 / 325
Регистрация: 20.02.2013
Сообщений: 5,558
Записей в блоге: 24
Завершенные тесты: 1
07.01.2017, 20:34 5
Дарья 2207, Вы что, смеётесь над нами? Вы сами назвали тему 'задан массив чисел. отсортировать четные элементы по возрастанию, а не четные по убыванию', а теперь спрашиваете, почему Вам написали код, делающий ровно то, что написано в заглавии темы?
0
07.01.2017, 20:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2017, 20:34

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

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

Нечетные строки матрицы упорядочить по убыванию, четные - по возрастанию (гномьей сортировкой)
Всем привет! Есть задание: Отсортировать двумерный массив. Нечетные строки по...


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

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

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