Ir para o conteúdo

Fórmula Resolvente

É apresentado um código mais recente, onde os valores são calculados passo-a-passo, e um código mais antigo, onde os valores são calculados aquando o output. Ideia: NOTA: O código novo calcula o vértice da parábola!

Código novo

PROGRAM FormulaResolvente2;
USES crt;  (* Só para a utilização do ClrScr. *)

var a, b, c : real;  // Parâmetros de Ax^2 + Bx + C = 0
    d : real;        // Discriminante
    x1, x2 : real;   // Raízes reais
    vx, vy : real;   // Vértice
    opc : char;      // Opção de saída

BEGIN
     repeat
           ClrScr;
           writeln('FORMULA RESOLVENTE, ax^2 + bx + c = 0');
           writeln;

           repeat
                 write('a? ');
                 readln(a);
                 if (a=0) then writeln('[ERRO! A=0]');
           until (a<>0);

           write('b? ');
           readln(b);

           write('c? ');
           readln(c);

           // Cálculo do discriminante
           d := sqr(b) - 4*a*c;

           // Cálculo das raízes
           if (d>=0) then begin
              x1 := (-b + sqrt(d)) / (2*a);
              x2 := (-b - sqrt(d)) / (2*a);
           end;

           // Cálculo dos pontos X e Y do vértice
           vx := -b / (2*a);
           vy := a*sqr(vx) + b*vx + c;

           // Output dos resultados
           writeln;
           writeln('DISCRIMINANTE:');
           writeln('   d = ',  d, '  (',  d:15:10, ')');

           writeln;
           writeln('RAIZES:');
           if (d>=0) then begin
              writeln('  x1 = ', x1, '  (', x1:15:10, ')');
              writeln('  x2 = ', x2, '  (', x2:15:10, ')');
              if (d=0) then writeln('  [ATENCAO: Raiz dupla!]');
           end else writeln('  [ERRO MATEMATICO: Sem raizes reais!]');

           writeln;
           writeln('VERTICE:');
           writeln('   X = ', vx, '  (', vx:15:10, ')');
           writeln('   Y = ', vy, '  (', vy:15:10, ')');

           // Controlo de saída
           writeln;
           write('ENTER = Repetir. ESC = Sair. ');
           repeat
                 opc := ReadKey;
           until (opc in [#13, #27]);
     until (opc = #27);  // ESC
END.

Código antigo

Program formula_resolvente ;

Var
   a, b, c: real;
 Begin

        writeln('==================');
        writeln('Fórmula Resolvente');
        writeln('==================');
        writeln('');
        writeln('Este programa permite-lhe calcular as soluções de uma equação de segundo grau com uma incógnita.');
        writeln('');
        writeln('A equação deverá estar na forma ax^2+bx+c=0');
        readln;
        ClrScr;
        writeln('Introduza o a:');
        readln(a);
        writeln('Introduza o b');
        writeln('');  
        readln(b);
        writeln('');
        writeln('Introduza o c');
        readln(c);
        ClrScr;
                If b*b-4*a*c < 0       
                Then
                writeln('Equação Impossível')

                Else
                writeln('As soluções são : ',(-b + sqrt(b*b-4*a*c))/2*a, ' e ',((-b - sqrt(b*b-4*a*c))/2*a),'.');

        writeln('');   
        writeln('Espero que o meu programa lhe tenha sido útil, se gostou partilhe!');
        writeln('Fórmula Resolvente © BrunoAleixo aka Gempis');      
  readln;        

 End.