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

Вывести элементы массива в виде таблицы и переставить его элементы местами - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Nikolay_1
0 / 0 / 0
Регистрация: 15.01.2014
Сообщений: 24
21.01.2014, 14:12     Вывести элементы массива в виде таблицы и переставить его элементы местами #1
Скажите каким образом переставляется двумерный массив ? К примеру : {1,2,3,4,5} мне нужно элементы поменять местами так чтобы последний (5) стал на место предпоследнего (4) и так со всеми элементами в массиве , у меня есть коды , там где я выводил мин./макс элемент в массиве (с этим более менее ясно) , а вот с перестановкой запутался ... Спасибо заранее.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2014, 14:12     Вывести элементы массива в виде таблицы и переставить его элементы местами
Посмотрите здесь:

Дан массив а1,а2,,…,аn. Переставить его элементы так, чтобы в начале массива расположились все его неотрицательные элементы, а в конце – отрицательные C++
Как переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами C++
Дан массив а1+ a2+…+an Переставить его элементы так чтобы в начале массива расположились все его неотрицательные элементы, а в конце - отрицательные C++
Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами C++
C++ Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
shinarthas
0 / 0 / 0
Регистрация: 06.12.2013
Сообщений: 30
21.01.2014, 17:21     Вывести элементы массива в виде таблицы и переставить его элементы местами #2
Доступ к каждому элементу массива можно получить с помощью индекса mas[i][j][k], где I j k его номер, поменять элементы массива можно с помощью простого обмена это возможно с мощью вспомогательной переменной (наприме buf).
Ps я думаю и без кода разберёшься.
Бедел
 Аватар для Бедел
232 / 28 / 4
Регистрация: 04.06.2010
Сообщений: 283
21.01.2014, 19:19     Вывести элементы массива в виде таблицы и переставить его элементы местами #3
Цитата Сообщение от Nikolay_1 Посмотреть сообщение
мне нужно элементы поменять местами так
Не совсем понятно, как именно вам надо поменять местами элементы. Вот есть массив m={1,2,3,4,5}, что должно получиться в итоге ? вот такой массив m={1,3,2,5,4} ?
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,790
21.01.2014, 20:22     Вывести элементы массива в виде таблицы и переставить его элементы местами #4
Цитата Сообщение от Nikolay_1 Посмотреть сообщение
Скажите каким образом переставляется двумерный массив ? К примеру : {1,2,3,4,5} мне нужно элементы поменять местами так чтобы последний (5) стал на место предпоследнего (4)
то, что вы привели НЕ двумерный массив.

Поясните, то, что вы имеете ввиду на примере:

1 2 3 4 5
1 2 3 4 6
7 8 9 0 9
Бедел
 Аватар для Бедел
232 / 28 / 4
Регистрация: 04.06.2010
Сообщений: 283
21.01.2014, 20:24     Вывести элементы массива в виде таблицы и переставить его элементы местами #5
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
то, что вы привели НЕ двумерный массив.
Да и не важно это. Можно и на примере одномерного показать, главное принцип узнать.
А сортировать - да, придется двумерный.
Nikolay_1
0 / 0 / 0
Регистрация: 15.01.2014
Сообщений: 24
22.01.2014, 01:34  [ТС]     Вывести элементы массива в виде таблицы и переставить его элементы местами #6
Цитата Сообщение от shinarthas Посмотреть сообщение
Доступ к каждому элементу массива можно получить с помощью индекса mas[i][j][k], где I j k его номер, поменять элементы массива можно с помощью простого обмена это возможно с мощью вспомогательной переменной (наприме buf).
Ps я думаю и без кода разберёшься.
Вот как раз мне с этим-то и не понятно , как работает buf , и как взаимозаменять элементы подставлять значения , Вы верно понимаете вопрос , вот мой код , (вроде бы все просто на первый взгляд , но мне не очень) Как вот их менять местами через вышеуказанный buf и переменные?
Написал комменты как понимаю код...

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
const int Y = 3, X = 4;//Высота и ширина массива
    int a[Y][X] = {0};//Создание массива
 
    cout << "Input elements:\n";
    for (int i = 0; i < Y; i++)//Перебираем строки
    {
        for (int j = 0; j < X; j++)//Перебираем столбцы
        {
            cout << "a[" << i << "][" << j << "] = ";//a[0][0] = 
            cin >> a[i][j];//Вводим текущий элемент
        }
    }
    //Вывод массива в виде таблицы
    cout << "Source matrix\n";
    for (int i = 0; i < Y; i++)
    {
        
        for (int j = 0; j < X; j++)
        {
            cout << a[i][j] << "\t";
        }
        cout << "\n";
    }
    for (int i1=0, i2=Y-1;i1<i2;i1++,i2--)
    {
    for(int j=0; j<X;j++)
    {
        int buf=a[i1][j]=a[i2][j]; 
        a[i2][j]=buf;
    }
 
    }
    
 
    cout << "Result matrix:\n";
    for (int i=0; i <Y; i++)
    {
        for (int j=0; j < X;j++)
        {
            cout << a [i][j] << "\t";
        }
        cout <<"\n";
    }
Добавлено через 4 минуты
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
то, что вы привели НЕ двумерный массив.

Поясните, то, что вы имеете ввиду на примере:

1 2 3 4 5
1 2 3 4 6
7 8 9 0 9
Прошу прощения , я поспешил , нужно ввести с клавиатуры элементы двумерного массива. Необходимо вывести массив на экран в виде таблицы, после чего переставить его строки в обратном порядке(первая становится последней, вторая - предпоследней. и т.д.) и вывести массив на экран еще раз;
Бедел
 Аватар для Бедел
232 / 28 / 4
Регистрация: 04.06.2010
Сообщений: 283
22.01.2014, 04:03     Вывести элементы массива в виде таблицы и переставить его элементы местами #7
уже поздно, завтра обещаю написать код и объяснить, как он работает.
abit
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
22.01.2014, 04:39     Вывести элементы массива в виде таблицы и переставить его элементы местами #8
Nikolay_1,
Цитата Сообщение от Nikolay_1 Посмотреть сообщение
const int Y = 3, X = 4;//Высота и ширина массива
* * int a[Y][X] = {0};//Создание массива
не надо так писать, это плохие рудименты Си

C++
1
cout << "Input elements:\n";
эм... вы слыхали про области видимости? термин std может знаком?

C++
1
 for (int i = 0; i < Y; i++)//Перебираем строки
ой-ой... когда в for вместо ++i пишут i++ это всё равно что на моих глазах убивают белого котёнка, больно смотреть, здесь нет никакой необходимости душить котят, как и дальше в коде, впрочем

дальше читать не возможно, раз в каждой строчке до этого ошибки...

дайте конкретно вашу задачу где что переставлять, из фразы
К примеру : {1,2,3,4,5} мне нужно элементы поменять местами так чтобы последний (5) стал на место предпоследнего (4) и так со всеми элементами в массиве
нехрена не ясно, кроме, что надо переставить 4 и 5 местами, что со стальными то? с какими конкретно элементами? как переставлять? я никакой связи не вижу, ну вот вам задача в ответ, я написал число 123456, переставил там две цифры, получил 132456, переставь остальные цифры
Бедел
 Аватар для Бедел
232 / 28 / 4
Регистрация: 04.06.2010
Сообщений: 283
22.01.2014, 05:44     Вывести элементы массива в виде таблицы и переставить его элементы местами #9
abit,
Цитата Сообщение от abit Посмотреть сообщение
эм... вы слыхали про области видимости? термин std может знаком?
Возможно, пространство имён объявлено выше, так что не надо придираться)

Цитата Сообщение от abit Посмотреть сообщение
ой-ой... когда в for вместо ++i пишут i++
Нууу, это если мы будем работать с "тяжелыми" типами данных, а в данном случае простительно но вообще, правда Ваша, лучше использовать префикс, чтобы не привыкнуть, а постфикс только в тех случаях, где он действительно необходим)

Цитата Сообщение от Nikolay_1 Посмотреть сообщение
первая становится последней, вторая - предпоследней. и т.д.
Думаю, после этого уже что-то прояснилось, но не полностью. Вам самому не надоело, что Вас уже пятый раз переспрашивают ?) Ладно, переставим первую строку на место последней, вторую, на место предпоследней.. А куда девать последнюю и предпоследнюю ? на место первой и второй или циклически сдвигать вниз ? Да поясните вы уже на простом примере, чем писать сочинение...

Вот массив:
1 2 3 4 5
6 7 8 9 9
8 7 6 5 4
7 9 4 5 3
0 0 4 3 5

Что мы должны получить на выходе ?
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,790
22.01.2014, 09:18     Вывести элементы массива в виде таблицы и переставить его элементы местами #10
Цитата Сообщение от abit Посмотреть сообщение
ой-ой... когда в for вместо ++i пишут i++ это всё равно что на моих глазах убивают белого котёнка, больно смотреть, здесь нет никакой необходимости душить котят, как и дальше в коде, впрочем
в чем существенная разница использования префиксной и постфиксной формы в цикле for?

Цитата Сообщение от Бедел Посмотреть сообщение
А куда девать последнюю и предпоследнюю ? на место первой и второй или циклически сдвигать вниз ? Да поясните вы уже на простом примере, чем писать сочинение...
Автор уже обяснил:
Цитата Сообщение от Nikolay_1 Посмотреть сообщение
после чего переставить его строки в обратном порядке(первая становится последней, вторая - предпоследней. и т.д.) и вывести массив на экран еще раз;
Цитата Сообщение от Бедел Посмотреть сообщение
1 2 3 4 5
6 7 8 9 9
8 7 6 5 4
7 9 4 5 3
0 0 4 3 5
на выходе:
0 0 4 3 5
7 9 4 5 3
8 7 6 5 4
6 7 8 9 9
1 2 3 4 5
Бедел
 Аватар для Бедел
232 / 28 / 4
Регистрация: 04.06.2010
Сообщений: 283
22.01.2014, 18:21     Вывести элементы массива в виде таблицы и переставить его элементы местами #11
Ev_Hyper,
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
в чем существенная разница использования префиксной и постфиксной формы в цикле for?
Позвольте мне ответить на этот вопрос) В данном случае - абсолютно никакой. Любой современный оптимизированный компилятор выдаст одинаковый ассемблерный код, то есть, компилятор сам заменит постфиксную форму на префиксную, так как первое значение итератора нигде не используется. Если же мы имеем дело с объектами, то компилятору при постфиксном инкременте приходится создавать дополнительно временный объёкт для хранения предыдущего значения, что увеличивает время исполнения вашего кода. Впрочем, почитайте об этом, тема довольно-таки заезженная, и уже достаточное количество раз обсуждалась)
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
на выходе:
0 0 4 3 5
7 9 4 5 3
8 7 6 5 4
6 7 8 9 9
1 2 3 4 5
Надеюсь, мы правильно поняли ТС)
Бедел
 Аватар для Бедел
232 / 28 / 4
Регистрация: 04.06.2010
Сообщений: 283
22.01.2014, 19:48     Вывести элементы массива в виде таблицы и переставить его элементы местами #12
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 <iomanip>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int const a=5, b=5;
    int mas[a][b];
    cout << "Введите элементы массива: " << "\n";
    for (int i=0; i<a; ++i)
        for (int j=0; j<b; ++j)
            cin >> mas[i][j];
            cout << "Введенный массив: "<< "\n";
    for (int i=0; i<a; ++i)
    {
       for (int j=0; j<b; ++j)
            cout << setw(4) << mas[i][j];  // setw() используется для корректного отображения массива, почитайте о нём сами.
      cout << "\n\n";
    }
    int buf;
    for (int i=0; i<a/2; ++i)  // Пробегаем до середины матрицы, ибо если пойдем дальше, то цикл переставит всё обратно на свои места, и толку от проделанной работы не будет (поэксперементируйте сами)
    {
        for (int j=0; j<b; ++j)
        {
            {
                buf=mas[i][j];  // В переменную buf копируем текущий элемент mas[i][j].
                mas[i][j]=mas[a-i-1][j];  // Для первого цикла эта операция элемент mas[0][0] заменит на mas[4][0]. 
                mas[a-i-1][j]=buf; // А теперь мы вместо элемента mas[4][0] кидаем туда то, что было в переменной buf. А там находится текущяя ячейка mas[0][0].
            }
        }
    }
    cout << "Преобразованный массив: " << "\n";
    for (int i=0; i<a; ++i)
    {
       for (int j=0; j<b; ++j)
            cout << setw(4) << mas[i][j];
      cout << "\n\n";
    }
    return 0;
}
Надеюсь, это именно то, что Вам требовалось.
Вывести элементы массива в виде таблицы и переставить его элементы местами

Смысл переменной buf в том, чтобы не потерять текущий элемент mas[i][j], когда мы в него поместим элемент последней строки.

Желаю удачи. Если будут вопросы - спрашивайте
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,790
22.01.2014, 20:43     Вывести элементы массива в виде таблицы и переставить его элементы местами #13
Цитата Сообщение от Бедел Посмотреть сообщение
Если же мы имеем дело с объектами, то компилятору при постфиксном инкременте приходится создавать дополнительно временный объёкт для хранения предыдущего значения, что увеличивает время исполнения вашего кода.
пример можно увидеть?
Бедел
 Аватар для Бедел
232 / 28 / 4
Регистрация: 04.06.2010
Сообщений: 283
22.01.2014, 21:00     Вывести элементы массива в виде таблицы и переставить его элементы местами #14
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
пример можно увидеть?
Вот пример, который приводится в статье на хабре.

Кликните здесь для просмотра всего текста
Префиксный оператор инкремента изменяет состояние объекта и возвращает себя в уже изменённом виде. Оператор префиксного инкремента в классе итератора для работы с std::vector может выглядеть так:
_Myt& operator++()
{ // preincrement
++_Myptr;
return (*this);
}

В случае постфиксного инкремента ситуация сложнее. Состояние объекта должно измениться, но при этом возвращено предыдущее состояние. Возникает дополнительный временный объект:
_Myt operator++(int)
{ // postincrement
_Myt _Tmp = *this;
++*this;
return (_Tmp);
}


Помучайте гугл)) или хотя этот форум. Вот ссылка на тему, где это подробно обсуждается.
i++ vs ++i (циклы)
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,790
22.01.2014, 21:09     Вывести элементы массива в виде таблицы и переставить его элементы местами #15
Цитата Сообщение от Бедел Посмотреть сообщение
Вот пример, который приводится в статье на хабре.
где вы увидели тут цикл for?
Бедел
 Аватар для Бедел
232 / 28 / 4
Регистрация: 04.06.2010
Сообщений: 283
22.01.2014, 21:33     Вывести элементы массива в виде таблицы и переставить его элементы местами #16
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
где вы увидели тут цикл for?
а кто Вам говорил про цикл for ? Почитайте меня ещё раз внимательно.

Это касалось цикла for:
Цитата Сообщение от Бедел Посмотреть сообщение
В данном случае - абсолютно никакой разницы. Любой современный оптимизированный компилятор выдаст одинаковый ассемблерный код, то есть, компилятор сам заменит постфиксную форму на префиксную, так как первое значение итератора нигде не используется.
А вот цитата с первой страницы...
"Нууу, это если мы будем работать с "тяжелыми" типами данных, а в данном случае простительно но вообще, правда Ваша, лучше использовать префикс, чтобы не привыкнуть, а постфикс только в тех случаях, где он действительно необходим)"

Добавлено через 2 минуты
Посмотрите свой #13 пост, Вы процитировали коммент про объекты и попросили пример, я его Вам привёл.
Что касается цикла for, то разницы абсолютно никакой. Если первое значение итератора нигде не используется, то компилятор сам заменит постфиксную итерацию на префиксную. Это я уже повторил несколько раз.
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,790
22.01.2014, 21:37     Вывести элементы массива в виде таблицы и переставить его элементы местами #17
Цитата Сообщение от Бедел Посмотреть сообщение
а кто Вам говорил про цикл for ? Почитайте меня ещё раз внимательно
Я же конкретно про цикл for спрашивал:

Цитата Сообщение от Ev_Hyper Посмотреть сообщение
в чем существенная разница использования префиксной и постфиксной формы в цикле for?
Цитата Сообщение от Бедел Посмотреть сообщение
Посмотрите свой #13 пост, Вы процитировали коммент про объекты и попросили пример, я его Вам привёл.
Конечно, я хотел увидеть пример, который показывает, что префикс лучше именно при использовании цикла for. Вы, наверное, неправильно поняли мои слова. Бывает.
Бедел
 Аватар для Бедел
232 / 28 / 4
Регистрация: 04.06.2010
Сообщений: 283
22.01.2014, 21:40     Вывести элементы массива в виде таблицы и переставить его элементы местами #18
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
Я же конкретно про цикл for спрашивал:
Конкретно про цикл for я Вам ответил, что разницы никакой а дальше просто дополнил, что лучше привыкать к префиксной форме, ибо с объектами ситуация немного иная)
Всего хорошего.
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,790
22.01.2014, 21:44     Вывести элементы массива в виде таблицы и переставить его элементы местами #19
Цитата Сообщение от Бедел Посмотреть сообщение
Конкретно про цикл for я Вам ответил, что разницы никакой
именно поэтому я и спрашивал не вас. Постфиксный вариант на мой взгляд понятнее. Но вопрос я поднял из-за этой фразы:

"ой-ой... когда в for вместо ++i пишут i++ это всё равно что на моих глазах убивают белого котёнка, больно смотреть, здесь нет никакой необходимости душить котят"

Поэтому и решил узнать, какая-же разница в использовании преф/пост форм в цикле.

Цитата Сообщение от Бедел Посмотреть сообщение
Всего хорошего.
Спасибо И вам не хворать
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2014, 21:52     Вывести элементы массива в виде таблицы и переставить его элементы местами
Еще ссылки по теме:

Ввести элементы двумерного массива с клавы С++.Нужно вывести его на экран в виде таблицы, в конце каждой строки надо вывести самый большой элемент C++
Ввести массив в виде таблицы и переставить его элементы местами C++
C++ Переставить местами максимальный и минимальный элементы массива

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

Или воспользуйтесь поиском по форуму:
Бедел
 Аватар для Бедел
232 / 28 / 4
Регистрация: 04.06.2010
Сообщений: 283
22.01.2014, 21:52     Вывести элементы массива в виде таблицы и переставить его элементы местами #20
Ev_Hyper, да, уж слишком трагично данную ситуацию описал господин abit)) мне тоже стало интересно, вдруг есть такое, чего я не знаю, поэтому и ответил на его коммент, но он куда-то пропал..)
И вообще, куда делался ТС ? А то мне кажется, что сейчас снова всплывут условия задачи, о которых мы не знали ранее
Yandex
Объявления
22.01.2014, 21:52     Вывести элементы массива в виде таблицы и переставить его элементы местами
Ответ Создать тему
Опции темы

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