Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/88: Рейтинг темы: голосов - 88, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 18.06.2016
Сообщений: 27
1

Переставить соседние элементы массива

25.07.2016, 21:55. Показов 15831. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброй ночи всем.
Подскажите или намекните как подойти к решению данной задачи.
Прошу коды не выкладывать хочу сделать сам.
Спасибо за понимание

Переставьте соседние элементы массива (A[0] c A[1], A[2] c A[3] и т.д.). Если элементов нечетное число, то последний элемент остается на своем месте.
Формат входных данных
В первой строке вводится количество элементов в массиве. Во второй строке вводятся элементы массива.
Формат выходных данных
Выведите ответ на задачу.
Sample Input:
5
1 2 3 4 5
Sample Output:
2 1 4 3 5
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.07.2016, 21:55
Ответы с готовыми решениями:

Переставить соседние элементы массива
Напишите программу, которая переставляет соседние элементы массива (1-й элемент поменять с 2-м, 3-й...

Переставить соседние элементы массива
Переставьте соседние элементы массива (A c A, A c A и т.д.). Если элементов нечетное число, то...

Переставить соседние элементы массива
1. Переставьте соседние элементы массива . 2. S=1+3+5+7+ …, всего n слагаемых.

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

17
3 / 3 / 1
Регистрация: 01.07.2016
Сообщений: 59
25.07.2016, 22:06 2
а в чем вообще вопрос ? делаешь проверку кол-ва элементов например if (n%2==0) четное делаешь цикл с условие i<n
else i<(n-1)
в цикле просто делаешь замену, можно так {int temp=A[i+1]; A[i+1]=A[i]; A[i]=temp; i++;} можно {swap(A[i],A[i+1]); i++;}
оператор инкремента нужен что бы пропустить итерацию A[i+1]
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
25.07.2016, 22:13 3
dimon77, Посмотрите ссылки внизу страницы
0
0 / 0 / 0
Регистрация: 18.06.2016
Сообщений: 27
27.07.2016, 15:48  [ТС] 4
Вот сочинил такой вариант
Но проблема . Переставляет хаотически.
при вводе 12345 выдает 52143. при вводе 1234567 вообще 5 2 7 4 1 6 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
#include <iostream>
#include <iomanip>
#include <cmath>
#include <vector>
 
using namespace std;
 
int main() {
    int n;
    cin >> n;
    vector <int> a;
    //считывание
    for (int i = 0; i < n; i++) {
        int temp;
        cin >> temp;
        a.push_back(temp);
    }
    //обработка
    for (int i = 0; i < n; i += 2) { 
        int num_min = i; 
        for (int i = 0; i < n; i += 2) { 
            if (a[i] % 2 == 0)
                int  num_min = i;
 
            //обмен значений 
            int temp;
            temp = a[num_min];
            a[num_min] = a[i];
            a[i] = temp;
        }
    }
 
    //вывод
    for (int i = 0; i < n; i++) {
        cout << a[i] << " ";
    }
 
 
    return 0;
}
0
3 / 3 / 1
Регистрация: 01.07.2016
Сообщений: 59
27.07.2016, 15:51 5
dimon77, неверный цикл обработки. два цикла иницилизированы i
0
4817 / 2278 / 287
Регистрация: 01.03.2013
Сообщений: 5,947
Записей в блоге: 28
27.07.2016, 15:54 6
Цитата Сообщение от kiwokr Посмотреть сообщение
два цикла иницилизированы i
Ой, все пропало теперь!...
0
3 / 3 / 1
Регистрация: 01.07.2016
Сообщений: 59
27.07.2016, 15:55 7
_Ivana, for (int i = 0; i < n; i += 2) {
int num_min = i;
for (int i = 0;
0
4817 / 2278 / 287
Регистрация: 01.03.2013
Сообщений: 5,947
Записей в блоге: 28
27.07.2016, 15:59 8
Точно, у него же море циклов, в т.ч. и вложенные... Не заметил сразу
0
3 / 3 / 1
Регистрация: 01.07.2016
Сообщений: 59
27.07.2016, 16:30 9
dimon77, что-то тут вообще странное.... нагородил лишнего...
0
829 / 253 / 34
Регистрация: 27.07.2016
Сообщений: 497
Записей в блоге: 1
27.07.2016, 16:40 10
C++
1
2
3
4
5
6
7
8
9
10
11
12
    //считывание
    for (int i = 0; i < n; ++i) {
        int temp;
        if( !(cin >> temp) ){
            break;
        }
        a.push_back(temp);
    }
    //обработка
    for (int i = 1; i < a.size(); i += 2) { 
        std::swap(a[i], a[i-1]);
    }
работает?
0
0 / 0 / 0
Регистрация: 18.06.2016
Сообщений: 27
27.07.2016, 16:46  [ТС] 11
swap не могу будет не зачет.
0
829 / 253 / 34
Регистрация: 27.07.2016
Сообщений: 497
Записей в блоге: 1
27.07.2016, 16:49 12
Цитата Сообщение от dimon77 Посмотреть сообщение
swap не могу будет не зачет.
поменяйте на:
C++
1
2
3
int temp = a[i];
a[i] = a[i-1];
a[i-1] = temp;
0
3 / 3 / 1
Регистрация: 01.07.2016
Сообщений: 59
27.07.2016, 16:58 13
dimon77,
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>
#include <vector>
using std::cout;
using std::cin; 
using std::endl;
using std::vector;
using std::swap;
 
int main()
{
    setlocale(LC_ALL, "russian");
    int N;
    double elem;
    vector <double> row;
    cout << "Enter N" << endl;
    cin >> N;
    for (int i(0); i < N; i++)
    {
        cout << "Enter " << i + 1 << " element" << endl;
        cin >> elem;
        row.push_back(elem);
    }
    if (N % 2 == 0)
        for (int i(0); i < N; i++)
        {
            swap(row[i], row[i+1]); // or int temp = row[i]; row[i]=row[i+1]; row[i+1]=temp;
            i++;
        }
    else
        for (int i(0); i < (N - 1); i++)
        {
            swap(row[i], row[i + 1]); // or int temp = row[i]; row[i] = row[i + 1]; row[i + 1] = temp;
            i++;
        }
 
    for (int i(0); i < N; i++)
    {
        cout << "Elements " << i << " =" << row[i] << endl;
    }
 
 
    system("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 18.06.2016
Сообщений: 27
27.07.2016, 17:03  [ТС] 14
выход
7
3 4 5 6 7 8 9
4 3 6 5 8 7 0
0
829 / 253 / 34
Регистрация: 27.07.2016
Сообщений: 497
Записей в блоге: 1
27.07.2016, 17:12 15
Цитата Сообщение от dimon77 Посмотреть сообщение
выход
http://rextester.com/KVIN40094
0
0 / 0 / 0
Регистрация: 18.06.2016
Сообщений: 27
27.07.2016, 17:16  [ТС] 16
Код работает супер но я не могу использовать функцию swap. Я типа ее еще не знаю
0
829 / 253 / 34
Регистрация: 27.07.2016
Сообщений: 497
Записей в блоге: 1
27.07.2016, 17:18 17
Цитата Сообщение от dimon77 Посмотреть сообщение
Код работает супер но я не могу использовать функцию swap.
Попробую еще раз:
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
поменяйте на:
C++
1
2
3
int temp = a[i];
a[i] = a[i-1];
a[i-1] = temp;
http://rextester.com/GUU30662
0
0 / 0 / 0
Регистрация: 18.06.2016
Сообщений: 27
27.07.2016, 17:26  [ТС] 18
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
Код работает супер но я не могу использовать функцию swap. Я типа ее еще не знаю

Добавлено через 1 минуту
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
Попробую еще раз:

http://rextester.com/GUU30662
если меняю этот блок выдает
7
3 4 5 6 7 8 9
4 3 6 5 8 7 0
вместо последнего числа 0

Добавлено через 5 минут
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
Попробую еще раз:

http://rextester.com/GUU30662
Зиергуд!!!!!!!!!!!!!!! Все вышло!!!!!!!!!!! Огромное спасибо!!!!!!!!!!!!!!!!!!
Перемудрил.......
0
27.07.2016, 17:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.07.2016, 17:26
Помогаю со студенческими работами здесь

Переставить элементы массива X с нечетными номерами в начало массива Y в том же порядке, затем элементы с четными номера
Здравствуйте, не могу создать массив Y по заданию.Ниже будет код массива X. Задание...

Поменять соседние элементы массива
Поменять местами первую и вторую, третью и четвертую букву и т. Д. Где ошибка? include...

Поменять местами элементы соседние массива
В массиве из 100 целых чисел поменять местами соседние элементы (1-й со 2-м, 3-й по 4-м и т.д.). ...

Поменять местами соседние элементы массива
Нужно поменять местами соседние элементы массива. Вот код: #include &lt;iostream&gt; using namespace...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru