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

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

Войти
Регистрация
Восстановить пароль
 
Компутерщик
0 / 0 / 0
Регистрация: 10.05.2014
Сообщений: 16
#1

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

12.06.2014, 18:09. Просмотров 1427. Ответов 1
Метки нет (Все метки)

Значит есть одномерный массив из 10 чисел. Заполнен случайными значениями.
Числа расположенные на нечетных позициях необходимо отсортировать по возрастанию.
Числа расположенные на четных позициях необходимо отсортировать по убыванию.
Сортировка вроде работает правильно, а вот диапазон чисел како-то не правильный берется
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>
#include <cstdlib>
#include <ctime>
#include <iomanip>
using namespace std;
int main ()
{
    setlocale(LC_ALL, "");
    srand(time(NULL));
    const int size= 10;
    int temp, j;
    int a[size];
    for (int i = 0; i < size; i++)
    {
        a[i]=rand()%50;
        cout<<setw(2)<<a[i] <<" "; //начальный массив
    }
        cout<<endl;
    //для чисел которые стоят в массиве на нечетных местах + сортировка по возрастанию
    for(int i = 0 ; i < size ; i++) 
       for(j = 0 ; j < size - i - 1 ; j++)  
           if(a[j] > a[j+1]) 
           { 
              temp = a[j]; 
              a[j] = a[j+1] ; 
              a[j+1] = temp; 
           }
           cout<<"Массив отсортированный по возрастанию: ";
    for(int i = 0 ; i < size; i++)
        if (i%2!=0)
        cout<<setw(2)<<a[i]<<" ";
    //для чисел которые стоят в массиве на четных местах + сортировка по убыванию
    for(int i = 0 ; i < size ; i++) 
       for(j = 0 ; j < size - i - 1 ; j++)  
           if(a[j] < a[j+1]) 
           { 
              temp = a[j]; 
              a[j] = a[j+1]; 
              a[j+1] = temp; 
           }
           cout<<"\nМассив отсортированный по убыванию: ";
    for(int i = 0 ; i < size; i++)
        if (i%2==0)
        cout<<setw(2)<<a[i]<<" ";
    cout<<endl;
    return 0;
}
Как вы думаете что не правильно ? Может ифы и не стоило использовать при выводе чисел, а попробоват поизменять шаг циклам (например +2).
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2014, 18:09
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Элементы массива с нечетных позиций необходимо отсортировать по возрастанию, с четных - по убыванию (C++):

Отсортировать элементы массива по возрастанию с сохранением позиций нулей - C++
Хелп!Не могу никак написать правильный код...вот условие:отсортировать элементы массива (отрицательные влево,положительные вправо,т.е. не...

Преобразовать массив: перенести элементы с четных позиций в начало массива, а с нечетных - в конец - C++
/*1. Найти минимальный по модулю элемент массива. 2. Найти сумму модулей элементов массива, расположенных после первого элемента, равного...

Отсортировать четные элементы массива по возрастанию, а нечетные по убыванию - C++
помогите найти ошибку.не верно сортирует. #include &lt;iostream&gt; #include &lt;math.h&gt; #include&lt;stdlib.h&gt; #include&lt;conio.h&gt; ...

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

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

Вывести элементы массива, которые стоят на нечетных номерах по убыванию или возрастанию - C++
В общем дан одномерный массив из 23 элементов. Нужно вывести элементы массива, которые стоят на нечетных номерах по убыванию или...

1
GuGo1991
269 / 263 / 93
Регистрация: 02.08.2012
Сообщений: 609
12.06.2014, 18:50 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
    for(int i = 0 ; i < size ; i++)
    {
       for(j = 0 ; j < size - 2; j++)
       {
           if(j % 2 && a[j] < a[j + 2]) 
               std::swap(a[j], a[j + 2]);
           if(!(j % 2) && a[j] > a[j + 2])
               std::swap(a[j], a[j + 2]);
       }
    }
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2014, 18:50
Привет! Вот еще темы с ответами:

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

Quicksort, отсортировать элементы массива, стоящие на четных позициях, чтобы они располагались по убыванию - C++
Имеется одномерный массив длиной N = 50. Отсортировать методом быстрой сортировки элементы массива, стоящие на четных позициях, так, чтобы...

Дан целый массив максимальной размерности 20*20. Провести сортировку по возрастанию в нечетных строках массива и по убыванию в четных строках. - C++
Дан целый массив максимальной размерности 20*20. Провести сортировку по возрастанию в нечетных строках массива и по убыванию в четных...

Необходимо отсортировать определённые столбцы матрицы по возрастанию и по убыванию - C++
Нужно каждый столбец с чётным номером отсортировать по возрастанию и по убыванию. Для примера дана матрица: 3 2 3 3 4 6 2 7 2 4 1...


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

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

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