Ir ao conteúdo
  • Cadastre-se

C como trocar linha por coluna em c


Posts recomendados

gente alguém pode ler  o meu codigo criei essa solução mas acho que não e a correta, alguém pode ler o meu codigo e corrigir e me explicar a logica para resolver o problema.

essa e a pergunta do exercício:

 

/*2. Leia uma matriz 4 x 4 e troque os valores da 1ª linha pelos da 4ª coluna, vice-e-versa. Escrever ao
final a matriz obtida.
*/

#include <stdio.h>

int main()
{

    int mat[4][4]={1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4}, aux;

    printf("matriz original\n");

    for (int i = 0; i < 4; ++i)
    {
        for (int j = 0; j < 4; ++j)
        {
            printf("%d ", mat[i][j]);
        }
        printf("\n");
    }
    printf("\n");
    
    for (int i = 0;;)
    {
        for (int j = 3;;)
        {
            for (int k = 0, l = 3;k < 4 && l >= 0; k++, l--)
            {
                aux = mat[i][k];
                mat[i][k] = mat[l][j];
                mat[l][j] = aux;
            }
            break;
        }
        break;
    }
    
    printf("nova matriz\n");

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


    return 0;
}

  Leia uma matriz 4 x 4 e troque os valores da 1ª linha pelos da 4ª coluna, vice-e-versa. Escrever ao
final a matriz obtida.

  • Amei 1
Link para o comentário
Compartilhar em outros sites

Em téoria você teria que ter variáveis com as linhas e \ ou colunas originals e os novos valores. Salva os valores originais em variáveis, pega os valores da linha 1 e coluna 4 e vai substituindo os respectivos valores:

Ex ALinha = Antiga Linha | NLinha= Nova Linha

 

ALinha1_1=A

ALinha1_2=B

ALinha1_3=C

ALinha1_4=D

 

ALinha2_1=E

ALinha2_2=F

ALinha2_3=G

ALinha2_4=H

 

ALinha3_1=I

ALinha3_2=J

ALinha3_3=K

ALinha3_4=L

 

ALinha4_1=M

ALinha4_2=N

ALinha4_3=O

ALinha4_4=P

 

Aqui está salvando os valores da coluna 4 em novas variáveis:

NLinha1_1=ALinha1_4 

NLinha1_2=ALinha2_4

NLinha1_3=ALinha3_4

NLinha1_4=ALinha4_4

 

Aqui está salvando os valores da linha 1 em novas variáveis:

NLinha1_4=ALinha1_1

NLinha2_4=ALinha1_2

NLinha3_4=ALinha1_3

NLinha4_4=ALinha1_4

 

O restante dos valores que não são alterados você deixa igual por exemplo:

NLinha2_1=ALinha2_1

NLinha2_2=ALinha2_2

NLinha2_3=ALinha3_3

 

Ai é só criar uma nova matriz com as novas variáveis...

 

image.png.80d5d7e5f2cdb1a2f53030ba4171d05a.png

  • Amei 1
Link para o comentário
Compartilhar em outros sites

@Edinei Almeida @Edinei Almeida    apesar de seu código não estar compilando pois você não criou a variável  "l"   ,   e corrigindo isso funciona ,    porém  tem uma pegadinha aí , por que não se pode colocar esses quatro números da linha na coluna , pois o último número da linha é o mesmo primeiro número  da coluna ,  e sendo assim , creio que seria melhor pegar do segundo número da coluna em diante e seu código mais simplificado poderia ser assim  :

/*2. Leia uma matriz 4 x 4 e troque os valores da 1ª linha pelos da 4ª coluna, vice-e-versa. Escrever ao
final a matriz obtida.
*/
#include <stdio.h>
int main()
{
  int mat[4][4] = {
    1,2,3,4,
    1,2,3,4,
    1,2,3,4,
    1,2,3,4 };
  int aux = 0;
  int i   = 0;
  int j   = 0;
  int l   = 0;
  int k   = 0;
  printf("matriz original\n");
  for ( i = 0; i < 4; ++i)
  {
    for ( j = 0; j < 4; ++j)
    {
      printf("%d ", mat[i][j]);
    }
    printf("\n");
  }
  printf("\n");
  for(i=0; i<3; i++)
  {
    aux       = mat[0][i];
    mat[0][i] = mat[i][3];
    mat[i][3] =       aux;
  }
  printf("nova matriz\n");
  for ( i = 0; i < 4; ++i)
  {
    for ( j = 0; j < 4; ++j)
    {
      printf("%d ", mat[i][j]);
    }
    printf("\n");
  }
  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...