Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

martinhocosta

comparar

Mensagens Recomendadas

martinhocosta

boas!!

um utilizador introduz um valor de 8 dígitos!

e depois já a guardado num vector 4 valores aleatórios !

e eu gostava de saber qual e o valor dos aleatórios que esta mais próximo???

por exemplo:

utilizador:12345678

dados no vector:10000000

                              12349877

e depois tem de aparecer: 12349877

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoaoNascimento

? Tens que te explicar melhor :x

É assim o utilizador insere: 12

E tem de ver qual é a posição do valor do vector mais proximo...

O codigo é o seguinte:

int loc(int *a, int num)//Função recebe o vector com as cordenadas das estações de serviço
{
int x1, x2[N], y1, y2[N], c,  i, pos=0; //variaveis do tipo inteiro
float  min,d[N];//variaveis do tipo string

for (i=0;i<N;i++)
{
x1=*a/10000;//calcula o x
y1=*a%10000;//calcula o y
}

printf("Insira a coordenada da sua posicao actual: ");
scanf("%d",&c);//le a coordenada da posição actual

if (c>99999999 || c<0)//VALIDA SE A COORDENADA TEM MAIS DE 8 DIGITOS
{
	while (c>99999999 || c<0)//REPETE O SEGUINTE BLOCO DE CODIGO (LN 79-81)
	{
		printf("\nA coordenada inserida e invalida:\n ");
		printf("Volte a inserir a coordenada correspondente:\n ");
		scanf("%d",&c);
	}
}
for (i=0;i<N;i++) //Repete
{
	x2[i]=c/10000;//Armazena a longitude da coordenada inserida
	y2[i]=c%10000;//Armazena a latitude da coordenada inserida
	d[i]=sqrt(pow((x2[i]-x1),2)+(pow((y2[i]-y1),2)));//Armazena no vector o calculo da distancia
}
min=d[0];//O minimo é a primeira posição do vector
for (i=0; i<N; i++)//Repete
{
	if (d[i]<min)//Se a posição i for menor que o minimo:
	{
		min=d[i];//O minimo é a posição i do vector d(istancias)
		pos=i;//variavel auxiliar pos serve para armazenar o numero de i para saber a posição do vector coordenadas
	}
	else 
	{
		min=min;
	}
}
	printf("A estacao mais proxima é: %d\n",a[pos]);//Mostra no ecrá o registo do vector onde a posição é a minima

}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Localhost

mribeiro: O que tens de fazer basicamente é checar a cada posição do array a diferença entre o valor que o utilizador digita e o valor que estás a percorrer no momento.

Por exemplo, se o utilizador digitar 13 e tu tiveres um array com as posições {7,9,10} o que fazes é a cada posição do array calcular a diferença, por exemplo: 7 - 13 = -6; 9 - 13 = -4; 10 - 13 = -3; agora checas o modulo de cada um e vês qual é o menor valor, o que for menor é o valor que se encontra mais próximo do valor introduzido pelo utilizador.

Resumindo:

→ Percorrer array (geralmente com um loop);

→ Dentro do loop calcular a diferença entre a posição e o valor introduzido;

→ Calcular o módulo do valor resultante;

→ Verificar se é menor que a variável que contém o valor que contém o menor até ao momento;

→ Se for afectas essa variável, se não for, continuas, aka não fazer nada;


here since 2009

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mribeiro

mribeiro: O que tens de fazer basicamente é checar a cada posição do array a diferença entre o valor que o utilizador digita e o valor que estás a percorrer no momento.

Por exemplo, se o utilizador digitar 13 e tu tiveres um array com as posições {7,9,10} o que fazes é a cada posição do array calcular a diferença, por exemplo: 7 - 13 = -6; 9 - 13 = -4; 10 - 13 = -3; agora checas o modulo de cada um e vês qual é o menor valor, o que for menor é o valor que se encontra mais próximo do valor introduzido pelo utilizador.

Resumindo:

→ Percorrer array (geralmente com um loop);

→ Dentro do loop calcular a diferença entre a posição e o valor introduzido;

→ Calcular o módulo do valor resultante;

→ Verificar se é menor que a variável que contém o valor que contém o menor até ao momento;

→ Se for afectas essa variável, se não for, continuas, aka não fazer nada;

Haa.. ja entendi :thumbsup:

Sim, subscrevo a tua solução :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.