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

Преобразовать массив, поместив в начало элементы, стоявшие в чётных позициях, а в конец — стоявшие в нечётных - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
02.11.2012, 17:14     Преобразовать массив, поместив в начало элементы, стоявшие в чётных позициях, а в конец — стоявшие в нечётных #1
Я написал код, который просто выводит елементы так как указано в условие, но надо сам массив "пересортировать", каким образом ето сделать?
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
#include<iostream>
#include<conio.h>
#include<locale.h>
using namespace std;
const int n=5;
int srar=0, d=0;
int arr[n];
void input(int[]);
void sort(int[]);
int main()
{
    setlocale(LC_ALL,"ukrainian");
    input(arr);
    sort(arr);
    getch();
    return 0;
}
void input(int arr[])
{   for (int i=0; i<n; i++)
    {
        cout<<"Введiть "<<i+1<<" елемент:"<<endl;
        cin>>arr[i];
    }
}
void sort(int arr[])
{
    for(int i=0;i<n;i+=2)
        {
            cout<<arr[i];
        }
    for(int i=1;i<n;i+=2)
        {
            cout<<arr[i];
        }
}
Добавлено через 2 часа 56 минут
Ну что, ни кто не знает как ето сделать???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2012, 17:14     Преобразовать массив, поместив в начало элементы, стоявшие в чётных позициях, а в конец — стоявшие в нечётных
Посмотрите здесь:

C++ Во в введённом массиве отсортировать по возрастанию все элементы на нечётных позициях
Преобразовать массив таким образом, чтобы в его первой половине расположились элементы, стоящие в четных позициях C++
C++ Как добавить элементы в конец, начало, середину list?
Посчитать в массиве все элементы, которые находится на нечётных позициях C++
Упорядочить элементы массива, располагая в первой его половине элементы, стоявшие на четных позициях C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
JlightenDev_C++
 Аватар для JlightenDev_C++
61 / 61 / 7
Регистрация: 12.08.2012
Сообщений: 150
02.11.2012, 17:50     Преобразовать массив, поместив в начало элементы, стоявшие в чётных позициях, а в конец — стоявшие в нечётных #2
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
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int const size = 5; //Кол-во элементов массива
int const R = 1000;
 
int main(){
int array[size], empty = 0;
for(int i = 0; i < size; i++){               //Элементы массива должны быть меньше R... элементы которые находятся в не четных позициях размещены по возрастанию
        cout << "Array[" << i+1 << "] = ";
        cin >> empty;
        array[i] = empty;
        }
        for(int i = 0; i < size; i++){
                if(i%2 != 0){
                       array[i]-=R;
               }
        }
    for(int i = 0; i < size; i++){
            for(int j = 0; j < size-1; j++){
                    if(array[j] > array[j+1]){
                    empty = array[j];
                    array[j] = array[j+1];
                    array[j+1] = empty;
                                    }
                    }
            }
    for(int i =0; i < size; i++){
            if(array[i] < 0){
                        array[i]+=R;
                        }
            }
        for(int i = 0; i < size; i++){
                cout << array[i] << " ";
                }
        getch();
}
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
02.11.2012, 18:20     Преобразовать массив, поместив в начало элементы, стоявшие в чётных позициях, а в конец — стоявшие в нечётных #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void sort(int arr[])
{
    int arrTemp[n];
    int j;
 
    // четные позиции
    for (int i=0, j=0; i<n; i++)
        if (i%2 == 0)
            arrTemp[j++] = arr[i];
 
    // нечетные
    for (int i=0; i<n; i++)
        if (i%2 != 0)
            arrTemp[j++] = arr[i];
 
    // перезапись массива
    for (int i=0; i<n; i++)
        arr[i] = arrTemp[i];
}
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
02.11.2012, 19:17  [ТС]     Преобразовать массив, поместив в начало элементы, стоявшие в чётных позициях, а в конец — стоявшие в нечётных #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
84
85
86
87
88
89
90
91
92
93
94
95
96
#include<iostream>
#include<conio.h>
#include<stdlib.h>
#include<locale.h>
using namespace std;
const int n=7;
void input(int[]);
void ser(int[], int, int);
void sum(int[], int, int, int, int, int);
void sort(int[], int, int);
void output(int);
int main()
{
    setlocale(LC_ALL,"ukrainian");
    int srar=0, d=0;
    int nv=0, nc=0, V=0, s=0, C=0;
    int arr[n];
    input(arr);
    ser(arr, srar, d);
    cout<<"\n";
    sum(arr, nv, nc, V, s, C);
    cout<<"\n";
    sort(arr, srar, d);
    cout<<"\n";
    getch();
    return 0;
}
void input(int arr[])
{   for (int i=0; i<n; i++)
    {
        cout<<"Введіть "<<i+1<<" елемент:"<<endl;
        cin>>arr[i];
    }
}
void ser(int arr[], int srar, int d)
{
    float s=0;
    for (int i=0; i<n; i++)
    s=s+arr[i];
    float S=(s/n);
    for (int i=0; i<n; i++)    
        {
          if (i==0)  
            {
                d = fabs(S-arr[i]); srar = i; 
            }
            else if (fabs(S-arr[i]) < d) 
                {
                    d = fabs(S-arr[i]); srar = i; 
                }
        }
    cout<<"Номер елемента масиву, значення якого найблище до середьного арифметичного всіх елементів ="<<srar+1<<endl;
 
}
void sum(int arr[], int nv, int nc, int V, int s, int C){
{
    for (int i=0; i<n; i++)
        {
            if (arr[i]<0)
        {
     V=arr[i];
     nv=i; 
     break;
     }
}
for(int i=nv+1;i<n;i++)
{
    if (arr[i]>0)
    {
        C=arr[i];
        nc=i; 
        break;
    }
}
for(int i=nv+1;i<nc;i++)
{
    s+=arr[i];
}
cout<<"Сума елементів між "<<arr[nv]<<" та "<<arr[nc]<<" = "<<s;
}
}
void sort(int arr[])
{
    int arrTemp[n];
    int j=0;
    for (int i=0, j=0; i<n; i++)
        {if (i%2 == 0)
        arrTemp[j++] = arr[i];}
 
    for (int i=0; i<n; i++)
        {if (i%2 != 0)
            arrTemp[j++] = arr[i];}
 
    for (int i=0; i<n; i++)
        arr[i] = arrTemp[i];
}
у меня здесь несколько функций, все кроме сортировки робочие.

Добавлено через 2 минуты
и как вывести на екран пересортированый масив? я очень путаюсь в масивах, незнаю что в цикле вывода писать(для сортированого цикл вывода введеного масива врятли подойдет, или я ошибаюсь?)
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
02.11.2012, 19:30     Преобразовать массив, поместив в начало элементы, стоявшие в чётных позициях, а в конец — стоявшие в нечётных #5
вывести массив можно вот так:
C++
1
2
3
4
5
6
void print(int arr[])
{
    for (int i=0; i<n; i++)
        cout << arr[i] << ' ';
    cout << endl;
}
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
02.11.2012, 19:33  [ТС]     Преобразовать массив, поместив в начало элементы, стоявшие в чётных позициях, а в конец — стоявшие в нечётных #6
ну а в коде где ошибка? вробе бы все инициализировано.
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
02.11.2012, 19:36     Преобразовать массив, поместив в начало элементы, стоявшие в чётных позициях, а в конец — стоявшие в нечётных #7
да, у меня тоже ошибка появляется.
а когда вот так делаю то все нормально, проверил
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void sort(int arr[])
{
    int arrTemp[n];
    int i, j;
 
    // четные позиции
    for (i=0, j=0; i<n; i++)
        if (i%2 == 0)
            arrTemp[j++] = arr[i];
 
    // нечетные
    for (i=0; i<n; i++)
        if (i%2 != 0)
            arrTemp[j++] = arr[i];
 
    // перезапись массива
    for (i=0; i<n; i++)
        arr[i] = arrTemp[i];
}
переменную i в другое место перенес.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
02.11.2012, 20:04     Преобразовать массив, поместив в начало элементы, стоявшие в чётных позициях, а в конец — стоявшие в нечётных #8
C++
1
2
3
4
5
6
7
8
9
   int i = 1;
   int j = ( size & 1 ) ? size - 1 : size - 2;
   int temp;
 
   for ( ; i <= j; i += 2, j -= 2 ) {
      temp = arr[ i ];
      arr[ i ] = arr[ j ];
      arr[ j ] = temp;
   }
SerJer
0 / 0 / 0
Регистрация: 18.10.2015
Сообщений: 26
14.12.2015, 17:52     Преобразовать массив, поместив в начало элементы, стоявшие в чётных позициях, а в конец — стоявшие в нечётных #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void sort(int arr[])
{
    int arrTemp[n];
    int i, j;
 
    // четные позиции
    for (i=0, j=0; i<n; i++)
        if (i%2 == 0)
            arrTemp[j++] = arr[i];
 
    // нечетные
    for (i=0; i<n; i++)
        if (i%2 != 0)
            arrTemp[j++] = arr[i];
 
    // перезапись массива
    for (i=0; i<n; i++)
        arr[i] = arrTemp[i];
}
==================
помогите плиз не работает сдавать нужно уже.
Миниатюры
Преобразовать массив, поместив в начало элементы, стоявшие в чётных позициях, а в конец — стоявшие в нечётных  
SerJer
0 / 0 / 0
Регистрация: 18.10.2015
Сообщений: 26
14.12.2015, 17:54     Преобразовать массив, поместив в начало элементы, стоявшие в чётных позициях, а в конец — стоявшие в нечётных #10
1. Найти номер максимального элемента массива.
2. Найти произведение элементов массива, расположенных между первым и вторым нулевыми элементами.
3. Преобразовать массив таким образом, что бы в первой его половине располагались элементы, стоявшие в нечетных позициях, а во второй половине - элементы, стоявшие в чётных позициях.
=============================================================
если мотыжите подправите второй пункт, если нет нулей что бы вывел нет нулей , а не как у меня масс =1
=============================================================
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
84
85
86
87
88
89
90
91
92
93
94
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    int t = 0;
    cout << "Please enter arrays size\n"; cin >> t;
    int *mass = new int[t]; // динамический масив
    cout << "Please enter arrays\n";
    for (int i = 0; i < t; i++)
    {
        cin >> mass[i];   // ввод масива
    }
 
    cout << endl;
    for (int i = 0; i < t; i++)
    {
        cout << " | " << mass[i] << " | "; // ввывод масива
    }
 
    int max = mass[0], k = 0;
    for (int i = 0; i < t; i++)
 
 
        if (max < mass[i])
        {
            max = mass[i];
            k = i;
        }
    cout << endl;
    cout << "\n1. Task: Max element number: " << k << endl;
    cout << "\n ---------------------------------------" << endl;
    cout << endl;
    // -----------------------------------------------------------------------------------------------
    int sum = 1, leftz = mass[0], rightz = mass[0];
    for (int i = 0; i <= t; i++)
        if (mass[i] == 0)
        {
            leftz = i; break;
        }
    for (int i = leftz + 1; i < t - 1; i++)
        if (mass[i] == 0)
        {
            rightz = i; break;
        }
    for (int i = leftz + 1; i < rightz; i++)
    {
        sum = sum * mass[i];
    }
    cout << "\n2. Task: The sum of the array elements = " << sum << endl;
    cout << "\n --------------------------------------" << endl;
    cout << endl;
    cout << "\n3. Task: Sort masiv: " << endl;
    cout << endl;
    //------------------------------------------------------------------------------------
    //int n = t;
    int *arrTemp = new int [t];
    int j = 0, i = 0;
 
    // нечетные
    for (i = 0, j = 0; i < t; j++, i++)
    {
        if (i % 2 != 0)
        {
            arrTemp[j++] = mass[i];
        }
    }
 
    // четные позиции
    for (int i = 1, j = 0; i < t; i++)
    {
        if (i % 2 == 0)
        {
            arrTemp[j++] = mass[i];
        }
    }
    // перезапись массива
    for (i = 0; i < t; i++)
    {
        mass[i] = arrTemp[i];
    }
 
    for (i = 0; i < t; i++)
    {
        cout << " | " << mass[i];
    }
    cout << endl; 
    cout << "\n --------------------------------------" << endl;
    cout << endl;
 
    delete[] mass; // очистка памяти    
    system("PAUSE");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2016, 21:12     Преобразовать массив, поместив в начало элементы, стоявшие в чётных позициях, а в конец — стоявшие в нечётных
Еще ссылки по теме:

Преобразовать массив, чтобы в первой его половине распологались элементы стоявишие в четных позициях C++
Переставить в начало массива элементы стоящие на нечетных позициях C++
Преобразовать массив, поместив в начало элементы, стоявшие в нечётных позициях, а в конец — стоявшие в чётных C++

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

Или воспользуйтесь поиском по форуму:
gru74ik
Модератор
 Аватар для gru74ik
3116 / 1342 / 167
Регистрация: 20.02.2013
Сообщений: 3,809
Записей в блоге: 17
04.01.2016, 21:12     Преобразовать массив, поместив в начало элементы, стоявшие в чётных позициях, а в конец — стоявшие в нечётных #11
Синхронистичность, однако.
Yandex
Объявления
04.01.2016, 21:12     Преобразовать массив, поместив в начало элементы, стоявшие в чётных позициях, а в конец — стоявшие в нечётных
Ответ Создать тему
Опции темы

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