Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Дарья 2207
0 / 0 / 0
Регистрация: 04.01.2017
Сообщений: 16
#1

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

05.01.2017, 21:25. Просмотров 821. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Отсортировать четные элементы массива по возрастанию, а нечетные по убыванию (C++):

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

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

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

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

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

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

4
gru74ik
Модератор
Эксперт CЭксперт С++
4360 / 1936 / 210
Регистрация: 20.02.2013
Сообщений: 5,138
Записей в блоге: 22
05.01.2017, 22:20 #2
Дарья 2207, вряд ли кто-то захочет разбираться в Вашем коде. Проще всё с нуля написать.
0
JIawliet
78 / 78 / 19
Регистрация: 20.07.2016
Сообщений: 327
Завершенные тесты: 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
gru74ik
Модератор
Эксперт CЭксперт С++
4360 / 1936 / 210
Регистрация: 20.02.2013
Сообщений: 5,138
Записей в блоге: 22
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
Привет! Вот еще темы с ответами:

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

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

Функция, сортирующая сначала нечетные числа в массиве по возрастанию, а потом четные по убыванию - C++
Ребят, подскажите как написать функцию, которая будет сортировать сначала нечетные числа в массиве по возрастанию, а потом четные по...

Нечетные элементы массива отсортировать методом пузырька, а четные методом прямого доступа - C++
Дан одномерный массив, в нем нечетные элементы отсортировать методом пузырька, а четные методом прямого доступа(или прямого включения, могу...


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

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

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