operador condicional II [RESOLVIDO]

1. operador condicional II [RESOLVIDO]

Luiz Carlos de Moura
lcmoura

(usa Ubuntu)

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



  


2. MELHOR RESPOSTA

Marcos Paulo Ferreira
Daemonio

(usa Slackware)

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]

Luiz Carlos de Moura
lcmoura

(usa Ubuntu)

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!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts