Fórum Ubuntu Linux - PT
13 de Março de 2010, 10:06 *
Olá, Visitante. Faça o login ou registre-se.
Perdeu o seu e-mail de ativação?

Login com nome de usuário, senha e duração da sessão
Notícias: Atualização no plugin de busca para Firefox e Internet Explorer.
 
   Home   Ajuda Regras Pesquisa Login Registre-se  
Anúncios
Páginas: [1]   Ir para o fundo
  Imprimir  
Autor Tópico: A função scanf não aceita double![RESOLVIDO]  (Lida 2363 vezes)
ana182
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 30


« em: 27 de Maio de 2008, 02:37 »

Olá!
Como ponho a função scanf a aceitar doubles? Simplesmente não lê quer eu use %e, %f ou %g. Se testo o valor da variável que deveria receber o valor da scanf, esta retorna-me um valor absurdo. Julgo não haver problemas de sintaxe do código porque se substituir o double por float na inicialização da variável que recebe a scanf, tudo corre bem. O que fazer?

Ana Luísa

P.S. Trata-se de código C.
« Última modificação: 27 de Maio de 2008, 17:54 por ana182 » Registrado
joas
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 27



« Responder #1 em: 27 de Maio de 2008, 02:52 »

posta o codigo ai...
Registrado
ana182
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 30


« Responder #2 em: 27 de Maio de 2008, 12:22 »

Tão simples quanto isto:

#include <stdio.h>

main()
{
  double y;
  printf("nº:");
  scanf("%f",&y);
  printf("%f\n",y);
}

Compilo e não dá erro. Quando introduzo, por exemplo, o nº 2 ele retorna-me 0. :S

Ana Luísa
Registrado
IgorM0L
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 487


Lokos está morto. Vamos ressucitá-lo?


WWW
« Responder #3 em: 27 de Maio de 2008, 14:56 »

  Seu erro eh extremamenet simples.
 
  Caso estivesse usando o tipo float, era somente voce fazer do modo que voce esta fazendo, usando %f.
  Acontece que o tipo double eh um tipo superior ao float, tendo para ele um tipo especial na chamada scanf ou mesmo printf. Use para ele o simbolo %lf;

 Eis o codigo correto:
Código:
#include <stdio.h>

main()
{
  double y;
  printf("nº:");
  scanf("%lf",&y);
  printf("%lf\n",y);
}

  Execuçao:
Código:
igormol@desktop:~/Desktop$ gcc -o test test.c
igormol@desktop:~/Desktop$ ./test
nº:4
4.000000

  PS: Ana Luísa, participe mais do forum, para dar um tom mais feminino, aqui so tem homem!!!
« Última modificação: 27 de Maio de 2008, 14:59 por IgorM0L » Registrado

ana182
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 30


« Responder #4 em: 27 de Maio de 2008, 17:47 »

Olá!
Pois claro! Agora tudo funciona bem. Tenho um livro de programação um pouco antigo e eles não fazem muita referência aos doubles, por razões óbvias... e também sou novata em programação.
Obrigada!

Ana Luísa

P.S. Ok!, vou estar mais atenta ao forum. Piscada
Registrado
Páginas: [1]   Ir para o topo
  Imprimir  
 
Ir para:  

Powered by MySQL Powered by PHP Tema desenvolvido por FaBMak e n3t0
Powered by SMF 1.1.11 | SMF © 2006-2009, Simple Machines LLC
© 2010 Canonical Ltd. Ubuntu e Canonical são marcas registradas da Canonical Ltd.
XHTML 1.0 válido! CSS válido!