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

Problema com o ciclo WHILE

Discussão em 'Programação' iniciada por fac182, 8 de Novembro de 2008. (Respostas: 10; Visualizações: 946)

  1. ola pessoal sou novo por aqui e tenho um problema...
    estou a tentar resolver um problem em C onde me é pedido que Leia números reais positivos e calcule a soma, deve para ao encontrar o 99.99. o meu problema é que ele nao quer parar no 99.99. para em todos menos no 99.99.

    aqui está o que eu fiz:

    Código:
    #include<stdio.h>
    main()
     
    {
    float v,s=0; //iniciei a variavel soma com valor zero
     
    printf("introduza valor a somar\n");
    scanf("%.2f",&v);
     
    while(v!=99.99){
     
     
    s=s+v;
    printf("outro valor a somar\n");
    scanf("%f",&v);
     
    }
    printf("o resultado é %f\n",s);
    }
    

    alguem me pode explicar o que estou eu a fazer mal???

    obrigado..
     
    Última edição pelo moderador: 8 de Novembro de 2008
  2. Peter V5

    Peter V5 Folding Member

  3. Thrasher

    Thrasher Power Member

    O que tu queres dizer é que o ciclo while acaba quando o utilizador introduzir o valor 99.99 e não quando o valor da soma for 99.99 certo?
     
  4. exacto!!
    eu quero que ele pare quando o valor introduzido for 99.99 mas nao tou a conseguir so consigo faze-lo parar com numero inteiros...
     
  5. Diogo Pinho

    Diogo Pinho Power Member

    tenta iniciar o a variavel V tambem a "0" ou mete o s=s+v a seguir ao scanf

    EDIT: sorry n tinha visto o teu scanf fora do ciclo :S

    EDIT 2: tenta meter o teu scanf de dentro do ciclo igual ao de fora
     
    Última edição: 8 de Novembro de 2008
  6. ugo_asus

    ugo_asus Power Member

    Se meteres isto ---> printf("%f\n",v);

    dentro do while a seguir ao scanf...percebes logo qual é o problema....

    :P
     
    Última edição: 8 de Novembro de 2008
  7. acho que percebi o que queres dizer. ja coloquei o teu printf e ja percebi o q acontece..quando ele pede outro numero para eu inserir e eu coloco 99.99 depois aparece 99.989998 , ou seja é diferente de 99.99 e assim sendo ele nao para...
    assim sendo o que devo fazer??colocar este numero que ele intrepreta como 99.99??
     
  8. Neptune

    Neptune 1st Folding then Sex

    Código:
    #include <stdio.h>
    #define PRECISAO 0.001
    
    int compara(float v);
    
    int main() {
        float v,s=0; //iniciei a variavel soma com valor zero
        printf("introduza valor a somar\n");
        scanf("%f",&v);
        while(!compara(v)){
            s=s+v;
            printf("outro valor a somar\n");
            scanf("%f",&v); 
        }
        printf("o resultado é %f\n",s);
        return 0;
    }
    
    int compara(float v) {
        if ((v-PRECISAO)<99.99 && (v+PRECISAO)>99.99)
            return 1;
        else 
            return 0;
    }
     
    Última edição: 9 de Novembro de 2008
  9. obrigado neptune...
    mas nao haverá outra forma de fazer o programa sem utilizar o define???
    este exercicio é de um ficha pratica que devo fazer para a universidade mas é suposto faze-lo com a materia leccionada ate entao e ainda nao estudei o define...nao haverá entao uma maneira mais simples de reslover o problem???
    mas obrigado na mesma pela ajuda
     
  10. only_me

    only_me Power Member

    nao existe, uma função para reduzir o numero a 2 casas decimais?
     
  11. The_True_Eue

    The_True_Eue Power Member

    Se não queres usar o #define podes definir uma constante com const:
    Código:
    const float PRECISAO = 0.001;
    Ou, se não quiseres usar const substitui todas as ocorrências de PRECISAO por 0.001, que no fundo é o que o #define faz.
     

Partilhar esta Página