1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

float linguagem C

Discussão em 'Programação' iniciada por Marrafeiro, 11 de Novembro de 2018. (Respostas: 6; Visualizações: 263)

  1. Marrafeiro

    Marrafeiro Power Member

    Boa noite,

    Estou aqui com uma duvida, quando pedem ao utilizador para inserir um valor, como por exemplo dinheiro.
    faço o pedido como float e tenho o setlocale como portugues (sendo assim obrigatorio o uso da virgula), se o utilizador mesmo assim insere um ponto o programa crasha. Como posso dar a volta a isso?
     
  2. wowmiguelfcp

    wowmiguelfcp Power Member

    Ora boas :)

    Alguns pontos que acho que devo referir:

    - No sistema internacional, o ponto '.' separa a parte inteira da parte decimal, enquanto que a vírgula ',' separa de 3 em 3 casas inteiras. Devias habituar-te a isto, mas isso é apenas a minha recomendação.

    - Uma possível solução para isso seria usares excepções, mas no entanto visto que ainda deves estar nos inícios não te recomendo ires por aí

    Por isso, na minha opinião, o que deverias fazer era trabalhar mesmo com o '.'

    Cumprimentos
     
  3. Meados

    Meados Power Member

    @wowmiguelfcp

    Excepções em C?

    @Marrafeiro

    Podes tentar ler primeiro o input para uma string, depois tentas fazer o parsing da string para um float como esta pessoa sugere:
    https://stackoverflow.com/a/78565

    Verifica se tens algum erro consultando a variável errno, se tiveres pedes ao utilizador para reintroduzir o valor, caso contrário podes usar o float lido.
     
  4. wowmiguelfcp

    wowmiguelfcp Power Member

    C++
     
  5. Meados

    Meados Power Member

  6. wowmiguelfcp

    wowmiguelfcp Power Member

    Yep falha minha, não li bem o título do tópico. Pensei que era C/C++.
     
  7. Marrafeiro

    Marrafeiro Power Member

    Penso que toda a gente percebeu mal a pergunta.
    Eu sei que o sistema internacional é usado o ‘.’ E que em Portugal é a ‘,’. Mas como toda a gente sabe o utilizar pode muito bem inserir um ‘.’ Em vez de uma virgula no programa e crashar aquilo tudo. Mas ja resolvi o problema.

    Resolvi da seguinte forma, caso alguem tenha mais essa duvida.

    While(scanf(“%f”,&variavel)!=1){
    fflush(stdin) }

    E ja esta resolvido, se for inserido um ‘.’ Volta a pedir um valor.

    Nao sou bem bem iniciado, ja nao programo é a bastante tempo e agora basicamente estou a recordar
     

Partilhar esta Página