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.