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

Отображение матрицы симметрично относительно вертикальной оси - C++

Восстановить пароль Регистрация
 
AndreyZ01
1 / 1 / 0
Регистрация: 28.10.2010
Сообщений: 112
25.11.2010, 14:57     Отображение матрицы симметрично относительно вертикальной оси #1
Привет всем.
Ещё одна задача на С.
Вобщем есть матрица с каким угодно размером, 5*5 например, неимеет важности.
Надо зделать так, чтобы отобразить ёё симетрично относительно вертикальной оси сектора матрицы, которые розположены влево и вправо от головной и вспомагательной диалонали.
Может комуто поможет этот рисунок: http://www.cyberforum.ru/attachment....1&d=1290686172
заранее спасибо.
Изображения
 
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2010, 14:57     Отображение матрицы симметрично относительно вертикальной оси
Посмотрите здесь:

в двумерном массиве (NxN) произвести зеркальное отражение относительно вертикальной оси симметрии. C++
Отобразить левую половину матрицы на правую зеркально симметрично относительно вертикальной оси C++
Зеркально отразить элементы матрицы относительно горизонтальной оси симметрии матрицы C++
C++ Отобразить главную и побочную диагонали симметрично относительно вертикальной оси
C++ Отобразить симметрично относительно вертикальной оси секторы матрицы...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
25.11.2010, 16:39     Отображение матрицы симметрично относительно вертикальной оси #2
C
1
2
3
4
5
6
7
8
9
10
11
12
    for(int i=0; i<N; i++)
        for(int j=0; j<N; j++)
        {
            if(i>j && i<(N+1)/2)
            {
                int temp=a[i][j]; a[i][j]=a[i][N-1-j]; a[i][N-1-j]=temp;
            }
            if(i<j && i>=(N+1)/2)
            {
                int temp=a[i][j]; a[i][j]=a[i][N-1-j]; a[i][N-1-j]=temp;
            }
        }
Элементы расположенные на самих диагоналях не затрагиваются при обмене.
AndreyZ01
1 / 1 / 0
Регистрация: 28.10.2010
Сообщений: 112
25.11.2010, 16:52  [ТС]     Отображение матрицы симметрично относительно вертикальной оси #3
извините но неработает чтото, вот как выглядит код программы:


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
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main (void)
{
int a[3][3];
int i,j, N;
printf ("Enter 3 elements of matrix :\n");
for (i=0; i<3; ++i)
for (j=0; j<3; ++j)
scanf("%d", &a[i][j]);
for(int i=0; i<N; i++)
                for(int j=0; j<N; j++)
                {
                        if(i>j && i<(N+1)/2)
                        {
                                int temp=a[i][j]; a[i][j]=a[i][N-1-j]; a[i][N-1-j]=temp;
                        }
                        if(i<j && i>=(N+1)/2)
                        {
                                int temp=a[i][j]; a[i][j]=a[i][N-1-j]; a[i][N-1-j]=temp;
                        }
                }
 
 
printf ("%d", i, j, a[i][j]);
 
        return 0;
}
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
25.11.2010, 17:03     Отображение матрицы симметрично относительно вертикальной оси #4
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
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main (void)
{
int a[3][3];
int i,j, N=3;
printf ("Enter 9 elements of matrix :\n");
for (i=0; i<3; ++i)
for (j=0; j<3; ++j)
scanf("%d", &a[i][j]);
for( i=0; i<N; i++)
                for(j=0; j<N; j++)
                {
                        if(i>j && i<(N+1)/2)
                        {
                                int temp=a[i][j]; a[i][j]=a[i][N-1-j]; a[i][N-1-j]=temp;
                        }
                        if(i<j && i>=(N+1)/2)
                        {
                                int temp=a[i][j]; a[i][j]=a[i][N-1-j]; a[i][N-1-j]=temp;
                        }
                }
 // вывод на экран делается так:
 for (i=0; i<3; ++i)
 {
     for (j=0; j<3; ++j)
         printf("%d ", a[i][j]);
     printf("\n");
 }
 
 
                return 0;
}
AndreyZ01
1 / 1 / 0
Регистрация: 28.10.2010
Сообщений: 112
25.11.2010, 17:20  [ТС]     Отображение матрицы симметрично относительно вертикальной оси #5
Работает!
Бльшое спасибо.
Yandex
Объявления
25.11.2010, 17:20     Отображение матрицы симметрично относительно вертикальной оси
Ответ Создать тему
Опции темы

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