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

gocho

[Resolvido]Ajuda - C

Mensagens Recomendadas

gocho

Viva.

Alguém consegue explicar o output do seguinte código? Não percebo porque é que os valores "depois" são diferentes de os valores "antes"  .... (  estes pormenores dão cabo de mim )

Output:

[table]

[td]Antes

utmx: 559875

utmy: 4456225

Depois

utmx: 560585

utmy: 4456687

[/td]

[/table]

Codigo:

#include <stdio.h>

int main(){


int iigni, jigni;
int utmx, utmy;	
double x, y;
float dx, dy;

dx=dy=50.0;

utmx=559875;
utmy=4456225;	

x=544700;
y=4447250;

iigni = ((utmx - .5 * dx) - x) / dx + 2;
jigni = ((utmy - .5 * dy) - y) / dy + 2;

printf("Antes\n");	
printf("utmx: %d\n", utmx);
printf("utmy: %d\n", utmy);	

utmx = ( iigni*(dx+2) ) + x+ (.5*dx) ;
utmy = ( jigni*(dy+2) ) + y+ (.5*dy) ;

printf("Depois\n");
printf("utmx: %d\n", utmx);
printf("utmy: %d\n", utmy);

}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
TheDark

Precisão. Ao declarares iigni e jigni como inteiros, e ao colocares lá os resultados das operações, estás a deitar fora a parte à direita da vírgula.


Desaparecido.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
gocho

Mas mesmo declarando todas as variáveis como double, as diferenças mantêm-se:

Antes
utmx: 559875.000000
utmy: 4456225.000000
Depois
utmx: 560585.000000
utmy: 4456687.000000

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
gocho

Claro que as diferenças se mantêm, a formula de cálculo do utmx e utmy está mal!

Assim é que está correcto:

utmx = ( (iigni-2)*(dx) ) + (x + .5*dx) ;
utmy = ( (jigni-2)*(dy) ) + (y + .5*dy) ;

:-[

Obrigado pela ajuda.

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.