Ir para conteúdo
Fórum Script Brasil
  • 0

Passagem de parâmetro por referência


Blitzen

Pergunta

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 Blitzen
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

ops, obrigado pelo toque. É que tinha um monte de linha de comentários (que só eu entendo) e eu as tirei para postar e acidentalmente exclui a linha que chamava a função tela.

Entretanto, um amigo me mostrou que, além de erro de sintaxe na função tela() havia também erro de looping infinito na função procura() :P.

CORRETO:

void tela( struct valor *dados )

{

printf("n: ");

scanf("%f", &((*dados).n));

printf("A: ");

scanf("%f", &((*dados).A));

printf("precisao: ");

scanf("%f", &((*dados).precisao));

return;

}

RESOLVIDO.

Obrigado.

Editado por Blitzen
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...