Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

HilarYo

Erro loop do while

Mensagens Recomendadas

HilarYo


#include <stdio.h>
int main(int argc, const char * argv[])
{
float valor, aprox, divisao=0,somaap,resultado=0,val;

printf("Valor?\n");
scanf("%f",&valor);


do {

    printf("Aproximado?\n");
    scanf("%f",&aprox);
    if((aprox < 1) || (aprox > (valor/2)))
    printf("Incorrecto!!!");


} while ((aprox<1) || (aprox > (valor/2)));



do {
    divisao=valor/aprox;
    somaap=divisao+aprox;
    resultado=somaap/2;
    val=(resultado*resultado)-10;
    divisao=resultado;
} while (val>0,0001);

printf("Resultado:%f",resultado);

}

Isto cria um loop no ultimo ciclo for: o objectivo é transportar o valor do resultado para a divisão até o valor val seja inferior a 0,0001 alguém pode ajudar? Obrigado!

Editado por pmg
Falta LP no GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Para explicar o que acontece, a tua relação

while (val>0,0001)

é composta por duas relações: a primeira (calculada mas ignorada) é val>0; a segunda é 0001.

O resultado da condição toda é o resultado da última condição: 0001 é o mesmo que 1 em notação octal é o mesmo que 1 é o mesmo que verdade.

Ou seja, o ciclo nunca para.

Sugestão: configura o teu compilador para emitir o máximo possível de warnings, e não aceites programas com warnings. No gcc, com -Wall (ou -Wunused-value) o teu código despoleta um warning.

Editado por pmg
sugestão

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.