Uma das formulas matemáticas mais famosas, seja a formula de Bhaskara, ela é utilizada para calculamos equações do tipo ax²+bx+c = 0. Segue abaixo um código fonte escrito em C contendo um exemplo de como cálcular a formula de bhaskara, o código está muito bem comentado, é seus comentários são explicativos.
/*Codigo de autoria de Herberson aka VonNaturAustreVe
e-mail: vonnatur[arroba]0fx66.com
*/
#include <stdio.h>
#include <math.h>
#include <ctype.h>
int main()
{
char continuar;
float valor[3];
double delta,x1,x2;
printf("Este programa calcula equacoes do tipo \" ax² + bx + c = 0 \"\n");
do{
//Entrada dos valores da equacao.
printf("Digite o valor de a: ");
scanf("%f", &valor[0]);
printf("Digite o valor de b: ");
scanf("%f", &valor[1]);
printf("Digite o valor de c: ");
scanf("%f", &valor[2]);
//Efetua o calculo do delta.
delta = pow(valor[1],2) - 4 * valor[0] * valor[2];
//Verifica se o delta possui um valor negativo.
if(delta < 0) {
printf("Não foi possivel calcular a equacao\nPois o resultado do delta e NEGATIVO.\n");
}
//Caso o delta nao tenha um valor negativo, ele serao calculadas as raizes x' e x"
else {
//Calculando a primeira raiz.
x1 = (-valor[1] + sqrt(delta)) / 2 * valor[0];
//Calculando a segunda raiz.
x2 = (-valor[1] - sqrt(delta) ) / 2 * valor[0];
//Exibi os resultados da equacao.
printf("\n\nx\' = %.2lf\nx\" = %.2lf\n", x1, x2);
}
//verifica se o usuario deseja calcular outra equacao.
do{
printf("\nDeseja calcular outra equacao? <S/N>\n");
scanf(" %c", &continuar);
continuar = toupper(continuar);
if((continuar!='S')&&(continuar!='N')) {
printf("Valores invalidos, digite novamente.\n");
}
}while((continuar!='S')&&(continuar!='N'));
}while(continuar!='N');
return 0;
}
Fica agora o desafio, incremente este código para que ele calcule caso o valor de delta seja negativo ou seja utilizando números complexos.
Edit: Ajustada indentação do código.
[]‘s

fiz um também só que o meu além de calcular ele plota o gráfico http://bugsec.googlecode.com/files/baskara.c ;)
claro precisa do GnuPlot
30. delta = (valor[1]*valor[1])-4*valor[0]*valor[2];
\\ vc declarou o valor 1 duas vezes.É isto memsmo?
Boa tarde, Thiago
Sim, fiz isso mesmo, pois não quis chamar uma função para elevar o valor ao quadrado. Mas se quiser poder chamar a função pow para elevar o valor[1] ao quadrado da seguinte forma:
[]‘s
mto bom o site xD to pegando varias coisas e testando para aprender mais vlw kkkk o meu nesse exemplo funcionou lgl o unico problema é que os resultados so dao negativo u.u sabe o problema?
Muito bom Guilherme, não pare de aproveitar o conteúdo que o meu site tem a oferecer, não pare de estudar :)
Você ter perguntando sobre isso e interessante, notei isso uma vez que, mas não consegui descobri o que estava acontecendo, achei que foi só coincidência. Mas vou debuggar o código e descobrir o que se passa. Realmente é meio estranho todas os resultados serem negativos.
Já entendi o que está acontecendo. Experimente coloca a=1, b=-7 e c=6. Resolva ela no papel e verá que o código está funcionando, algo interessante acontece quando usamos um valor positivo para o b, sempre temos um resultado negativo! ´E um resultado oposto ao resultado do valor positivo, por exemplo na equação que falei para você resolver (a=1, b=-7;c=6) teremos x’=6 e x”=1, se mudamos o b para 7 teremos um x’=-1 e x”=-6.
Ficou claro agora o que está acontecendo? O problema não está no programa e sim no exemplo que você está colocando :)
[]‘s
aham isso mesmo fiz agora no papel e conferi xD eu coloquei um numero negativo no C por exemplo ficou um x com positivo e outro negativo entao deu certo, um erro que estava dando na minha formula tambem era o segunite, o x1 e x2 nao dividiam ao final da equaçao pelo 2*a entao oq fiz foi colocar parenteses no 2*a e funcionou xD dai ficou assim:
x1= (-b +sqrt(delta)) /(2*a)
no meu caso nao coloquei valor[0] e tal coloquei as letras mesmo xD
a msg ta ficando grande mas queria pergunta uma coisa, voce ja usou system(“color algumnumeroqualquer”); no seu programa?eu usei ele para aparecer na hora do resultado na cor 2 que é um verde bem legal porem nao sei como cancelar dai tudo depois que uso vira verde u.u kkkkk ja tentei usar um system color depois mas mesma coisa ele n muda mais, sabe algo sobre isso?
Eu evito fazer chamadas a função system a menos que seja realmente necessário.
Sobre alteração na cor do bash recomendo ler esse artigo: Conhecendo a função printf leia a sessão 12. ANSI utilizando esses recursos poderá colorir o seu shell da mesma forma que fiz com o awk nesse exemplo.
Em caso de duvidas só pesquisar por caracteres de controle!
Boa sorte e bons estudos!!!
[]‘s