Pular para o conteúdo

operador condicional II [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. operador condicional II [RESOLVIDO]

Enviado em 31/10/2009 - 08:30h

Pessoal, alguém poderia me dar uma dica de onde pode estar o problema com o programa que listo a seguir?

#include <stdio.h>
#include <math.h>
int main()
{
double db1, db2;
printf("\nDigite dois numeros: ");
scanf("%1f%1f",&db1,&db2);
(!db1 && !db2) ? printf("Indefinido\n") : printf("Arco-tangente de %1f / %1f = %1f", db1,db2,!db2 ? (PI/2) : atan2(db1,db2));
return 0;
}

O programa acima não mostra os valores digitados (mas imprime 0.000000 no lugar de db1 e db2)e dá como resultado a cada vez valores levementes diferentes de pi/2 (1.57)

Tem algum matemático aí que possa me ajudar? Ou é só bug de programação?
Obrigado!

Luiz Moura

Responder tópico

2. Re: operador condicional II [RESOLVIDO]

Melhor resposta

Enviado em 09/11/2009 - 12:59h

bug de programação mesmo.. você está utilizando %<um>f para fazer a leitura de um double com o scanf.. o certo seria %lf (l de linux).

Não sei ao certo, mas com %<um>f o scanf espera um float, entretanto
ele tah lendo para uma variável do tipo double, e é aí que ocorre
a conversão para 0.000000.

[]'s

3. Re: operador condicional II [RESOLVIDO]

Enviado em 14/11/2009 - 07:16h

É isso mesmo!
Agora não me lembro se foi intencional ou distração ter usado 1(um) e não l(ele).
Não sei porque na transcrição não tinha incluído a definição de PI. Com o Dev C++ isso é necessário, mas talvez com o gcc ou o djgpp não seja necessário - é isto mesmo?
Alterei também a string "Arco-tangente de %lf / %lf = %lf", mas rodou sem essa alteração também.
Eis a lista final:

#include <stdio.h>
#include <math.h>
#define PI 3.141593
int main()
{
double db1, db2;
printf("\nDigite dois numeros: ");
scanf("%lf%lf",&db1,&db2);
(!db1 && !db2) ? printf("Indefinido\n") : printf("Arco-tangente de %lf / %lf = %lf", db1,db2,!db2 ? (PI/2) : atan2(db1,db2));
return 0;
}

Realmente o c e o c++ precisam de muita atenção. Muitos erros não são pegos pelos compiladores, são?
Muito obrigado, mas muito obrigado mesmo!

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder