Ir ao conteúdo

Posts recomendados

Postado
/*4. Leia uma matriz 3 x 3 e faça uma troca entre as diagonais principal e secundária. Escreva-a ao final.
*/

#include <stdio.h>

int main()
{
    int mat[3][3]={1,2,2,1,1,3,2,2,1}, aux;

    printf("matriz original\n");

    for (int i = 0; i < 3; ++i)
    {
        for (int j = 0; j < 3; ++j)
        {
            printf("%d ", mat[i][j]);
        }
        printf("\n");
    }

    printf("\n");

    for (int i = 0, j = 0, k = 2;;)
    {
        aux = mat[i][j];
        mat[i][j] = mat[i][k];
        mat[i][k] = aux;

        aux = mat[k][j];
        mat[k][j] = mat[k][k];
        mat[k][k] = aux;

        break;
    }

   /* aux = mat[0][0];
    mat[0][0] = mat[0][2];
    mat[0][2] = aux;

    aux = mat[2][0];
    mat[2][0] = mat[2][2];
    mat[2][2] = aux;
    */



    printf("nova matriz\n");
    
    printf("\n");

    for (int i = 0; i < 3; ++i)
    {
        for (int j = 0; j < 3; ++j)
        {
            printf("%d ", mat[i][j]);
        }
        printf("\n");
    }

    return 0;
}


// 1 2 2
// 6 1 3
// 2 4 1

 alguém poe fazer um algoritmo para esse problema e me explicar a logica :

 Leia uma matriz 3 x 3 e faça uma troca entre as diagonais principal e secundária. Escreva-a ao final

3 minutos atrás, Edinei Almeida disse:
/*4. Leia uma matriz 3 x 3 e faça uma troca entre as diagonais principal e secundária. Escreva-a ao final.
*/

#include <stdio.h>

int main()
{
    int mat[3][3]={1,2,2,1,1,3,2,2,1}, aux;

    printf("matriz original\n");

    for (int i = 0; i < 3; ++i)
    {
        for (int j = 0; j < 3; ++j)
        {
            printf("%d ", mat[i][j]);
        }
        printf("\n");
    }

    printf("\n");

    for (int i = 0, j = 0, k = 2;;)
    {
        aux = mat[i][j];
        mat[i][j] = mat[i][k];
        mat[i][k] = aux;

        aux = mat[k][j];
        mat[k][j] = mat[k][k];
        mat[k][k] = aux;

        break;
    }

   /* aux = mat[0][0];
    mat[0][0] = mat[0][2];
    mat[0][2] = aux;

    aux = mat[2][0];
    mat[2][0] = mat[2][2];
    mat[2][2] = aux;
    */



    printf("nova matriz\n");
    
    printf("\n");

    for (int i = 0; i < 3; ++i)
    {
        for (int j = 0; j < 3; ++j)
        {
            printf("%d ", mat[i][j]);
        }
        printf("\n");
    }

    return 0;
}


// 1 2 2
// 6 1 3
// 2 4 1

 alguém poe fazer um algoritmo para esse problema e me explicar a logica :

 Leia uma matriz 3 x 3 e faça uma troca entre as diagonais principal e secundária. Escreva-a ao final

@devair1010

  • Amei 1
Postado
1 hora atrás, Edinei Almeida disse:

alguém poe fazer um algoritmo para esse problema e me explicar a logica

 

Pensou nisso?

 

A matriz tem 9 elementos. Desses 3 estão na diagonal primária, 3 na secundária e um está nas duas, já que claro elas se cruzam.

 

Então a lógica é trocar os 4 elementos de lugar, um por vez.

  • Curtir 1
Postado

@Edinei Almeida    como bem disse  @arfneto   ,   o lógica é trocar apenas os números  localizados nas diagonais principal e secundária  como pede o enunciado ,  e você pode fazer isso de várias formas ,   e como serão apenas 4 números que serão trocados um pelo outro , 

 

matriz.thumb.JPG.abc252dbd4c39a21df274977674ebf9b.JPG

 

então nem precisa de usar loop  como você colocou no seu código ,  mas se fossem muitas linhas e colunas , se tornaria bem difícil , e aí então você poderia  usar um loop dessa forma onde uma variável controla as linhas e outra controla as colunas  , ... , ,,, .

 

for ( i=0,j=2; i<3; j--,i++ ) /// para i comeCando em zero e j comeCando em 2
{                             /// enquanto i menor que 3
  aux       = mat[i][i];      /// decrementa j  e incrementa i
  mat[i][i] = mat[i][j];      /// faz as trocas
  mat[i][j] =       aux;
}

 

ou  dessa forma ,  mais simples  usando Apenas Uma vaRiável ; :   ,,  .., .. ,

 

for ( i=0; i<3; i++ )
{
  aux         = mat[i][  i];
  mat[i][  i] = mat[i][2-i];
  mat[i][2-i] =         aux;
}

 

#include <stdio.h>

int main()
{
  int mat[3][3] = { 1,2,2,1,1,3,2,2,1 };
  int aux = 0;
  int i   = 0;
  int j   = 0;
  printf("matriz original\n");
  for ( i = 0; i < 3; i++)
  {
    for ( j = 0; j < 3; j++)
      printf("%3d ", mat[i][j]);
    printf("\n");
  }
  /*
  for ( i=0,j=2; i<3; j--,i++ ) /// para i comeCando em zero e j comeCando em 2
  {                             /// enquanto i menor que 3
    aux       = mat[i][i];      /// decrementa j  e incrementa i
    mat[i][i] = mat[i][j];      /// faz as trocas
    mat[i][j] =       aux;
  }
  */
  aux       = mat[0][0];
  mat[0][0] = mat[0][2];
  mat[0][2] =       aux;
  aux       = mat[2][0];
  mat[2][0] = mat[2][2];
  mat[2][2] =       aux;
/* *
   * for ( i=0; i<3; i++ )
   * {
   *   aux         = mat[i][  i];
   *   mat[i][  i] = mat[i][2-i];
   *   mat[i][2-i] =         aux;
   * }
** */

  printf("nova matriz\n\n");
  for ( i = 0; i < 3; i++ )
  {
    for ( j = 0; j < 3; j++ )
      printf("%3d ", mat[i][j] );
    printf("\n");
  }
  return 0;
}

 

  • Curtir 1

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...