0 / 0 / 0
Регистрация: 29.11.2011
Сообщений: 34
1

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

20.12.2011, 03:10. Показов 2544. Ответов 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
#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();
}
подскажите, что как сделать. крутил вертел прогу, ничего не могу придумать.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2011, 03:10
Ответы с готовыми решениями:

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

Поменять местами столбцы по правилу: первый с последним, второй с предпоследним и т.д.
Дан массив размером n*n, элементы которого целые числа.Поменять местами столбцы по правилу: первый...

Поменять местами столбцы матрицы по правилу: первый с последним, второй с предпоследним и т.д.
1. Поменять местами столбцы по правилу: первый с последним, второй с предпоследним и т.д. 2. Для...

Поменять местами столбцы в матрице: первый с последним, второй с предпоследним и т.д.
1) Написать подпрограмму, переставляющую столбцы целочисленной матрицы А, состоящей из N строк и M...

2
Эксперт С++
4726 / 2547 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
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));
        };// в этой строке ";" лишнее
    };// в этой строке ";" лишнее
};// в этой строке ";" лишнее
1
0 / 0 / 0
Регистрация: 29.11.2011
Сообщений: 34
20.12.2011, 11:44  [ТС] 3
благодарен за помощь!!!
0
20.12.2011, 11:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.12.2011, 11:44
Помогаю со студенческими работами здесь

Поменять местами столбцы матрицы по правилу: первый с последним, 2 с предпоследним.
int i; int j; int n = 2; int a = new int; for (i = 0; i &lt; n;...

Изменить массив, поменяв местами столбцы: первый с последним, второй с предпоследним и тд.
Дан двумерный массив размера 6 x 9. Изменить массив, поменяв местами столбцы: первый с последним,...

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

Массив: Поменять местами первый элемент поменять с последним, второй - с предпоследним и т.д.
Задано массив из четного числа элементов.Поменять местами первый элемент поменять с последним,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru