Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Algoritmo da equação de 3º grau

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    C / C++ Algoritmo da equação de 3º grau

    Eai Pessoal. Na faculdade eu estudo cálculo I e II... O que é uma bosta...
    E estamos em uma matéria meia chata, equação do 3º grau. Para facilitar minha vida fiz um algoritmo baseado nas fórmulas de Cardano e Tartaglia. Estou disponibilizando em duas linguagens C e JavaScript

    Código PHP:
    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>

    void eq_3grau()
    {
         
    system("cls");
         
    float a,b,c,d;
         
    float r,q,s,discrim,dum1 ,term1r13t;
         
    float x1,x2,x3;
         
    float x11=0x22=0,x33=0;  
         
         do{
         
    printf("Digite o valor de a: "); scanf("%f",&a);
         if(
    a==0)
             
    printf("O coeficiente do cubo não pode ser 0.\n\n"); 
         }while(
    a==0);
         
         
    printf("Digite o valor de b: "); scanf("%f",&b);
         
    printf("Digite o valor de c: "); scanf("%f",&c);
         
         do{
         
    printf("Digite o valor de d: "); scanf("%f",&d);
         if(
    d==0)
            
    printf("\n\nBem, uma raiz eh 0. Divida a equacao polinomial por x e você tem uma equacao do segundo grau. Aqui nada mais ha a ser feito.\n\n");
        }while(
    d==0);
        
         
    /= a;  
         
    /= a;   
         
    /= a;  
        
         
    = (3*- (b*b))/9;
         
    = -(27*d) + b*(9*2*(b*b));
         
    /= 54;
         
         
    discrim q*q*r*r;
         
    printf("\n\ndiscri  =  %.20f\n\n"discrim);
         
    x1 0;  //A primeira raiz é sempre real.
         
    term1 = (b/3.0);     

         
         if (
    discrim 0// uma real, duas imaginarias
         
    {   
            
    printf("\n\nO discriminante eh maior que zero");
            
    sqrt(discrim);
            
    = (0) ? -cbrt(-s) : cbrt(s);
            
    sqrt(discrim);
            
    = (0) ? -cbrt(-t) : cbrt(t);
            
    x1= -term1 t;
            
    term1 += (t)/2.0;
            
    x33 x22 = -term1//parte real
            
    term1 sqrt(3.0)*(-s)/2;
            
    x2 term1;
            
    x3 = -term1;
            
        
    printf("\n\nx1 = %.8f\n"x1);
        
    printf("x2 = %.8f + %.8f*i\n"x22,x2);
        
    printf("x3 = %.8f + %.8f*i\n"x33x3);
        }
         
        if (
    discrim == 0// Todas as raizes sao reais.
        

            
    printf("\n\nO discriminante eh igual a zero");
            
    r13 = (0) ? -cbrt(-r) : cbrt(r);
            
    x1 = -term1 2.0*r13;
            
    x3 x2 = -(r13 term1);
            
        
    printf("\n\nx1 = %.8f\n"x1);
        
    printf("x2 = %.8f\n"x2);
        
    printf("x3 = %.8f\n"x3);
        }
        
        if(
    discrim 0//Opcao deixada para onde todas as raizes sao reais e distintas (q < 0)
        
    {
            
    printf("\n\nO discriminante eh menor que zero");
        
    = -q;
        
    dum1 q*q*q;
        
    dum1 acos(r/sqrt(dum1));
        
    r13 2.0*sqrt(q);
        
    x1 = -term1 r13*cos(dum1/3.0);
        
    x2 = -term1 r13*cos((dum1 2.0*M_PI)/3.0);
        
    x3 = -term1 r13*cos((dum1 4.0*M_PI)/3.0);
        
        
    printf("\n\nx1 = %.8f\n"x1);
        
    printf("x2 = %.8f\n"x2);
        
    printf("x3 = %.8f\n"x3);
        }    
    }
     
     
    int main ()
    {
    do{
        
    system("cls");

    eq_3grau();

     
    printf("\n\n\nQuer continuar? (s/n) ");

    }while (
    toupper(getch()) != 'N');
         
    // by Bruh

    =====================



    Código PHP:
    <!--Define JavaScript functions.-->

    function 
    Resolve(dataForm){
    var 
    parseFloat(dataForm.aIn.value);
    var 
    parseFloat(dataForm.bIn.value);
    var 
    parseFloat(dataForm.cIn.value);
    var 
    parseFloat(dataForm.dIn.value);

    if (
    == 0){
     
    alert("O coeficiente do cubo não pode ser 0.");
     return;
    //End if a == 0

    if (== 0){
     
    alert("Bem, uma raiz eh 0. Divida a equacao polinomial por x e você tem uma equacao do segundo grau. Aqui nada mais ha a ser feito.");
     return;
    //End if d == 0

    /= a;
    /= a;
    /= a;

    var 
    discrimqrdum1stterm1r13;

    = (3.0*- (b*b))/9.0;
    = -(27.0*d) + b*(9.0*2.0*(b*b));
    /= 54.0;

    discrim q*q*r*r;
    dataForm.x1Im.value 0//A primeira raiz é sempre real.
    term1 = (b/3.0);

    if (
    discrim 0) { // uma real, duas imaginarias
     
    Math.sqrt(discrim);
     
    = ((0) ? -Math.pow(-s, (1.0/3.0)) : Math.pow(s, (1.0/3.0)));
     
    Math.sqrt(discrim);
     
    = ((0) ? -Math.pow(-t, (1.0/3.0)) : Math.pow(t, (1.0/3.0)));
     
    dataForm.x1Re.value = -term1 t;
     
    term1 += (t)/2.0;
     
    dataForm.x3Re.value dataForm.x2Re.value = -term1;
     
    term1 Math.sqrt(3.0)*(-s)/2;
     
    dataForm.x2Im.value term1;
     
    dataForm.x3Im.value = -term1;
     return;
    // End if (discrim > 0)

    dataForm.x3Im.value dataForm.x2Im.value 0;

    if (
    discrim == 0){ // Todas as raizes sao reais.
     
    r13 = ((0) ? -Math.pow(-r,(1.0/3.0)) : Math.pow(r,(1.0/3.0)));
     
    dataForm.x1Re.value = -term1 2.0*r13;
     
    dataForm.x3Re.value dataForm.x2Re.value = -(r13 term1);
     return;
    // End if (discrim == 0)

    // Opcao deixada para onde todas as raizes sao reais e distintas (q < 0)
    = -q;
    dum1 q*q*q;
    dum1 Math.acos(r/Math.sqrt(dum1));
    r13 2.0*Math.sqrt(q);
    dataForm.x1Re.value = -term1 r13*Math.cos(dum1/3.0);
    dataForm.x2Re.value = -term1 r13*Math.cos((dum1 2.0*Math.PI)/3.0);
    dataForm.x3Re.value = -term1 r13*Math.cos((dum1 4.0*Math.PI)/3.0);
    return;

    }  
    //FIM do Resolve

    // by Bruh
    // end of JavaScript--> 



    ================

    Se tiverem sugestões, criticas, ou erro no código, podem falar.

    __________________

    Se fui útil não custa nada agradecer
    Se fui útil não custa nada agradecer clicando em obrigado
    sigpic
X
Working...
X