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

Поменять местами столбцы в квадратной матрице по правилу: первый с последним, второй с предпоследним и т.д. - C++

Восстановить пароль Регистрация
 
SEV7
0 / 0 / 0
Регистрация: 29.11.2011
Сообщений: 34
20.12.2011, 03:10     Поменять местами столбцы в квадратной матрице по правилу: первый с последним, второй с предпоследним и т.д. #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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <iomanip>
#include <stdio.h>
#include <malloc.h>
using namespace std;
 
 
void in(int *a, int n){
    for(int i = 0; i < n; i++){
        for(int j = 0; j <n; j++){
            cout << "a[" << i << ", " << j << "] = "; cin >> *(a + (i * n + j));
        };
    };
};
 
void out3(int *a, int n)
{
    int x;
        for(int i = 0; i < n; i++){
        for(int j = 0; j <n; j++){
        cout << *(a + (i * n + j)) << " ";
        };
        cout << "\n";
    };
        cout<< endl << endl;
 
int j;
    for(int j = 0; j < n/2 ; j++)
    {
        for(int i = 0; i < n; i++)
            {
            x = *(a + (i *  n + j));                                       //пытаюсь тут поменять 
            *(a + (i *  n + j)) =  *(a + (i *  n + (n - j + 1)));   //местами, только муть
            *(a + (i *  n + (n - j + 1))) = x;                          //какая-то выходит
            //cout << *(a+(i*n +j)) << " ";
            cout<< x << " ";
        };
        //cout << *(a+(i*n+(n-j+1))) << " ";
        cout << "\n";
    }    
};
 
int main(){
    int n, x, *a;
    do{cout << "Put n: "; cin >> n;}while(n <= 0);
    a = (int *)malloc(n * n * sizeof(int));
    in(a, n);
    cout << "\n-----------------------------------\n";
    out3(a, n);
    cout << "\n-----------------------------------\n";
    free(a);
    _getch();
}
подскажите, что как сделать. крутил вертел прогу, ничего не могу придумать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2011, 03:10     Поменять местами столбцы в квадратной матрице по правилу: первый с последним, второй с предпоследним и т.д.
Посмотрите здесь:

Разработать программу «переворота» строки. Способ: последовательная перестановка элементов - первый с последним, второй с предпоследним и т.д. C++
Преобразить массив так, чтобы элементы массива поменялись местами: первый - последним, второй - предпоследним, и т.д. C++
C++ поменять столбцы местами по правилу
C++ Двумерные массивы. Поменять местами первый элемент в каждой строке с последним, второй - с предпоследним и т.д
В квадратной матрице поменять местами первый и четвертый столбцы и вывести их C++
C++ Поменять местами первый и последний столбцы, второй и предпоследний и т.д
Поменять местами столбцы в матрице C++
C++ В квадратной матрице 5 на 5 поменять местами

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
20.12.2011, 08:00     Поменять местами столбцы в квадратной матрице по правилу: первый с последним, второй с предпоследним и т.д. #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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <iomanip>
#include <stdio.h>
#include <malloc.h>
using namespace std;
 
 
void in(int *a, int n){
    for(int i = 0; i < n; i++){
        for(int j = 0; j <n; j++){
            cout << "a[" << i << ", " << j << "] = "; cin >> *(a + (i * n + j));
        }
    }
}
 
void f(int *a, int n)
{
    int x;
        for(int j = 0; j < n/2 ; j++)
        {
        for(int i = 0; i < n; i++)
                        {
                        x = *(a + (i *  n + j));                                       //ïûòГ*ГѕГ±Гј ГІГіГІ ïîìåГ*ГїГІГј 
                        *(a + (i *  n + j)) =  *(a + (i *  n + (n - j - 1)));   //ìåñòГ*ìè, òîëüêî ìóòü
                        *(a + (i *  n + (n - j - 1))) = x; }                         //ГЄГ*ГЄГ*Гї-ГІГ® âûõîäèò
        }    
}
 
void out3(int *a, int n)
{
     
            for(int i = 0; i < n; i++){
        for(int j = 0; j <n; j++){
        cout << *(a + (i * n + j)) << " ";
        }
        cout << "\n";
    }
                cout<< endl << endl;
 
 
}
 
int main(){
    int n, x, *a;
    do{cout << "Put n: "; cin >> n;}while(n <= 0);
    a = (int *)malloc(n * n * sizeof(int));
    in(a, n);
    cout << "\n-----------------------------------\n";
    out3(a, n);
    cout << "\n-----------------------------------\n";
    f(a, n);
    out3(a, n);
    cout << "\n-----------------------------------\n";
    free(a);
        _getch();
}
и мой совет на будущее. См комментарии:
C++
1
2
3
4
5
6
7
void in(int *a, int n){
    for(int i = 0; i < n; i++){
        for(int j = 0; j <n; j++){
            cout << "a[" << i << ", " << j << "] = "; cin >> *(a + (i * n + j));
        };// в этой строке ";" лишнее
    };// в этой строке ";" лишнее
};// в этой строке ";" лишнее
SEV7
0 / 0 / 0
Регистрация: 29.11.2011
Сообщений: 34
20.12.2011, 11:44  [ТС]     Поменять местами столбцы в квадратной матрице по правилу: первый с последним, второй с предпоследним и т.д. #3
благодарен за помощь!!!
Yandex
Объявления
20.12.2011, 11:44     Поменять местами столбцы в квадратной матрице по правилу: первый с последним, второй с предпоследним и т.д.
Ответ Создать тему
Опции темы

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