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

Поменять местами нечетные и четные элементы массива, оцените код

22.04.2020, 09:21. Показов 3449. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Оцените код от 0 до 10.
Хотяб на 2 пойдет? Что можно изменить? Программа меняет местами элементы массива, нечетные и четные. Допустим было 1 и 2, стало 2 и 1 , было 2 и 1, стало 1 и 2.
C++ (Qt)
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>
using namespace std;
 
void change(int  arr[], int size)
{
    int temp = 0;
    for (int a = 0; a < size; a++)
    {
        if (a == size - 1)  // если  a = размер маасива - 1 , то выходим,чтобы не было краша
              // выхода за пределы массива
        {
            break;
        }
        if (arr[a] % 2 != 0 && arr[a + 1] % 2 == 0 || arr[a+1] %2 !=0 && arr[a] %2 ==0) // если первый элемент нечетен и второй элемент четен или наоборот.
        {
            temp = arr[a];  // меняем местами элементы ( 1 и 2 , стало 2 и 1)
            arr[a] = arr[a + 1];
            arr[a + 1] = temp;
            a++;
        }
       
    }
}
 
void PrintArr(int arr[],int size) // вывод массива
{
    for (int a = 0; a < size; a++)
    {
        cout << arr[a] << endl;
    }
}
 
int main()
{
    const int SIZE = 12;
    int arr[SIZE]{ 1,2,3,4,5,6,7,8,9,10,11,12 };
    change(arr, SIZE); // меняем местами элементы.
    PrintArr(arr, SIZE); // выводим.
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2020, 09:21
Ответы с готовыми решениями:

Найти четные и нечетные элементы одномерного массива и поменять их местами
найти четные и нечетные элементы одномерного массива и поменять их местами

Найти четные и нечетные элементы одномерного массива и поменять их местами
Найти четные и нечетные элементы одномерного массива и поменять их местами.

Поменять местами четные и нечетные элементы массива
в произвольном одномерном массиве поменять местами элементы в парах, элементы с нечетным...

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

9
фрилансер
5499 / 5095 / 1047
Регистрация: 11.10.2019
Сообщений: 13,346
22.04.2020, 09:37 2
(субъективно, за что я бы минусовал)
using namespace std; вместо std::
arr[], int size вместо вектора
temp = arr[a]; arr[a] = arr[a + 1]; arr[a + 1] = temp; вместо std::swap(arr[a],arr[a+1])

if (arr[a] % 2 != 0 && arr[a + 1] % 2 == 0 || arr[a+1] %2 !=0 && arr[a] %2 ==0) - нечитабельно

C++
1
2
3
4
5
const bool L=(arr[a]%2 == 0);//слева - чётное
const bool R=(arr[a+1]%2 == 0);//справа - чётное
if(L!=R)//если чётность не совпадает
{
}
0
0 / 0 / 0
Регистрация: 23.03.2020
Сообщений: 34
22.04.2020, 09:42  [ТС] 3
зачем std?
где не читабельно,как исправить?Там по сути две части
Первая arr[a]%!=0 && arr[a+1] == 0 . Вторая такая же,но наоборот. между этими частями || стоит,приглядись.
Я передал массив в функцию,по заданию .
0
2528 / 1247 / 460
Регистрация: 08.11.2016
Сообщений: 3,428
22.04.2020, 09:49 4
Норм, вполне на семерку, можно оптимизировать проверку условия обмена: если сумма соседних элементов нечетная - значит рядом находятся четный и нечетный элементы - следовательно производим обмен, если же сумма четная - значит рядом либо два четных, либо два нечетных - обмен значений не нужен.
0
0 / 0 / 0
Регистрация: 23.03.2020
Сообщений: 34
22.04.2020, 09:51  [ТС] 5
Цитата Сообщение от Garryso Посмотреть сообщение
Первая arr[a]%!=0 && arr[a+1] == 0 . Вторая такая же,но наоборот. между этими частями || стоит,приглядись.
я написал до того,как чекнул твой.год сорри слепой.
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
22.04.2020, 13:59 6
Цитата Сообщение от Garryso Посмотреть сообщение
Я передал массив в функцию,по заданию
напишите оригинал условия задачи. только после этого можно будет что-либо сказать насчёт кода.
0
0 / 0 / 0
Регистрация: 23.03.2020
Сообщений: 34
23.04.2020, 10:31  [ТС] 7
Объявите массив типа int и выделите память память для 12-ти элементов. Необходимо написать функцию, которая поменяет значения четных и нечетных ячеек массива.
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
23.04.2020, 11:43 8
Garryso, в задаче речь идёт о чётных и нечётных ячейках (то есть индексах или номерах элементов), поэтому
проверять сами элементы на чётность
Цитата Сообщение от Garryso Посмотреть сообщение
arr[a] % 2 != 0
не нужно

условие задачи не чёткое - не указано значения каких именно ячеек менять. если соседних:
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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
void Random (int *a, int n)
{
    for (int i = 0; i < n; i++)        
        a[i]=rand()%9 + 1;
} 
 
void Swap_p(int *a, int n)
{   
    int temp;
    for (int i = 0; i < n; i+=2)
    {   
        temp=a[i];  
        a[i]=a[i+1];
        a[i+1] = temp;       
    }
}
 
void Print (int *a, int n) 
{
    for (int i = 0; i < n; i++)    
        cout << a[i] << " ";
    cout << "\n";    
}
 
int main()
{
    srand((int)time(0));
    const int n=12;
    int a[n];   
   
    Random(a,n);
    Print(a,n);
    Swap_p(a,n);
    Print(a,n);
system("pause");
return 0;
}
0
0 / 0 / 0
Регистрация: 23.03.2020
Сообщений: 34
23.04.2020, 12:29  [ТС] 9
соседних . Допустим 112 , получиться - 121. проверка тогда нужна будет.
1352 - 1325
0
фрилансер
5499 / 5095 / 1047
Регистрация: 11.10.2019
Сообщений: 13,346
23.04.2020, 12:42 10
Цитата Сообщение от Garryso Посмотреть сообщение
Объявите массив типа int и выделите память память для 12-ти элементов. Необходимо написать функцию, которая поменяет значения четных и нечетных ячеек массива.
дословное выполнение задания:

C++
1
2
3
4
5
int arr[]{1,2,3,4,5,6,7,8,9,10,11,12};
for(auto& item:arr)
{
      item=0;
}
0
23.04.2020, 12:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2020, 12:42
Помогаю со студенческими работами здесь

Поменять местами четные и нечетные элементы массива
Помогите пожалуйста. Нужно в лазарусе программу написать. &quot;Дан целочисленный массив,нужно...

Поменять местами четные и нечетные элементы одномерного массива
Помогите решить задачу в Delphi Задача В заданном одномерном массиве размерности N (массив...

Поменять местами четные и нечетные элементы заданного массива
помогите найти ошибку в задаче Дан массив надо поменять местами четные и нечетные элементы. Sub...

Массив: поменять местами четные элементы массива на нечетные
Двухмерный массив любого размера состоящий из случайных цифр. Нужно поменять местами Четные...

Найти все нечетные и четные элементы массива и поменять их местами
дан массив из 10 целых чисел. найти все нечетные и четные элементы и поменять их местами (не...

Поменять местами нечётные и слейдующие за ними чётные элементы массива
помогите решить : Дан массив .Поменять местами нечётныеи слейдующие за ними чётные элементы массива.


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

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