Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
1 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 46
1

Поменять значения четных и нечетных ячеек массива

26.08.2015, 21:01. Показов 3538. Ответов 4
Метки нет (Все метки)

Здравствуйте.Есть задача:Объявите указатель на массив типа int и выделите память память для 12-ти элементов. Необходимо написать функцию, которая поменяет значения четных и нечетных ячеек массива. Например есть массив из 4-х элементов:
i=0 1 2 3
1 2 3 4 =>

i=0 1 2 3
2 1 4 3
[cut] //Задача 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
#include<iostream>
using namespace std;
int *str=new int[12];
int n=1;
void sort(int *num)
{
int b,i;
bool c;
c=true;
for (i=0;i<=12; ){
    if((num[i]%2!=0)  (num[i+1]%2==0)) 
        {
            b=num[i];
            num[i]=num[i+1];
            num[i+1]=b;
            cout<<num[i]<<'_';
            i=i+2;
            c=false;
        }
        
 
    if(c) i++;
}
}
int main()
{
    for(int i=0;i<=12;i++)
    {
        str[i]=n;
        n++;
    }
    sort (str);
    delete [] str;
    system ("pause");
    return 0;
    
}
код либо не запускается/либо выводит только четные числа.Огромная просьба помочь .Всем спасибо
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.08.2015, 21:01
Ответы с готовыми решениями:

Поменять значения четных и нечетных ячеек массива
Уважаемые Господа! Пожалуйста, помогите новичку. Написала программу и не могу понять почему не...

В рендомно заполненном массиве поменять местами значения четных и нечетных индексов
В массиве из 12 ячеек заполненный рендомно, поменять местами значения четных и нечетных индексов....

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

В матрице поменять местами элементы нечетных и четных столбцов
В массиве А (N,N), где N – четное число поменять местами элементы первого и второго столбцов,...

4
6988 / 6027 / 2737
Регистрация: 14.04.2014
Сообщений: 25,792
26.08.2015, 21:05 2
Вне main() только переменные и функции должны быть, внеси new внутрь.
Условие в циклах должно быть строгое (< 12). Для перестановки просто сделай цикл с шагом 2.
0
1 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 46
26.08.2015, 21:10  [ТС] 3
ответ компилятора:
>c:\users\timur\desktop\documents\visual studio 2008\projects\указатели з1\указатели з1\kod.cpp(13) : error C2440: =: невозможно преобразовать 'int *' в 'int'
1> Не существует контекста, в котором такое преобразование возможно
1>c:\users\timur\desktop\documents\visual studio 2008\projects\указатели з1\указатели з1\kod.cpp(15) : error C2440: =: невозможно преобразовать 'int' в 'int *'
1> Для преобразования из целого типа в указатель требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>c:\users\timur\desktop\documents\visual studio 2008\projects\указатели з1\указатели з1\kod.cpp(33) : error C2664: sort: невозможно преобразовать параметр 1 из 'int *' в 'int *[]'
1> Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>Журнал построения был сохранен в "file://c:\Users\Timur\Desktop\Documents\Visual Studio 2008\Projects\указатели з1\указатели з1\Debug\BuildLog.htm"
1>указатели з1 - ошибок 5, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0
_Ivana
26.08.2015, 21:32
  #4

Не по теме:

Компьютер говорит "нет"... (С)

0
0 / 0 / 0
Регистрация: 23.04.2015
Сообщений: 4
27.08.2015, 03:35 5
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
#define  _CRT_SECURE_NO_WARNINGS
#include <vld.h>
#include<iostream>
 
using namespace std;
 
int *str = new int[12];
int n = 1;
 
void sort(int *num)
{
    int b, i;
    bool c;
    c = true;
    for (i = 0; i <= 12;)
    {
        if ((num[i] % 2 != 0) && (num[i + 1] % 2 == 0))
        {
            b = num[i];
            num[i] = num[i + 1];
            num[i + 1] = b;
            cout << num[i] << '_' << num[i+1] << " ";
            i = i + 2;
            c = false;
        }
 
 
        if (c) i++;
    }
}
int main()
{
    setlocale(LC_ALL, "Russian");
    for (int i = 0; i <= 12; i++)
    {
        str[i] = n;
        n++;
    }
    sort(str);
    delete[] str;
    system("pause");
    return 0;
 
}
смотри 11 строчку и 16

Добавлено через 1 час 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
43
44
45
46
47
48
49
50
#define  _CRT_SECURE_NO_WARNINGS
//#include <vld.h>
#include<iostream>
 
using namespace std;
 
 
void sort(int *num, int Size);
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int Size = 12;
    int *str = new int[Size];
    int art = 1;
 
    for (int i = 0; i <= Size - 1; i++)
    {
        str[i] = art;
        art++;
    }
    sort(str, Size);
    delete[] str;
    system("pause >> void");
    return 0;
 
}
 
void sort(int *num, int Size)
{
    int b, i;
    bool c;
    c = true;
    for (i = 0; i <= Size - 1;)
    {
        if ((num[i] % 2 != 0) && (num[i + 1] % 2 == 0))
        {
            b = num[i];
            num[i] = num[i + 1];
            num[i + 1] = b;
            cout << num[i] << '_' << num[i + 1] << " ";
            i = i + 2;
            c = false;
        }
        if (c) i++;
        
        
            
    }
}
такой код более корректный, в верхнем коде идет выход за пределы массива.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.08.2015, 03:35

Помощь в написании контрольных, курсовых и дипломных работ здесь.

В строке символов поменять местами символы на четных и нечетных позициях
В строке символов поменять местами символы на четных и нечетных позициях.

Поменять местами содержимое четных и нечетных разрядов в младшем байте
1 Найти количество чисел из диапазона от 100000 до 999999, у которых произведение первых 4 разрядов...

Поменять попарно местами символы, расположенные на четных и нечетных позициях
Помогите с задачей условия таковы: Задана символьная строка. Поменять попарно местами символы,...

Поменять местами слова строки стоящие на четных и нечетных позициях
Нужна помощь в лабораторной. Для корифеев задачка простая, но для меня...х)) Написать программу,...


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

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

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