Ir para conteúdo

POWERED BY:

Arquivado

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

forbid

[Resolvido] Programação em C - Matrizes

Recommended Posts

Ler uma matriz D 5 x 5 (considere poderão ser informados valores duplicados). A seguir ler um número X e escreva uma mensagem indicando se o valor de X existe ou NÃO na matriz. Substitua todas as ocorrências de X por 0 (zero) na matriz e escreva a matriz resultante no formato:

 

D = [

 

d11 d12 d13 d14 d15

 

d21 d22 d23 d24 d25

 

d31 d32 d33 d34 d35

 

d41 d42 d43 d44 d45

 

d51 d52 d53 d54 d55

 

]

 

Eu estou conseguindo fazer quase tudo, só não consigo fazer a identificação dos números iguais e consequentemente a troca deles por zero. Alguém tem alguma sugestão? O código está abaixo.

 

 

 

 

 

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

int main()
{
	int m[5][5];
	int i,j;
	
	for (i=0; i<=4; i++)
	for (j=0; j<=4; j++)
	{
		printf("Digite o valor do numero na posicao i=%d | j=%d: ",i,j);
		scanf("%d",&m[i][j]);
	}
	printf("\n");
	
	for (i=0; i<=4; i++)
	for (j=0; j<=4; j++) 
	{
		if(m[i][j]==m[i][j])
		{
				printf("Valores repetidos.\n");
				m[i][j]=0;
		}
	}
	printf("\nD= [\n");
	
	for (i=0; i<=4; i++)
	{
		for (j=0; j<=4; j++)
		{
			printf("%8.2d",m[i][j]);
	}
	
	printf("\n");
}
printf("\n]\n");
  
  system("PAUSE");	
  return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

aqui você esta comparando uma posição da matriz com ela msm?????

for (i=0; i<=4; i++)
for (j=0; j<=4; j++) 
{
if(m[i][j]==m[i][j])
{
printf("Valores repetidos.\n");
m[i][j]=0;
}
}

A seguir ler um número X

faça a leitura do numero.

ai você compara com '==' e se for 'ok', move 0 pra posicao da matriz..

tipo:

 

ler numero;
para i de 0 até 5 faça
	para j de 0 até 5 faça
		se (numero == matriz[i][j]) então
			matriz[i][j] = 0;
		fim_se
	fim_para
fim_para

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde.

Colega, eu não entendi a parte de ler o número X:

 

ler numero;

Poderia explicar melhor? Estou começando em programação..

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

é q eu escrevi em portugues estruturado..

para C ficaria assim:

scanf("%d", &numero);

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigos, eu ainda nao consegui! Tá dizendo que todos números existem e que todos números não existem!

Não sei o que tá errado!

 

O código eu escrevi assim:

 

 

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

int main()
{
	int m[5][5];
	int i,j,x;
	
	for (i=0; i<=4; i++)
	for (j=0; j<=4; j++)
	{
		printf("Digite o valor do numero na posicao i=%d | j=%d: ",i,j);
		scanf("%d",&m[i][j]);
	}
	
	printf ("Digite um numero para sua existencia ser verificada na matriz D: ");
	scanf("%d",&x);
	
	for (i=0; i<=4; i++)
	for (j=0; j<=4; j++)
	{
		if (x==m[i][j]);
		{
						printf("Este numero existe na matriz!");
						m[i][j]=0;
		}
		if (x!=m[i][j])
		printf("Este numero nao existe!");
}

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

  system("PAUSE");	
  return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

if (x==m[j]);

 

Tá vendo o ponto e vírgula ali??

 

Ah.. por isso que o else não tava funcionando!

Mas o programa ainda não está certo... Quando ele pede pra digitar qual valor pra verificar se existe, eu digito algum repetido e ele troca por zero, mas ainda está dizendo pra todos valores que são iguais e não iguais (tá dando todos printf do if e do else)

 

 

Alguma dica pra arrumar isso?

 

 

 

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

int main()
{
	int m[5][5];
	int i,j,x;
	
	for (i=0; i<=4; i++)
	for (j=0; j<=4; j++)
	{
		printf("Digite o valor do numero na posicao i=%d | j=%d: ",i,j);
		scanf("%d",&m[i][j]);
	}
	
	printf ("Digite um numero para sua existencia ser verificada na matriz D: ");
	scanf("%d",&x);
	
	for (i=0; i<=4; i++)
	for (j=0; j<=4; j++)
	{
		if (x==m[i][j])
		{
						printf("Este numero existe na matriz!");
						m[i][j]=0;
		}
		else
		printf("Este numero nao existe!");
	}

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

  system("PAUSE");	
  return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha cara não saquei o que você quis dizer, aqui parece que rodou direitinho, quando o número existe na posição checada aparece que ele existe quando não existe aparece que não existe acho que é isso que você quer mudar certo?

 

Grave em uma nova variável "int existe = 0;"

 

Aí aqui você adiciona:

 

if (x==m[i][j])
		{
						m[i][j]=0;
						existe = 1;
		}

Aí depois você adiciona, fora do loop.

 

if(existe)
{
  printf("Este numero existe na matriz!");
} else
{
  printf("Este numero nao existe!");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha cara não saquei o que você quis dizer, aqui parece que rodou direitinho, quando o número existe na posição checada aparece que ele existe quando não existe aparece que não existe acho que é isso que você quer mudar certo?

 

Grave em uma nova variável "int existe = 0;"

 

Aí aqui você adiciona:

 

if (x==m[i][j])
		{
						m[i][j]=0;
						existe = 1;
		}

Aí depois você adiciona, fora do loop.

 

if(existe)
{
  printf("Este numero existe na matriz!");
} else
{
  printf("Este numero nao existe!");
}

 

Agora sim deu certo... era isso mesmo! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Valeu amigo!

 

Abração!

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.