Sou aluno de SI e estou com um problema para resolver uma passagem por referência. Esse código compila sem nenhum problema, mas na execução não passa da função tela(), ele trava depois de pegar os valores. Alguém saberia me dizer por quê?
--------------
/* Programa: raiz.c
* Descrição: Este programa calcula a raiz n-ésima de x através do método
Pergunta
Blitzen
Olá,
Sou aluno de SI e estou com um problema para resolver uma passagem por referência. Esse código compila sem nenhum problema, mas na execução não passa da função tela(), ele trava depois de pegar os valores. Alguém saberia me dizer por quê?
--------------
/* Programa: raiz.c
* Descrição: Este programa calcula a raiz n-ésima de x através do método
* de Newton-Raphson.
*/
#include <stdio.h>
#include <math.h>
typedef struct valor
{
float n;
float A;
float precisao;
} valor;
typedef enum { false, true } boolean;
void tela( struct valor *dados )
{
printf("n: ");
scanf("%f", &(*dados).n);
printf("A: ");
scanf("%f", &(*dados).A);
printf("precisao: ");
scanf("%f", &(*dados).precisao);
return;
}
float procura( struct valor *dados )
{
float fx, x0;
boolean achei;
achei = false;
x0 = (*dados).A - 1;
(*dados).precisao = 1 / pow(10, (*dados).precisao);
fx = pow( x0, (*dados).n ) - (*dados).A;
fx < 0 ? fx *= -1 : fx;
if( fx < (*dados).precisao )
return fx;
else
while( !achei )
{
x0 = x0 - ( pow(x0, (*dados).n) / pow((*dados).n * x0, (*dados).n - 1) );
fx = pow( x0, (*dados).n ) - (*dados).A;
fx < 0 ? fx *= -1 : fx;
if( fx < (*dados).precisao )
achei = true;
}
return fx;
}
int main()
{
struct valor dados;
tela( &dados );
printf("raiz: %f", procura( &dados ));
return 0;
}
--------------
Obrigado.
Editado por BlitzenLink para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.