Ajuda - Ponteiros [RESOLVIDO]

1. Ajuda - Ponteiros [RESOLVIDO]

Gustavo
rs23

(usa Ubuntu)

Enviado em 30/10/2010 - 01:49h

Criei uma função que calcula as raízes de uma equação de segundo grau
porém, estou usando ponteiros para mostrar as raízes. Mas o programa esta com erro na hora de mostrar o resultado certo das raízes.
segue o que eu fiz:

/*Equação de segundo grau com ponteiro*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int raizes(float, float, float, float*, float*);

int main()
{
float a,b,c;
float* x1;
float* x2;
float raiz,delta;

printf("Entre com o valor do coeficiente A:");
scanf("%f",&a);
printf("Entre com o valor do coeficiente B:");
scanf("%f",&b);
printf("Entre com o valor do coeficiente C:");
scanf("%f",&c);

delta = pow(b,2) - 4 * a * c;
raiz = sqrt(delta);

printf("Raiz 1 %d\n",x1);
printf("Raiz 2 %d\n",x2);
system("pause");
return 0;
}

int raizes(float a, float b, float c, float* x1, float* x2)
{
float raiz;
//raiz 1
*x1 = -b + (raiz/ (2 * a));
//raiz 2
*x2 = -b - (raiz/ (2 * a));

}


  


2. MELHOR RESPOSTA

Perfil removido
removido

(usa Nenhuma)

Enviado em 30/10/2010 - 13:18h

O primeiro estava mais promissor...
O Sr. repetiu a declaração da função raizes, quando vai usar a função raizes não precisa do int tenta arrumar o primeiro codigo o segundo não vai funcionar por causa do float dentro da função, já foi definido que dentro da função ele terá float então a unica coisa que eu preciso definir é o valor de cada float e outra coisa se não em engano o Sr. declarou float como uam variavel float é reservado do C.

3. Re: Ajuda - Ponteiros [RESOLVIDO]

Mauricio Souza Klein
Hebang

(usa Arch Linux)

Enviado em 30/10/2010 - 04:13h

Rs23, parece que você não chama a função raizes em lugar nenhum. Se realmente não chama, está imprimindo lixo na tela, uma vez que as posições de memória apontadas pelos ponteiros "x1" e "x2" não foram inicializadas.


4. Re: Ajuda - Ponteiros [RESOLVIDO]

André
andrezc

(usa Debian)

Enviado em 30/10/2010 - 10:24h

Provavelmente é um erro que não está certo.

Olha, coloque mais informações, coloque o erro informado pelo compilador, a saída que você espera, o que você espera do programa, por exemplo:

"Eu entro com x e o programa me retorna y ao invés de l".




5. Re: Ajuda - Ponteiros [RESOLVIDO]

Gustavo
rs23

(usa Ubuntu)

Enviado em 30/10/2010 - 12:15h

Eu entro com os valores dos coeficientes a, b e c

Entrada de dados: 2
5
0

Esperava que o programa me retornasse o valor das duas raizes

Saida:
x1 = 0
x2 = -10/8

No entanto a saída que o programa gera e: 38 e 525353

Este e o problema na hora do programa mostrar o resultado

já tentei colocar a chamada da função no programa principal assim:

raizes(a,b,c,&x1,&x2);

E também da erro dizendo que não pode ser float


6. Re: Ajuda - Ponteiros [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 30/10/2010 - 12:43h

Já tentou definir o printf do resultado como float (%f)?


7. Re: Ajuda - Ponteiros [RESOLVIDO]

Gustavo
rs23

(usa Ubuntu)

Enviado em 30/10/2010 - 12:53h

ThePinkShark

Já tentei e o resultado que aparece e 0


8. Re: Ajuda - Ponteiros [RESOLVIDO]

Gustavo
rs23

(usa Ubuntu)

Enviado em 30/10/2010 - 12:58h

Refiz o programa agora chamando a função
e o programa fez foi piorar.


#include<stdio.h>
#include<conio.h>
#include<math.h>

int raizes(float a, float b, float c, float*x1, float*x2);

main()
{
float a,b,c;
printf ("\n\n\nInforme o valor do coeficiente a: ");
scanf ("%f", &a);
printf ("Informe o valor do coeficiente b: ");
scanf ("%f", &b);
printf ("Informe o valor do coeficiente c: ");
scanf ("%f", &c);

raizes(a,b,c); //chama a funcao
getch();
}

int raizes(float a, float b, float c, float*x1, float*x2);
{
float delta;
float *x1;
float *x2;
delta=pow(b,2)-4*a*c;

if(a!=0)
{
if (delta >=0)
{
//Caso delta > 0
*x1=(-b+sqrt(delta))/(2*a);
*x2=(-b-sqrt(delta))/(2*a);
printf ("\nx1=%.2f e x2=%.2f\n\n", x1, x2);

}
else
{
printf("Nao e possivel calcular");
}
} //fim do ultima if

} //fim da funçao



9. Re: Ajuda - Ponteiros [RESOLVIDO]

Gustavo
rs23

(usa Ubuntu)

Enviado em 03/11/2010 - 00:52h

Alterei o programa novamente e rodou


#include<stdio.h>
#include<conio.h>
#include<math.h>

void raizes( float a, float b, float c, float *x1, float *x2);

int main(void)
{
float a;
float b;
float c;
float x1;
float x2;

printf("\n\n\nInforme o valor do coeficiente a: ");
scanf("%f", &a);

printf("Informe o valor do coeficiente b: ");
scanf("%f", &b);

printf("Informe o valor do coeficiente c: ");
scanf ("%f", &c);

raizes( a, b, c, &x1, &x2); //chama a funcao

getch();
return 0;
}

void raizes(float a, float b, float c, float *x1, float *x2)
{
float delta;

delta = pow( b, 2 ) - 4 * a * c;

if ( a != 0 )
{
if ( delta >= 0 )
{

//Caso delta > 0
*x1 = ( -b + sqrt(delta) ) / ( 2 * a );
*x2 = ( -b - sqrt(delta) ) / ( 2 * a );

printf ("\nx1=%0.2f e x2=%0.2f\n\n", *x1, *x2);

}
else
{
printf("Nao e possivel calcular\n");
}
} //fim do ultima if

} //fim da funcao







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts