Ir para conteúdo

POWERED BY:

Arquivado

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

Gustavo Rodrigues Torre

Função

Recommended Posts

Faça um procedimento que receba uma matriz A(10,10), por parâmetro, e realize as seguintes trocas:

 

linha 2 com a linha 8;

coluna 4 com a coluna 10;

diagonal principal com a secundária;

linha 5 com a coluna 10;

 

O procedimento deve retornar a matriz alterada.

 

Não sei como fazer a alteração da diagonal principal com a secundária

 

E trocar as linhas e as colunas

 

Como eu faria essas trocas?

 

Eis uma tentativa frustada

 

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

void altera_matriz(); //Definição da função monta matriz
int matA[10][10],matB[10][10];
int i,j;
int main()
{
  system("color 1B"); 
	{ system("cls");
	 altera_matriz(); 
  }
  printf("\n\n\n");	 
  system("pause");
  return 0;
}
  
void altera_matriz()
{
	 for(i=0; i<10; i++) 
	   for(j=0; j<10; j++) {   
	   printf("Entre com o elemento A[%d %d]: ",i+1,j+1);
	   scanf("%d",&matA[i][j]);
	   matA[1][0] = matA[7][0];
	   matA[0][3] =  matA[0][9];
	   matA[4][0] =  matA[0][9];
	   }
				 
printf("\nMatriz  A  eh: \n ");
			for(i=0; i<10; i++) { 
			  for(j=0; j<10; j++)
			printf("%d\t",matA[i][j]);
			printf("\n");
			 }	 
			 
printf("\nMatriz  A alterada  eh: \n ");
			for(i=0; i<10; i++)	
			 { for(j=0; j<10; j++)
			printf("%d\t",matA[i][j]);
			printf("\n");
			 }				  
return;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha sempre para trocas entre dois valores utilize uma variavel auxiliar para naum perder valores!

 

bom primeiro: você sabe achar a diagonal principal e a secundaria?

 

[]'s

 

---Título alterado---

 

[Ajuda] Função http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Função

Compartilhar este post


Link para o post
Compartilhar em outros sites

entaum faça use a lógica normal de troca de valores e ve c resolve!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai q esta o problema na hora das trocas

 

Mais uma observação

 

Eu vou precisar criar uma segunda matriz para mostrar a matriz A alterada?

 

1) Criei 3 variaveis auxiliares para trocar os valores

2) Usei ifs para achar a linha e a coluna da troca

 

Só que o programa ñ quer trocar

 

Os pontos indicam o resto do programa

 

void altera_matriz(); //Definição da função monta matriz
int matA[10][10],matB[10][10];
int i,j,aux,aux2,aux3,troca;
.
.
.

 if (i==1) {
	   aux = matA[1][0];
	   matA[7][0] = aux; }
		   if (j==3) {
			  aux = matA[0][3];
			  matA[0][9] = aux; }
				 if (i==4) {
				 aux = matA[4][0];
				 matA[0][9] = aux; }
				   if (i==j) {
				   aux2 = matA[i][j]; 
				   troca = aux3; }
					  if (i+j==9) {
					  aux3 = matA[i][j]; 
					  troca = aux2;
					  }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho q eu consegui agora

 

Se estiver algum erro poderia informa-lo para mim?

 

 

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

void altera_matriz(); //Definição da função monta matriz
int matA[10][10],matAA[10][10];
int i,j,aux,aux2,aux3,troca;
int main()
{
  system("color 1B"); 
	{ system("cls");
	 altera_matriz(); 
  }
  printf("\n\n\n");	 
  system("pause");
  return 0;
}
  
void altera_matriz()
{
	 for(i=0; i<10; i++) 
	   for(j=0; j<10; j++) {   
	   printf("Entre com o elemento A[%d %d]: ",i+1,j+1);
	   scanf("%d",&matA[i][j]);
	   
	   if (i==1) {
	   aux = matA[1][0];
	   matA[7][0] = aux; 
	   matAA[i][j] = matA[7][0]; }
		   if (j==3) {
			  aux = matA[0][3];
			  matA[0][9] = aux;
			  matAA[i][j] = matA[0][9]; }
				 if (i==4) {
				 aux = matA[4][0];
				 matA[0][9] = aux; 
				 matAA[i][j] = matA[0][9]; }
				   if (i==j) {
				   aux2 = matA[i][j]; 
				   troca = aux3; 
				   matAA[i][j] = troca; }
					  if (i+j==9) {
					  aux3 = matA[i][j]; 
					  troca = aux2;
					  matAA[i][j] = troca; }
}
				 
printf("\nMatriz  A  eh: \n ");
			for(i=0; i<10; i++) { 
			  for(j=0; j<10; j++)
			printf("%d\t",matA[i][j]);
			printf("\n");
			 }	 
			 
printf("\nMatriz  A alterada  eh: \n ");
			for(i=0; i<10; i++)	
			 { for(j=0; j<10; j++)
			printf("%d\t",matAA[i][j]);
			printf("\n");
			 }				  
return;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

você testo, fez teste de mesa??

e qnd a função é void pra q usar o return??

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testei

 

Fiz o teste de mesa.

 

Só que ñ aletera nada

 

E quando altera fica tudo errado

 

Acho q o erro e na hora de trocar as linhas e colunas

 

Poderia me ajudar nesta parte?

 

 

você testo, fez teste de mesa??

e qnd a função é void pra q usar o return??

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu sei q a matriz em C e feita da seguinte maneira

 

Exemplo de matriz 10 x 10

 

0,0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9

1,0 1,1 1,2 1,3 1,4 1,5 1,6 1,7 1,8 1,9

2,0 2,1 2,2 2,3 2,4 2,5 2,6 2,7 2,8 2,9

3,0 3,1 3,2 3,3 3,4 3,5 3,6 3,7 3,8 3,9

4,0 4,1 4,2 4,3 4,4 4,5 4,6 4,7 4,8 4,9

5,0 5,1 5,2 5,3 5,4 5,5 5,6 5,7 5,8 5,9

6,0 6,1 6,2 6,3 6,4 6,5 6,6 6,7 6,8 6,9

7,0 7,1 7,2 7,3 7,4 7,5 7,6 7,7 7,8 7,9

8,0 8,1 8,2 8,3 8,4 8,5 8,6 8,7 8,8 8,9

9,0 9,1 9,2 9,3 9,4 9,5 9,6 9,7 9,8 9,9

 

 

Isto esta certo?

 

linha 2 i=1

linha 8 = 7

coluna 4 j = 3

coluna 10 j = 9

linha 5 i = 4

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz assim:

 

Mais ñ sei como mudar as colunas de lugar

 

E nem a diagonal principal com a secundárias

 

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

void altera_matriz(int matA[10][10], int i, int j); //Definição da função monta matriz

int main() {
int aux[10][10];
int matA[10][10];
int i,j,troca;
  system("color 1B"); 
	{ system("cls");
	 altera_matriz(matA,i,j); 
  }
  printf("\n\n\n");	 
  system("pause");
  return 0;
}
  
void altera_matriz(int matA[10][10], int i, int j)
{
int aux[10][10];
	 for(i=0; i<10; i++) 
	   for(j=0; j<10; j++) {   
	   printf("Entre com o elemento A[%d %d]: ",i+1,j+1);
	   scanf("%d",&matA[i][j]);
	   aux[i][j] = matA[i][j];
}
	 
	  for (i=0;i<10;i++){
	   for (j=0;j<10;j++)
			aux[1][i]= matA[7][i]; //Linha 2 com linha 8
			 } 
	   
   

				 
printf("\nMatriz  A  eh: \n ");
			for(i=0; i<10; i++) { 
			  for(j=0; j<10; j++)
			printf("%d\t",matA[i][j]);
			printf("\n");
			 }	 
			 
printf("\nMatriz  A alterada  eh: \n ");
			for(i=0; i<10; i++)	
			 { for(j=0; j<10; j++)
			printf("%d\t",aux[i][j]);
			printf("\n");
			 }				  
return;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha para você entender bem vamos por partes!

* linha 2 com a linha 8;

for (i=0;i<10;i++) vet[i]	= mat[1][i];
for (i=0;i<10;i++) mat[1][i] = mat[7][i];
for (i=0;i<10;i++) mat[7][i] = vet[i];

 

entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais ou menos

 

você fez 3 for para mudar a linha?

Ou e 1 for só?

 

 

olha para você entender bem vamos por partes!

* linha 2 com a linha 8;

for (i=0;i<10;i++) vet[i]	= mat[1][i];
for (i=0;i<10;i++) mat[1][i] = mat[7][i];
for (i=0;i<10;i++) mat[7][i] = vet[i];

 

entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim usei 3 for's para mudar a linha!

pq um for eu joguei uma linha num vetor auxiliar!

depois eu fiz a troca de uma linha pela outra, depois joguei oq tava no vetor auxiliar na outra linha!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

+ me diga essa matriz aux ja esta com quais valores?

você compilou para ver?

 

[]'s

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.