Ir para conteúdo

POWERED BY:

Arquivado

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

LuccasRamos

[Resolvido] achar posição na matriz

Recommended Posts

Galera estou começando e tals e queria saber como que eu localizo a posição de um determinado número em uma matriz.

o que eu fiz . . .

 

#include <stdio.h>

#include <stdlib.h>

#define M 10

int main()

{

int vet[M];

int i,num_x;

 

for(i=0; i<M; i++)

{

vet=i+1;

printf(" %d,",vet);

}

 

printf("\n");

 

printf("\nEntre com um numero");

scanf("%d",&num_x);

 

if(vet = num_x)

{

printf("%d",vet);

}

 

else

{

printf("o numero não existe no vetor");

}

 

getchar();

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

LuccasRamos,

 

Sua lógica só não está correta por um detalhe:

if(vet[i] = num_x)

Lembre-se que em C o operador = é um operador de atribuição e não comparação.

Para comparar valores você deve utilizar o operador ==.

Segue um link com as devidas explicações sobre os operadores em C:

http://www.mspc.eng.br/info/cpp_oper_10.shtml

 

Dica: Quando postar códigos utilize a TAG CODE, assim irá facilitar a leitura e entendimento daqueles ques estão dispostos a ajudá-lo.

 

Beraldo,

 

nsse seu exmplo, a variável i é o índice do vetor. pelo que entendi, é esse o valor que você quer buscar

Não é o valor de i que ele está procurando.

E sim o valor armazenado na posição i do vetor.

 

Espero ter ajudado, FLW! :grin:

Compartilhar este post


Link para o post
Compartilhar em outros sites

LuccasRamos,

 

Sua lógica só não está correta por um detalhe:

if(vet[i] = num_x)

Lembre-se que em C o operador = é um operador de atribuição e não comparação.

Para comparar valores você deve utilizar o operador ==.

Segue um link com as devidas explicações sobre os operadores em C:

http://www.mspc.eng.br/info/cpp_oper_10.shtml

 

Dica: Quando postar códigos utilize a TAG CODE, assim irá facilitar a leitura e entendimento daqueles ques estão dispostos a ajudá-lo.

 

 

Não é o valor de i que ele está procurando.

E sim o valor armazenado na posição i do vetor.

 

Espero ter ajudado, FLW! :grin:

 

poxa manoo ajudou bastante msm , havia me esquecido desse detalhe , porem ele vai direto pro else , os valores a serem comparados estão certos ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

LuccasRamos,

 

Sim, a sua comparação de valores está correta.

O que não está correto é que, perceba, você compara apenas uma posição do vetor fazendo vet na posição i. E veja também que a variável i está atribuído com o ultimo valor incrementado no for logo atrás no código. O que faz com que o único valor comparado seja a última posição do vetor.

O que você deve fazer é colocar esse if da comparação dentro de um laço de repetição.

 

Exemplo:

while(i > 0) {
if(vet[i] == num_x){
	printf("%d",vet[i]); 
	break;
}
--i;	// Estou considerando que o valor de i não foi alterado desde a execução do for
}
if(i == 0)
       // Se chegou aqui com i == 0, é porque não encontrou nenhum valor igual ao comparado
printf("o numero não existe no vetor");

 

Neste pseudo código é feita a varredura do vetor de trás para a frente.

 

Espero ter ajudado, FLW! :grin:

Compartilhar este post


Link para o post
Compartilhar em outros sites

LuccasRamos,

 

Sim, a sua comparação de valores está correta.

O que não está correto é que, perceba, você compara apenas uma posição do vetor fazendo vet na posição i. E veja também que a variável i está atribuído com o ultimo valor incrementado no for logo atrás no código. O que faz com que o único valor comparado seja a última posição do vetor.

O que você deve fazer é colocar esse if da comparação dentro de um laço de repetição.

 

Exemplo:

while(i > 0) {
if(vet[i] == num_x){
	printf("%d",vet[i]); 
	break;
}
--i;	// Estou considerando que o valor de i não foi alterado desde a execução do for
}
if(i == 0)
       // Se chegou aqui com i == 0, é porque não encontrou nenhum valor igual ao comparado
printf("o numero não existe no vetor");

 

Neste pseudo código é feita a varredura do vetor de trás para a frente.

 

Espero ter ajudado, FLW! :grin:

 

Poo manoo , me ajudou bastante obrigado , e eu tb tive que criar mais um [for] que era para percorrer a matriz se não continuava dando pau =/

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.