fork download
  1. PROGRAM FormulaResolvente2;
  2. USES crt; (* Só para a utilização do ClrScr. *)
  3.  
  4. var a, b, c : real; // Parâmetros de Ax^2 + Bx + C = 0
  5. d : real; // Discriminante
  6. x1, x2 : real; // Raízes reais
  7. vx, vy : real; // Vértice
  8. opc : char; // Opção de saída
  9.  
  10. BEGIN
  11. ClrScr;
  12. writeln('FORMULA RESOLVENTE, ax^2 + bx + c = 0');
  13. writeln;
  14.  
  15. repeat
  16. write('a? ');
  17. readln(a);
  18. if (a=0) then writeln('[ERRO! A=0]');
  19. until (a<>0);
  20.  
  21. write('b? ');
  22. readln(b);
  23.  
  24. write('c? ');
  25. readln(c);
  26.  
  27. // Cálculo do discriminante
  28. d := sqr(b) - 4*a*c;
  29.  
  30. // Cálculo das raízes
  31. if (d>=0) then begin
  32. x1 := (-b + sqrt(d)) / (2*a);
  33. x2 := (-b - sqrt(d)) / (2*a);
  34. end;
  35.  
  36. // Cálculo dos pontos X e Y do vértice
  37. vx := -b / (2*a);
  38. vy := a*sqr(vx) + b*vx + c;
  39.  
  40. // Output dos resultados
  41. writeln;
  42. writeln('DISCRIMINANTE:');
  43. writeln(' d = ', d, ' (', d:15:10, ')');
  44.  
  45. writeln;
  46. writeln('RAIZES:');
  47. if (d>=0) then begin
  48. writeln(' x1 = ', x1, ' (', x1:15:10, ')');
  49. writeln(' x2 = ', x2, ' (', x2:15:10, ')');
  50. if (d=0) then writeln(' [ATENCAO: Raiz dupla!]');
  51. end else writeln(' [ERRO MATEMATICO: Sem raizes reais!]');
  52.  
  53. writeln;
  54. writeln('VERTICE:');
  55. writeln(' X = ', vx, ' (', vx:15:10, ')');
  56. writeln(' Y = ', vy, ' (', vy:15:10, ')');
  57. END.
Success #stdin #stdout 0.01s 296KB
stdin
1
-1
-1
stdout
FORMULA RESOLVENTE, ax^2 + bx + c = 0

a? b? c? 
DISCRIMINANTE:
   d =  5.000000000000000E+000  (   5.0000000000)

RAIZES:
  x1 =  1.618033988749895E+000  (   1.6180339887)
  x2 = -6.180339887498949E-001  (  -0.6180339887)

VERTICE:
   X =  5.000000000000000E-001  (   0.5000000000)
   Y = -1.250000000000000E+000  (  -1.2500000000)