Ir ao conteúdo
  • Cadastre-se

Rotacionando Matrizes.


waczuk

Posts recomendados

Èeh pessoal, estou com um serio problema em aprender matrizes. O prof. passou uma lista que com muito sacrificio eu estava conseguindo fazer, mas quando cheguei nessas 3 questoes, a coisa ficou tensa :/

Creio que a resolucao de uma, ajuda para a resolucão das outras duas.

Enunciado1: Criar um programa que entre com valores inteiros para uma matriz 3 x 3 e imprimaa matriz final, conforme mostrado a seguir:

1 2 3

4 5 6

7 8 9

a matriz gira 90º

7 4 1

8 5 2

9 6 3

Enunciado2: Criar um programa que entre com valores inteiros para uma matriz 3 x 3 e imprimaa matriz final, conforme mostrado a seguir:

1 2 3

4 5 6

7 8 9

a matriz gira 180º

9 8 7

6 5 4

3 2 1

Enunciado3: Criar um programa que entre com valores inteiros para uma matriz 3 x 3 e imprimaa matriz final, conforme mostrado a seguir:

1 2 3

4 5 6

7 8 9

a matriz gira 270º

3 6 9

2 5 8

1 4 7

Aqui está o inicio da resolucao, alias, o que eu consegui fazer.

#include<stdio.h>

#include<stdlib.h>

int main()

{

int matriz[3][3], i, j;

//entrando com os valores da matriz inicial

for(i=0;i<3;i++) {

for(j=0;j<3;j++) {

printf("Digite o valor da matriz[%d][%d]: ",i+1, j+1);

scanf("%d", &matriz[j]);

}

}

//mostrando a matriz inicial

for(i=0;i<3;i++) {

printf("\n");

for(j=0;j<3;j++) {

printf(" %d ", matriz[j]);

}

}

...

return (0);

}

Obrigado, e abração pra todos.

Link para o comentário
Compartilhar em outros sites

Cara, acredito que o que você tenha passado ai seja para apresentar na tela e não muda-las de posição na memória. Então o seguinte tente fazer um "mapa" aonde se localiza cada numeral que você digitou, por exemplo

Nº 1 - linha0,coluna0

Nº 2 - linha0,coluna1

.

.

.

E assim com os demais, depois de saber a localização deles é só fazer um outro "mapa" para saber aonde eles serão mostrados na tela, por exemplo na rotação de 90º ...

Nº 1 - Que está na linha0,coluna0 deverá ser apresentado na : linha0,coluna2

Nº 2 - Que está na linha0,coluna1 deverá ser apresentado na : linha1,coluna2

.

.

.

Com isso você vai percebendo que aonde os números serão mostrandos, assim você faz como uma apresentação normal de matriz com 2 for's só que as 2 coisas que você terá que variar são : as regras do for, em algumas vai ser encremento e nas outras decremento e quem não mudará de valor na apresentação ...

Ex : Na rotacação de 90º a mudará só depois dos 3 valores terem aparecido então ela ficará 1º no for. Tente fazer ai qualquer coisa posto o código :D

Link para o comentário
Compartilhar em outros sites

OK, acho que comecei a entender ;D

Vou tentar fazer agora, se eu realmente nao conseguir eu peço para você posta o código.

Obriigado, guilhermehgl.

---------------------------------------------------------------------------------------------------------------------------------------

Ficou meio que uma gambiarra, mas deu certo ;P

Essa é do enunciado 1:

#include<stdio.h>

#include<stdlib.h>

int main()

{

int matriz[3][3], i, j, rot[3][3];

//entrando com os valores da matriz inicial

for(i=0;i<3;i++) {

for(j=0;j<3;j++) {

printf("Digite o valor da matriz[%d][%d]: ",i+1, j+1);

scanf("%d", &matriz[j]);

}

}

//mostrando a matriz inicial

for(i=0;i<3;i++) {

printf("\n");

for(j=0;j<3;j++) {

printf(" %d ", matriz[j]);

}

}

//rotacionando a matriz

for(i=0;i<3;i++) {

if(i==0){

for(j=0;j<3;j++){

rot[j][2]=matriz[j];

}

}

if(i==1){

for(j=0;j<3;j++){

rot[j][1]=matriz[j];

}

}

if(i==2){

for(j=0;j<3;j++){

rot[j][0]=matriz[j];

}

}

}

//mostrando a matriz rotacionada

printf("\n\nA MATRIZ GIRA 90º\n");

for(i=0;i<3;i++) {

printf("\n");

for(j=0;j<3;j++) {

printf(" %d ", rot[j]);

}

}

return (0);

}

Essa é do enunciado 2:

#include<stdio.h>

#include<stdlib.h>

int main()

{

int matriz[3][3], i, j;

//entrando com os valores da matriz inicial

for(i=0;i<3;i++) {

for(j=0;j<3;j++) {

printf("Digite o valor da matriz[%d][%d]: ",i+1, j+1);

scanf("%d", &matriz[j]);

}

}

//mostrando a matriz inicial

for(i=0;i<3;i++) {

printf("\n");

for(j=0;j<3;j++) {

printf(" %d ", matriz[j]);

}

}

//rotacionando e mostrando a matriz

printf("\n\nA MATRIZ GIRA 180º\n");

for(i=0;i<3;i++) {

printf("\n");

if(i==0){

for(j=2;j>=0;j--){

printf(" %d ", matriz[2][j]);

}

}

if(i==1){

for(j=2;j>=0;j--){

printf(" %d ", matriz[1][j]);

}

}

if(i==2){

for(j=2;j>=0;j--){

printf(" %d ", matriz[0][j]);

}

}

}

return (0);

}

Link para o comentário
Compartilhar em outros sites

  • 8 anos depois...

Criar um programa que entre com valores inteiros para uma matriz M3x3 e imprima a matriz final, conforme mostrado a seguir:

 

| 1 2 3 |                                    | 7 4 1 |

| 4 5 6 |  a matriz gira 90º      | 8 5 2 |

| 7 8 9 |                                    | 9 6 3 |

 

 

#include<stdio.h>

 

int main (void)

 

{

    int matriz [3][3],i,j;

 

    for(i=0;i<3;i++)

    {

        for(j=0;j<3;j++)

        {

            scanf("%d",&matriz[i][j]);

        }

    }

    printf("\n");

    for (i=2;i>=0;i--)

    {

        printf("%d ",matriz[i][0]);

    }

    printf("\n");

    for (i=2;i>=0;i--)

    {

        printf("%d ",matriz[i][1]);

    }

    printf("\n");

    for (i=2;i>=0;i--)

    {

        printf("%d ",matriz[i][2]);

    }

    return 0;

}

 

Criar um programa que entre com valores inteiros para uma matriz M3x3 e imprima a matriz final, conforme mostrado a seguir:

 

| 1 2 3 |                                    | 9 8 7 |

| 4 5 6 |  a matriz gira 180º     | 6 5 4 |

| 7 8 9 |                                    | 3 2 1 |

 

#include<stdio.h>

 

int main(void)

{

    int matriz[3][3],i,j;

 

    for(i=0;i<3;i++)

    {

        for(j=0;j<3;j++)

        {

            scanf("%d",&matriz[i][j]);

        }

    }

    printf("\n");

    for(i=2;i>=0;i--)

    {

        for(j=2;j>=0;j--)

        {

            printf("%d ",matriz[i][j]);

        }

        printf("\n");

    }

    return 0;

}



 

Criar um programa que entre com valores inteiros para uma matriz M3x3 e imprima a matriz final, conforme mostrado a seguir: 

 

| 1 2 3 |                                    | 3 6 9 |

| 4 5 6 |  a matriz gira 270º     | 2 5 8 |

| 7 8 9 |                                    | 1 4 7 |

 

#include<stdio.h>

 

int main (void)

 

{

    int matriz[3][3] ,i ,j;

 

    for(i=0;i<3;i++)

 

    {

        for(j=0;j<3;j++)

 

        {

            scanf("%d",&matriz[i][j]);

        }

    }

 

        printf("\n");

        for(i=0;i<3;i++)

 

        {

            printf("%d ",matriz[i][2]);

        }

 

        printf("\n");

        for(i=0;i<3;i++)

 

        {

            printf("%d ",matriz[i][1]); 

        }

 

        printf("\n");

        for(i=0;i<3;i++)

        

        {

            printf("%d ",matriz[i][0]);

        }

    return 0; 

}

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...