Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
Aidar3007
2 / 2 / 1
Регистрация: 02.05.2016
Сообщений: 104
Завершенные тесты: 1
1

Элементы массива стоящие в четных позициях перенести в начало массива

17.03.2018, 09:18. Просмотров 512. Ответов 8
Метки нет (Все метки)

8. С одномерным массивом, состоящим из n вещественных элементов, выполнить следующее: Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в четных позициях, а во второй половине – элементы, стоявшие в нечетных позициях. Используя эту функцию, определить вышеуказанное к заданным массивам t[10], сделать это через указатели

Не могу понять как это сделать с указателями
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2018, 09:18
Ответы с готовыми решениями:

Элементы массива стоящие на нечетных позициях перенести в начало массива
Дан целочисленный масив размера N.Преобразовать масив таким образом, чтобы в первой его половине...

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

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

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

Построить массив В, содержащий элементы массива А, стоящие в четных позициях и отсортировать его
Здравствуйте господа программисты) Очень нужна ваша помощь в написании программы на языке С++,...

8
QuakerRUS
608 / 515 / 255
Регистрация: 30.10.2017
Сообщений: 1,662
Завершенные тесты: 4
17.03.2018, 09:56 2
Сделайте без указателей для начала и покажите решение.
0
Aidar3007
2 / 2 / 1
Регистрация: 02.05.2016
Сообщений: 104
Завершенные тесты: 1
17.03.2018, 11:22  [ТС] 3
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
#include <iostream>
using namespace std;
void vvod(int f[], int n) {
    for (int i = 0; i < n; i++) {
        f[i] = rand() % 55;
        cout << f[i] << endl;
    }
    cout << "====================" << endl;
 
}
void swap(int f[], int n) {
    int j, k, v[30];
    j = k = 0;
    for (int i = 0; i < n; i++)  //Переставляем нечетные цифры
    {
 
        if (i % 2 == 0)
        {
            v[j] = f[i];
            j++;
            k++;
            f[i] = 0;
        }
    }
    for (int i = 0; i < n; i++)  //Переставляем четные цифры
    {
        if (f[i] != 0)
        {
            v[k] = f[i];
            k++;
        }
    }
    for (int i = 0; i <n; i++)
        cout << v[i] << " ";
        
}
void main() {
 
    int a[10],b[20];
    
    vvod(a, 10);
    vvod(b, 20);
    swap(a, 10);
    cout << " " << endl;
    swap(b,20);
    
    
    
    system("pause");
}
0
QuakerRUS
608 / 515 / 255
Регистрация: 30.10.2017
Сообщений: 1,662
Завершенные тесты: 4
17.03.2018, 11:55 4
Aidar3007, если бы вы переставляли элементы массива, не создавая промежуточный массив, можно было бы нагляднее использовать указатели при перестановке элементов массива.

Ну а так, можно к примеру показать косвенную адресацию к элементам массива через сложение в указателях.
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
void swap(int f[], int n) {
    int j, k, v[30];
    j = k = 0;
    for (int i = 0; i < n; i++)  //Переставляем нечетные цифры
    {
 
        if (i % 2 == 0)
        {
            *(v + j) = *(f + i);
            j++;
            k++;
            *(f + i) = 0;
        }
    }
    for (int i = 0; i < n; i++)  //Переставляем четные цифры
    {
        if (*(f + i) != 0)
        {
            *(v + k) = *(f + i);
            k++;
        }
    }
    for (int i = 0; i <n; i++)
        cout << *(v + i) << " ";
}
0
17.03.2018, 11:55
Aidar3007
2 / 2 / 1
Регистрация: 02.05.2016
Сообщений: 104
Завершенные тесты: 1
17.03.2018, 12:30  [ТС] 5
QuakerRUS, А можете отсортировать с одним массивом?
0
QuakerRUS
608 / 515 / 255
Регистрация: 30.10.2017
Сообщений: 1,662
Завершенные тесты: 4
17.03.2018, 13:03 6
C++
1
2
3
4
5
6
7
8
9
10
11
void swap(int arr[], int size)
{
    int temp;
 
    for (int i = 1, j = size - 2 + size % 2; i < size / 2; i += 2, j -= 2)
    {
        temp = *(arr + i);
        *(arr + i) = *(arr + j);
        *(arr + j) = temp;
    }
}
0
Aidar3007
2 / 2 / 1
Регистрация: 02.05.2016
Сообщений: 104
Завершенные тесты: 1
17.03.2018, 13:51  [ТС] 7
QuakerRUS, О спасибо
0
Hitoku
1723 / 1318 / 1405
Регистрация: 28.10.2016
Сообщений: 4,265
Завершенные тесты: 4
17.03.2018, 14:32 8
Внизу страницы раздел "Похожие темы". Там предостаточно различных примеров
0
Aidar3007
2 / 2 / 1
Регистрация: 02.05.2016
Сообщений: 104
Завершенные тесты: 1
18.03.2018, 08:25  [ТС] 9
Hitoku, Не замечал
0
18.03.2018, 08:25
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2018, 08:25

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

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

Заменить элементы массива,стоящие на нечетных позициях, на среднее арифметическое массива
Заменить элементы массива,стоящие на нечетных позициях, на среднее арифметическое массива


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

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

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