Форум программистов, компьютерный форум CyberForum.ru

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

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

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

12.06.2014, 18:09. Просмотров 820. Ответов 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).
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2014, 18:09     Элементы массива с нечетных позиций необходимо отсортировать по возрастанию, с четных - по убыванию
Посмотрите здесь:

C++ Отсортировать элементы массива по возрастанию с сохранением позиций нулей
C++ В зависимости от четности/нечетности отсортировать элементы матрицы по убыванию/возрастанию
Дан целый массив максимальной размерности 20*20. Провести сортировку по возрастанию в нечетных строках массива и по убыванию в четных строках. C++
C++ Найти максимальный элемент. Отсортировать предшествующие ему элементы по убыванию, а следующие за ним элементы по возрастанию.
Отсортировать первую половину массива по возрастанию, а вторую по убыванию C++
C++ Вывести элементы массива, которые стоят на нечетных номерах по убыванию или возрастанию
C++ Создать стек из случайных целых чисел и отсортировать элементы по возрастанию (убыванию)
C++ Quicksort, отсортировать элементы массива, стоящие на четных позициях, чтобы они располагались по убыванию
Отсортировать по убыванию элементы массива слева от случайного числа, и справа - по возрастанию. C++
C++ Отсортировать чётные элементы по возрастанию, а нечётные по убыванию
в первой половине массива расположить элементы из нечетных позиций исходного массива C++
Отсортировать элементы массива, находящиеся слева от заданного числа по убыванию, а справа по возрастанию C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GuGo1991
267 / 261 / 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]);
       }
    }
Yandex
Объявления
12.06.2014, 18:50     Элементы массива с нечетных позиций необходимо отсортировать по возрастанию, с четных - по убыванию
Ответ Создать тему
Опции темы

Текущее время: 23:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru