Ajuda Programa em C [RESOLVIDO]

1. Ajuda Programa em C [RESOLVIDO]

Leandro Bernardo
leandro.bernardo

(usa Debian)

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

Compilando com gcc -lm nomedoprograma.c -o nomedoprograma.exe
eu tenho o seguinte erro : eq2grau.c:49: error: expected identifier or ‘(’ before ‘{’ token

já mudei todos as chaves de lugar mas o erro permanece e só muda de linha,
sei que é erro besta de quem começou a programar agora, por isso gostaria de uma luz de quem sabe um pouco mais rsrs




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

void CalculaEquacao(float a, float b, float c);

int main(void)

{

float a,b,c;

printf ("Este programa calcula Equacoes do tipo: ax^2+bx+c=0\n");
printf ("Digite um valor para a:");
scanf ("%f", &a);
printf ("Digite um valor para b:");
scanf ("%f", &b);
printf ("Digite um valor para c:");
scanf ("%f", &c);

CalculaEquacao(a,b,c);
getch();
}

void CalculaEquacao(float a, float b, float c)
{
float delta,x1,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:%f", x1);
printf("\nx2:%f", x2);
}
else
{
printf ("Não foi possível calcular x1 e x2, numeros imaginarios");
}
}
}


else

{

if (b!=0)
{
x1=-c/b;
printf("x=%f",x1);
}
else
{
printf ("Conjunto Vazio!!!");
}
}



  


2. Simples!

Ezequias Rocha
Ezequias Rocha

(usa Ubuntu)

Enviado em 08/11/2010 - 07:41h

Sempre que puder, faça um comentário nas chaves quando tiver muitos laços ou escopos alinhados:


void CalculaEquacao(float a, float b, float c)
{
float delta,x1,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:%f", x1);
printf("\nx2:%f", x2);
}
else
{
printf ("Não foi possível calcular x1 e x2, numeros imaginarios");
}
}//if (a != 0)
//}//Esta chave foi comentada (retirada) e foi colocada no final da função
else
{

if (b!=0)
{
x1=-c/b;
printf("x=%f",x1);
}
else
{
printf ("Conjunto Vazio!!!");
}
}//else - if (a != 0)
}//Chave colocada no final da função


3. Re: Ajuda Programa em C [RESOLVIDO]

Leandro Bernardo
leandro.bernardo

(usa Debian)

Enviado em 08/11/2010 - 10:33h

Legal Ezequias, o erro sumiu! haha
Vivendo e aprendo!

Agora não sei se vai conseguir me ajudar, eu to tendo o seguinte erro
após a compilação com gcc eq2grau.c -o eq2grau -lm , ou somente com o gcc eq2grau.c


.$ gcc eq2grau.c
/tmp/ccM00TMo.o: In function `CalculaEquacao':
eq2grau.c:(.text+0x10e): undefined reference to `sqrt'
eq2grau.c:(.text+0x136): undefined reference to `sqrt'



Ja inclui <math.h> , <stdlib.h> e tentei colocar a <conio.h> mas não rolou ;\


4. Re: Ajuda Programa em C [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 08/11/2010 - 10:45h

getch() não existe no linux precisa ser adicionado o header conio na pasta do compilador ou no ato da compilação. alternativamente pode-se utilizar a função "getchar()" do stdio.h.


5. Bibliotecas

Ezequias Rocha
Ezequias Rocha

(usa Ubuntu)

Enviado em 08/11/2010 - 11:20h

Parece que o compilador não está conseguindo achar a biblioteca. O problema está no comando de compilação. cheque isto:

http://www.c-faq.com/fp/libm.html
http://bytes.com/topic/c/answers/519717-how-use-sqrt-function-gcc
http://www.vivaolinux.com.br/topico/C-C++/funcao-sqrt


Embraces!



6. Re: Ajuda Programa em C [RESOLVIDO]

Anderson de Oliveira Madeira
enki

(usa Zenwalk)

Enviado em 09/11/2010 - 12:04h

Acontece que toda biblioteca é ligada após a compilação com o código da biblioteca que já está compilado (vide linker: http://pt.wikipedia.org/wiki/Linker). As libs do C são ligadas automaticamente, mas como os matemáticos são orgulhosos (hehehe) e geralmente preferem fazer suas próprias funções matemáticas e linkar o código com essa lib feita por eles, o gcc não linka automaticamente com a lib math, então isso deve ser feito explicitamente:

$ gcc program.c -o outputname -lm


7. Re: Ajuda Programa em C [RESOLVIDO]

Leandro Bernardo
leandro.bernardo

(usa Debian)

Enviado em 18/11/2010 - 13:27h

Valeu galera, consegui resolver com o -lm

:)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts