fork download
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. int QuadFormula(double a,double b,double c){
  5. int check;
  6. double det, abs_det, c1, c2, x1, x2;
  7. det = b*b-4*a*c;
  8. if (a==0){
  9. //二次方程式ではない
  10. check = 0;
  11. if(b==0){
  12. //一次方程式ではない
  13. check = -2;
  14. }
  15. }else if (det < 0){
  16. //虚数解をもつ
  17. check = -1;
  18. }else{
  19. //二次方程式
  20. check = 1;
  21. }
  22.  
  23. if (check == -1){
  24. abs_det = det*-1;
  25. printf("この方程式は実数解を持ちません。");
  26. c1 = -1*b/2*a;
  27. c2 = sqrt(abs_det)/2*a;
  28. printf("解は%lf+i%lf, %lf-i%lf です。\n", c1,c2,c1,c2);
  29. }else if(check == -2){
  30. printf("これはxを含む方程式ではありません。\n");
  31. }else if(check == 0){
  32. x1 = -1*c/b;
  33. printf("この方程式は一次方程式で, x=%lf です。\n", x1);
  34. }else if(check == 1){
  35. x1 = (-1*b+sqrt(det))/2*a;
  36. x2 = (-1*b-sqrt(det))/2*a;
  37. if (det == 0){
  38. printf("この方程式は重解を持つ二次方程式で, x1=x2=%lfです。\n", x1);
  39. }else{
  40. printf("この方程式は二次方程式で, x1=%lf, x2=%lfです。\n", x1, x2);
  41. }
  42. }
  43. return 0;
  44. }
  45.  
  46. int main(void){
  47. double a,b,c,x1,x2;
  48.  
  49.  
  50. printf("ax^2+bx+c = 0の解を求めるプログラムです。\n");
  51.  
  52. printf("\na="); scanf("%lf", &a);
  53. printf("\nb="); scanf("%lf", &b);
  54. printf("\nc="); scanf("%lf", &c);
  55.  
  56. QuadFormula(a,b,c);
  57.  
  58. return 0;
  59. }
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
ax^2+bx+c = 0の解を求めるプログラムです。

a=
b=
c=この方程式は重解を持つ二次方程式で, x1=x2=-0.000000です。