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

Equação de segundo grau com ponteiro e função


RS25

Pergunta

Estou com dificuldades em implementar um programa que através de uma chamada de função determine as raízes de uma equação de segundo

grau.

Segue a minha tentativa:

#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;
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();

}
      
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)
{
          *x1=(-b+sqrt(delta))/(2*a);
          *x2=(-b-sqrt(delta))/(2*a);
   printf ("\nx1=%.2f e x2=%.2f\n\n", x1, x2);

}
else
{
printf("não e possivel calcular");
}
} 

}

O compilador acusa vários erros que eu não consegui arrumar.

Alguém poderia me ajudar?

E o programa acusa os seguintes erros:

Compilador: Default compiler

Executando g++.exe...

g++.exe "C:\Users\eduardo\raiz.cpp" -o "C:\Users\eduardo\raiz.exe" -I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include" -I"C:\Dev-Cpp\include\c++\3.4.2\backward" -I"C:\Dev-Cpp\include\c++\3.4.2\mingw32" -I"C:\Dev-Cpp\include\c++\3.4.2" -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib"

C:\Users\eduardo\raiz.cpp: In function `int main()':

C:\Users\eduardo\raiz.cpp:19: error: cannot convert `float**' to `float*' for argument `4' to `int raizes(float, float, float, float*, float*)'

C:\Users\eduardo\raiz.cpp: In function `int raizes(float, float, float, float*, float*)':

C:\Users\eduardo\raiz.cpp:26: error: declaration of 'float*x1' shadows a parameter

C:\Users\eduardo\raiz.cpp:27: error: declaration of 'float*x2' shadows a parameter

Execução terminada

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

float *x1;
float *x2;
Não precisa declarar como ponteiro, pode declarar como variável normal mesmo. Na função raizes por que declarar de novo float *x1 e *x2 se ele já tá declarado na definição dela? Pode retirar essa declaração dentro da função. Conserta também aqui:
printf ("\nx1=%.2f e x2=%.2f\n\n", *x1, *x2);

Faltou botar o * já que x1 e x2 são ponteiros.

Agora não entendi porque retornar os valores de x1 e x2 se no main você não os usa?

T+.

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...