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

не получается поменять местами элементы массива - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Olejeg85
13 / 10 / 0
Регистрация: 27.03.2011
Сообщений: 164
14.07.2011, 03:06     не получается поменять местами элементы массива #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
#include <iostream>
using namespace std;
 
int main()
{
    int arr[6]={1, 2, 3, 4, 5, 6}, temp;
    
    //массив до перестановки
    cout << "Massiv do perestanovki\n";
    for(int ix=0; ix!=6; ++ix)
    cout << arr[ix];
 
    //меняем местами элементы массива
    for(int ix=0, ix2=5; ix!=6; ++ix, --ix2)
    {
        temp=arr[ix];           //записываем первый элемент во временную переменную
        arr[ix]=arr[ix2];       //записываем в первый элемент - последний
        arr[ix2]=temp;          //записываем в последний первый элемент
    } 
    cout << endl;
    //массив после перестановки
    cout << "\nMassiv posle perestanovki\n";
    for(int ix=0; ix!=6; ++ix)
        cout << arr[ix];
 
    cout << endl;
 
    system("pause");
    return 0;
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.07.2011, 03:13     не получается поменять местами элементы массива #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
#include <iostream>
using namespace std;
 
int main()
{
    const int N = 6;
        int arr[N]={1, 2, 3, 4, 5, 6}, temp;
        
        //массив до перестановки
        cout << "Massiv do perestanovki\n";
        for(int ix=0; ix < N; ++ix)
        cout << arr[ix];
 
        //меняем местами элементы массива
        for(int ix=0, ix2=5; ix <= N / 2; ++ix, --ix2)
        {
                temp=arr[ix];                   //записываем первый элемент во временную переменную
                arr[ix]=arr[ix2];               //записываем в первый элемент - последний
                arr[ix2]=temp;                  //записываем в последний первый элемент
        } 
        cout << endl;
        //массив после перестановки
        cout << "\nMassiv posle perestanovki\n";
        for(int ix=0; ix < N; ++ix)
                cout << arr[ix];
 
        cout << endl;
 
        system("pause");
        return 0;
 
}
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
14.07.2011, 03:13     не получается поменять местами элементы массива #3
C
1
        for(int ix=0, ix2=5; ix!=6; ++ix, --ix2)
условие заменить на ix!=3, а лучше ix<3
Olejeg85
13 / 10 / 0
Регистрация: 27.03.2011
Сообщений: 164
14.07.2011, 03:21  [ТС]     не получается поменять местами элементы массива #4
Цитата Сообщение от OstapBender Посмотреть сообщение
C
1
        for(int ix=0, ix2=5; ix!=6; ++ix, --ix2)
условие заменить на ix!=3, а лучше ix<3
спасиб

почему лучше <, а не != если разницы никакой
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.07.2011, 03:22     не получается поменять местами элементы массива #5
Цитата Сообщение от Olejeg85 Посмотреть сообщение
почему лучше <
легче для понимания, а для итераторов используют != из соображений эффективности
Olejeg85
13 / 10 / 0
Регистрация: 27.03.2011
Сообщений: 164
14.07.2011, 03:23  [ТС]     не получается поменять местами элементы массива #6
Цитата Сообщение от Maxwe11 Посмотреть сообщение
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
#include <iostream>
using namespace std;
 
int main()
{
    const int N = 6;
        int arr[N]={1, 2, 3, 4, 5, 6}, temp;
        
        //массив до перестановки
        cout << "Massiv do perestanovki\n";
        for(int ix=0; ix < N; ++ix)
        cout << arr[ix];
 
        //меняем местами элементы массива
        for(int ix=0, ix2=5; ix <= N / 2; ++ix, --ix2)
        {
                temp=arr[ix];                   //записываем первый элемент во временную переменную
                arr[ix]=arr[ix2];               //записываем в первый элемент - последний
                arr[ix2]=temp;                  //записываем в последний первый элемент
        } 
        cout << endl;
        //массив после перестановки
        cout << "\nMassiv posle perestanovki\n";
        for(int ix=0; ix < N; ++ix)
                cout << arr[ix];
 
        cout << endl;
 
        system("pause");
        return 0;
 
}
спасиб, с одномерным получилось, но в задании написано было сделать с двумерным это действие, я думал что разберусь как с одномерным сделать и с двумерным будет легче разобраться, а с двумерным что-то не получается (
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.07.2011, 03:24     не получается поменять местами элементы массива #7
Цитата Сообщение от Olejeg85 Посмотреть сообщение
спасиб, с одномерным получилось, но в задании написано было сделать с двумерным это действие, я думал что разберусь как с одномерным сделать и с двумерным будет легче разобраться, а с двумерным что-то не получается (
показывайте что у вас не получилось и уточните задание
Olejeg85
13 / 10 / 0
Регистрация: 27.03.2011
Сообщений: 164
14.07.2011, 03:39  [ТС]     не получается поменять местами элементы массива #8
Цитата Сообщение от Maxwe11 Посмотреть сообщение
показывайте что у вас не получилось и уточните задание
все, разобрался =)
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 main()
{
    const int max=6, size=2;
    int arr[max][size]={{1,1},{2,2},{3,3},{4,4},{5,5},{6,6}};
    int temp;
    
    //массив до перестановки
    cout << "Massiv do perestanovki\n";
    for(int i=0; i!=max; ++i)
        for (int n=0; n!=size; ++n)
            cout << arr[i][n] << " ";
 
 
    //меняем местами элементы массива
    for(int i=0, i2=5; i!=max/2; ++i, --i2)
        for(int n=0; n!=size; ++n)
        {
        temp=arr[i][n];         //записываем первый элемент во временную переменную
        arr[i][n]=arr[i2][n];       //записываем в первый элемент - последний
        arr[i2][n]=temp;            //записываем в последний первый элемент
        }
      
 
    cout << "\n\nMassiv posle perestanovki\n";
    for(int i=0; i!=max; ++i)
        for (int n=0; n!=size; ++n)
            cout << arr[i][n] << " ";
 
    cout << endl;
 
    system("pause");
    return 0;
 
}
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
14.07.2011, 03:49     не получается поменять местами элементы массива #9
Цитата Сообщение от Olejeg85 Посмотреть сообщение
почему лучше <, а не != если разницы никакой
а если у тебя шаг например не ++ а +=2 то можешь и проскочить условие выхода. и зациклишься.
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
14.07.2011, 07:56     не получается поменять местами элементы массива #10
замечательный метод для вашей задачи:

C
1
2
3
4
5
6
7
8
void reverse(char s []) 
{ 
     int с, i, j ; 
     for (i = 0, j = strlen(s)-1; i < j; i++, j--) {
          с = s[i],  s[i] = s[j],  s[j] = c; 
 
      } 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2011, 20:10     не получается поменять местами элементы массива
Еще ссылки по теме:

C++ Поменять местами элементы массива
Поменять местами элементы массива C++
C++ Поменять местами каждую пару чисел массива (не получается)

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

Или воспользуйтесь поиском по форуму:
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
14.07.2011, 20:10     не получается поменять местами элементы массива #11
Цитата Сообщение от Maxwe11 Посмотреть сообщение
легче для понимания, а для итераторов используют != из соображений эффективности
В смысле? При чём тут эффективность? Тут дело в невозможности сравнивать на что либо, кроме равно-не равно для любого контейнера, кроме массива. Узлы списка(и ему подобных), расположены в памяти произвольно. Сравнивать адреса бесполезно. Это единственная причина. С точки зрения процессора, < и != абсолютно равнозначны.
Yandex
Объявления
14.07.2011, 20:10     не получается поменять местами элементы массива
Ответ Создать тему
Опции темы

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