0 / 0 / 1
Регистрация: 19.10.2015
Сообщений: 49
1

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

20.12.2015, 21:40. Показов 6464. Ответов 12

Студворк — интернет-сервис помощи студентам
Привет. Вообщем, стоит такая задача:
"Вывести на экран сначала отсортированные по возрастанию элементы массива Y(25) стоящие на чётных местах, а затем отсортированные элементы, стоящие на нечётных местах". Не представляю как это сделать с помощью векторов.
Элементы вводить с клавиатуры.
Надо сделать в двух вариантах: -Данные хранятся в виде объекта вектор.
-Данные хранятся в виде стека.
Дайте хоть какую нибудь наводку! Заранее Спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2015, 21:40
Ответы с готовыми решениями:

Отсортировать чётные элементы по возрастанию, а нечётные по убыванию
Вот условие(могу кое где ошибаться в правильности постановки задачи) Составить одномерный массив,...

Вывести нечётные по значению элементы массива по возрастанию, а чётные - по убыванию
Создал программку вот такую: #include <iostream> #include<iomanip> #include <time.h> using...

Отсортировать чётные столбцы матрицы по возрастанию, а нечётные – по убыванию
Нужно: Отсортировать чётные столбцы матрицы по возрастанию, а нечётные – по убыванию. ...

Отсортировать вектор так, чтобы сперва шли отрицательные, затем положительные элементы
Дан вектор A(a1,a2,...,a100). Сделать так, чтобы сперва были отрицательные элементы, а затем...

12
Любитель чаепитий
3737 / 1796 / 563
Регистрация: 24.08.2014
Сообщений: 6,015
Записей в блоге: 1
20.12.2015, 21:50 2
kesha_keshunya1,
Дайте хоть какую нибудь наводку!
Ну создаёшь 3 вектора, в 1-й всё скидываешь, во 2-й чётные из 1-го, в 3-й нечётные из 1-го, сортируешь 2-й и 3-й как надо и выводишь, всё же легко, про стек не скажу так точно, но может другие подскажут.
0
0 / 0 / 1
Регистрация: 19.10.2015
Сообщений: 49
21.12.2015, 07:37  [ТС] 3
Цитата Сообщение от makfak Посмотреть сообщение
Ну создаёшь 3 вектора, в 1-й всё скидываешь, во 2-й чётные из 1-го, в 3-й нечётные из 1-го, сортируешь 2-й и 3-й как надо и выводишь
а можете пример кода показать!?
0
252 / 158 / 118
Регистрация: 26.11.2012
Сообщений: 384
21.12.2015, 08:06 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    int n = 25;
    int *vec1 = new int[n];
    int *vec2 = new int[n / 2];//четн
    int *vec3 = new int[n / 2 + n % 2];//не четн
 
    int v2 = 0, v3 = 0;
    for (int i = 0; i < n; i++)
        if (i % 2 == 0){//не четн. тк индексы начинаются с 0
            vec3[v3++] = vec1[i];
        }
        else{
            vec2[v2++] = vec1[i];
        }
Алгоритмы сортировок
0
Любитель чаепитий
3737 / 1796 / 563
Регистрация: 24.08.2014
Сообщений: 6,015
Записей в блоге: 1
21.12.2015, 11:45 5
Apostol584, Это не вектор.
kesha_keshunya1,
C++
1
2
3
4
5
6
7
8
9
10
11
#include <vector>
...
vector<int> Y( 25 );
for( int N, i = 0; i < 25 && cin >> N; i++ )
    Y.push_back( N );
vector<int> a, b;
for( int i = 0; i < 25; i++ ) {
    if( i % 2 == 0 ) a.push_back( Y[i] );
    else a.push_back( Y[i] );
}
// дальше сортируем
Добавлено через 2 минуты
Впрочем, вот сортировка
C++
1
2
sort( a.begin(), a.end() );
sort( b.begin(), b.end() );
1
Dimension
594 / 462 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
21.12.2015, 11:49 6
запускаете пузырек ,если два текущих индекса нечетные то сортируете ,потом для четных так же
0
252 / 158 / 118
Регистрация: 26.11.2012
Сообщений: 384
21.12.2015, 12:57 7
makfak, чем вектор отличается от массива?
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
21.12.2015, 13:07 8
Цитата Сообщение от Apostol584 Посмотреть сообщение
makfak, чем вектор отличается от массива?
вектор содержит в себе массив.

Поэтому ответ: вектор это С++ класс котоырй содержит оверхед посравнению с массивом для управления работы с массивом.
0
Любитель чаепитий
3737 / 1796 / 563
Регистрация: 24.08.2014
Сообщений: 6,015
Записей в блоге: 1
21.12.2015, 13:32 9
Apostol584, По сути почти ничем, но ТС явно написал.
Не представляю как это сделать с помощью векторов.
0
0 / 0 / 1
Регистрация: 19.10.2015
Сообщений: 49
21.12.2015, 13:50  [ТС] 10
Цитата Сообщение от makfak Посмотреть сообщение
if( i % 2 == 0 ) a.push_back( Y[i] );
* * else a.push_back( Y[i]
Не могу понять как по чётным и не чётным местам произвести сортировку.
Получилось вот так:
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
#include <iostream.h>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    int n, i, j;
        cout << "Введите размер вектора: ";
        cin >> n;
        cout<<endl<<endl;
        vector<int>Y(n);
        cout<<"Дан вектор:"<<endl;
    for(i = 0; i < Y.size(); i++)
        {
        Y[i]=rand()%100;
        cout << Y[i] <<" ";
        }
            cout<<endl<<endl;
            
            vector<int> a, b;
        for( int i = 0; i < n; i++ ) 
        {
            if( i % 2 == 0 ) 
                a.push_back( Y[i] );       
        else a.push_back( Y[i] );
        }
        sort( Y.begin(), Y.end() );
        cout<<"Отсортированный вектор по чётным местам: "<<endl;
            for(i = 0; i < Y.size(); i++)
            {
                cout << Y[i] <<" ";
            }
           cout<<endl<<endl;
        cout<<"Отсортированный вектор по нечётным местам: "<<endl;
            for(i = 0; i < Y.size(); i++)
            {
                cout << Y[i] <<" ";
            }
           cout<<endl<<endl;
 
        system("pause");
        return 0;           
}
0
252 / 158 / 118
Регистрация: 26.11.2012
Сообщений: 384
21.12.2015, 14:08 11
добавляешь в один и тот же вектор
C++
1
2
3
if( i % 2 == 0 ) 
                a.push_back( Y[i] );       
        else a.push_back( Y[i] );
у тебя есть вектора а и в, в них хранятся элементы вектора Y, которые лежат на четных и не четных позициях.
Тебе нужно произвести сортировку обоих векторов. К элементам вектора можно обращаться как и с обычным массивом, алгоритмы сортировок, уже написанные, есть на сайте, ссылку уже давал, причем тебе надо просто их вставить к себе в код.
0
Любитель чаепитий
3737 / 1796 / 563
Регистрация: 24.08.2014
Сообщений: 6,015
Записей в блоге: 1
21.12.2015, 14:39 12
Лучший ответ Сообщение было отмечено kesha_keshunya1 как решение

Решение

kesha_keshunya1, C 22-44 замени на вот это.
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
for( int i = 0; i < n; i++ ) 
        {
            if( i % 2 == 0 ) 
                a.push_back( Y[i] );       
        else b.push_back( Y[i] );
        }
        sort( a.begin(), a.end() );
        sort( b.begin(), b.end() );
        cout<<"Отсортированный вектор по чётным местам: "<<endl;
            for(i = 0; i < a.size(); i++)
            {
                cout << a[i] <<" ";
            }
           cout<<endl<<endl;
        cout<<"Отсортированный вектор по нечётным местам: "<<endl;
            for(i = 0; i < b.size(); i++)
            {
                cout << b[i] <<" ";
            }
           cout<<endl<<endl;
 
        system("pause");
        return 0;           
}
1
0 / 0 / 1
Регистрация: 19.10.2015
Сообщений: 49
22.12.2015, 19:18  [ТС] 13
Цитата Сообщение от makfak Посмотреть сообщение
C 22-44 замени на вот это.
Спасибо большое!

Добавлено через 2 часа 8 минут
Народ, а что на счёт стеков!? с вектором всё более менее понятно, но со стеками пока ни чего!
Всё что смог так это вот:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <cstdlib>  
#include <iostream.h>
#include <stack>
#include<time.h>
 
using namespace std;
int main()
{
    setlocale(LC_ALL,"Russian");
    stack<int> st1;
    stack<int> st2;
    stack<int> st3;
 
    int n=0,i,j;
    float kol=0;
    cout <<"Äàí ñòåê: "<<endl<<endl;
    for(int i=0;i<25;i++) 
    {
        st1.push(n=rand()%100);
        cout <<n<< " ";
    }
    cout<<endl<<endl;
/*..................................*/


system("pause");
return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.12.2015, 19:18
Помогаю со студенческими работами здесь

Отсортировать массив, поставив сначала чётные элементы, а потом нечётные
Люди добрые помогите пожалуйста! мне нужно заполнить двумерный массив А случайными целыми числами...

Переделать число так, чтобы сперва в том же порядке были его чётные цифры, а потом нечётные.
Вот текст задачи: Дано многозначное число N, надо переделать его так, чтобы сперва в том же...

Вывести чётные и нечётные элементы
ЗДАСТВУЙТЕ ! не могу понять в чём ошибка,вроде всё правильно... &quot;в матрице а четные элементы...

Из вектора С(n) сформировать вектор A, содержащий чётные элементы вектора С и вектор В содержащий нечётные элементы
С++, массив из вектора С(n) сформировать вектор A, содержащий чётные элементы вектора С и вектор В...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru