Calculando bhaskara em C

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

Textos Relacionados:

Deixe um Comentário

7 Comentários.

  1. 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

  2. 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:

      delta = ( pow(valor[1]),2) - 4 * valor[0]* valor[2])

      []‘s

  3. 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

Deixe um Comentário

SEO Powered by Platinum SEO from Techblissonline