Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

baxinha_RS

Algoritimo q leia uma matriz 2x8, e armazene os valores em uma 8x2.

Recommended Posts

Fiz da seguinte forma, e esta compilando, porem não tenho certeza se esta certo, aprendi matriz hj....

 

CODE
#include<stdio.h>

 

void main()

{

int mat[2][8], m[8][2], l, c;

 

for(l=0;l<2;l++)

{

for(c=0;c<8;c++)

{

printf("Digite um valor para a posicao %d, %d da matriz: ",l,c);

scanf("%d",&mat[l][c]);

}

}

 

for(c=0;c<8;c++)

{ <div class='codetop'>CODE

<div class='codemain' style='height:300px;white-space:pre;overflow-y:auto'>#include<stdio.h>

 

void main()

{

int mat[2][8], m[8][2], l, c;

 

for(l=0;l<2;l++)

{

for(c=0;c<8;c++)

{

printf("Digite um valor para a posicao %d, %d da matriz: ",l,c);

scanf("%d",&mat[l][c]);

}

}

 

for(c=0;c<8;c++)

{

for(l=0;l<2;l++)

{

m[l][c]=mat[l][c];

printf(" %d ",m[l][c]);

}

printf("\n");

}

 

getch();

}</div>

for(l=0;l<2;l++)

{

m[l][c]=mat[l][c];

printf(" %d ",m[l][c]);

}

printf("\n");

}

 

getch();

}</div>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora baguçou o código, vou postar a parte que está com erro:

 

for(c=0;c<8;c++)
{
   for(l=0;l<2;l++)
   {
	  m[l][c]=mat[l][c];
	  printf(" %d ",m[l][c]);
   }
   printf("\n");
}

Voce leu corretamente o vetor, mas nessa parte apenas inverteu a ordem das coisas.

Esse vetor será percorrido coluna a coluna e o vetor resultante será igual ao vetor lido.

 

Se voce fizer isso:

 

m[c][l]=mat[l][c];

Irá funcionar.

 

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites
CODE

for(c=0;c<8;c++)
{
for(l=0;l<2;l++)
{
m[c][l]=mat[l][c];
printf(" %d ",m[l][c]);
}
printf("\n");
}


Seria isto né??

Bom, fiz o teste, e da erro na ultima volta, mas de qualquer dorma muito obrigado! :D :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para testar voce pode imprimir em um outro loop.

 

// atribuicao a nova matriz
for(c=0;c<8;c++)
{
   for(l=0;l<2;l++)
   {
	   m[c][l]=mat[l][c];
	  //printf(" %d ",m[l][c]);
   }
   //printf("\n");
}

// verifica se os dados estao corretos
for(l=0;l<2;l++)
{
   for(c=0;c<8;c++)
	  printf(" %d ",m[l][c]);
   printf("\n");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

fazendo desta forma, e digitando numeros de 1 a 16, a matris fica da seguinte forma:

 

1 2

9 10

2 3

10 11

3 4

11 12

4 5

12 13

 

Ou seja, não parece estar correto...

 

mas mesmo assim agradeço muito

Compartilhar este post


Link para o post
Compartilhar em outros sites

Preste atenção aqui:

printf(" %d ",m[l][c]);

 

Você tem que inverter a ordem dos índices aqui também!

 

Isso seria para resolver o problema de dar erro na última repetição do loop acredito!

Compartilhar este post


Link para o post
Compartilhar em outros sites

meu codigo ta assim:

 

 

CODE
for(c=0;c<8;c++)

{

for(l=0;l<2;l++)

{

m[l][c]=mat[l][c];

printf(" %d ",m[l][c]);

}

printf("\n");

}

me falaram pra colocar:

 

CODE
for(c=0;c<8;c++)

{

for(l=0;l<2;l++)

{

m[c][l]=mat[l][c];

printf(" %d ",m[l][c]);

}

printf("\n");

}

e no print fica:

 

printf(" %d ",m[l][c]); ou printf(" %d ",m[c][l]);?????????

 

ta dando nó no meu cerebro!! http://forum.imasters.com.br/public/style_emoticons/default/blush.gif http://forum.imasters.com.br/public/style_emoticons/default/blush.gif http://forum.imasters.com.br/public/style_emoticons/default/blush.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

for(l=0;l<2;l++)
{
   for(c=0;c<8;c++)
	  printf(" %d ",m[l][c]);
   printf("\n");
}

Mas tem o buzu que a matriz m tem 8 linhas e 2 colunas! O loop correto seria:

 

for(l=0;l<8;l++)
{
   for(c=0;c<2;c++)
	  printf(" %d ",m[l][c]);
   printf("\n");
}

 

O buzu é o seguinte baixinha:

Tem duas matrizes: a mat, com 2 linhas e 8 colunas, e a m, que tem 8 linhas e 2 colunas.

 

Quando você vai passar as coisas da matriz mat para a m, você tem que inverter a contagem de linhas e colunas da mat:

m[c][l] = mat[l][c];

 

Nota que nesses vetores bidimensionais, o primeiro índice seria a linha e o segundo a coluna.

 

Na hora de imprimir os vetores, também tem que parar para pensar nas linhas e colunas:

Para mat, c vai até <8 e l vai até <2.

Para m, c vai até<2 e l vai até <8.

Sacou a moral? A partir daí é só alterar os bagulhos ali pra dar certinho.

Sugiro que dê nomes mais explicativos aos vetores que "mat" e "m", já que fica mais fácil confundí-los com esses dois nomes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem razão.

 

O código completo seria:

 

// atribui a matriz m
for(c=0;c<8;c++)
{
   for(l=0;l<2;l++)
	  m[c][l]=mat[l][c];
}

// imprime matriz m 8x2
for(l=0;l<8;l++)
{
   for(c=0;c<2;c++)
	  printf(" %d ",m[l][c]);
   printf("\n");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não desista,

o que observou de errado depois das modificações?

 

Bom, muito obriogado... ja teste de varias forma, mas não ta rolando, vou ver com meu professor...

 

Vlw!!! http://forum.imasters.com.br/public/style_emoticons/default/grin.gif http://forum.imasters.com.br/public/style_emoticons/default/grin.gif http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

da erro na resposta, só aparece a metade dos numeros digitados, isso quando não da estoro de variavel, tipo aparece um numero 224455222... da minha forma, do jeito q eu fiz ta funcionando, o q é linha vira coluna e o q é coluna vira linha...

 

só queria confirmar se estava certo o algoritimo em si....

 

Agradeço a todos pela ajuda!!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz um teste e funcionou certinho,

o programa completo seria:

 

#include <stdio.h>
#include <stdlib.h>

main()
{
   int mat[2][8], m[8][2], l, c;

   for(l=0;l<2;l++)
   {
	  for(c=0;c<8;c++)
	  {
		 printf("Digite um valor para a posicao %d, %d da matriz: ",l,c);
		 scanf("%d",&mat[l][c]);
	  }
   } 

   // atribui a matriz m
   for(c=0;c<8;c++)
   {
	  for(l=0;l<2;l++)
		 m[c][l]=mat[l][c];
   }

   // imprime matriz m 8x2
   for(l=0;l<8;l++)
   {
	  for(c=0;c<2;c++)
		 printf(" %d ",m[l][c]);
	  printf("\n");
   }
   system("pause");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.