Advertisement
Guest User

Untitled

a guest
Oct 17th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.37 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<math.h>
  3. #include<complex.h>
  4.  
  5. main()
  6. {
  7.  
  8. double a,b,c,x,delta,sqr,x1,x2;
  9. int k; //Slabo nazwana zmienna, nie wiadomo z gory do czego sluzy.
  10.  
  11. /*Sprawdzanie Formatów*/
  12. do
  13. {
  14. printf("\nPodaj wspolczynnik a:");
  15. k=scanf("%lf",&a); // k + while jest niepotrzebne do sprawdzenia czy jest liczba
  16. // scanf przy przypisywaniu do zmiennej zwraca return code rowny liczbie znakow ktore udalo sie przypisac
  17. // jezeli sprobujesz przypisac litere (char) do double, to return z scanf powinien byc rowny zero (tak mi sie wydaje czytajac dokumentacje)
  18. if(k==0) printf("\nBlaaaaad");
  19. fflush(stdin);
  20. }
  21. while(k==0);
  22.  
  23. do
  24. {
  25. printf("\nPodaj wspolczynnik b:");
  26. k=scanf("%lf",&b);
  27. if(k==0) printf("\nBlaaaaad");
  28. fflush(stdin);
  29. }
  30. while(k==0);
  31.  
  32. do
  33. {
  34. printf("\nPodaj wspolczynnik c:");
  35. k=scanf("%lf",&c);
  36. if(k==0) printf("\nBlaaaaad");
  37. fflush(stdin);
  38. }
  39. while(k==0);
  40. // tu sa jakies 3 niepotrzebne tabulatory:P
  41. // tu jeden
  42. // Ogolnie powyzsze pobieranie parametrow mozna zrobic w jednym poleceniu scanf() scanf("%d %d %d", &a, &b, &c)
  43.  
  44. /*Obliczenia*/
  45.  
  46. // Dwa razy sprawdzasz czy a==0 && b==0, powtarzasz kod
  47. // Wystarczy zrobic jeden if(a==0 && b==0) i dac blad. Raczej nie trzeba sprawdzac c, bo 0x^2 + 0x + 0 to nadal funkcja stala, y=0
  48. if(a==0)
  49. {
  50. if(b==0)
  51. {
  52. if(c!=0) // j/w sprawdzanie c niepotrzebne jezeli juz wiesz ze a=0 i b=0
  53. printf("\nSprzecznosc, %.0lf=0 -Funkcja liniowa stala, nie posiada miejsc zerowych",c);
  54. else
  55. printf("\n Funkcja stala %.2lf, nieskonczenie wiele miejsc zerowych",c);
  56. }
  57. else
  58. {
  59. x=-(c/b);
  60. printf("\n Funkcja liniowa o miejscu zerowym x=%.2lf",x);
  61. }
  62.  
  63. }
  64.  
  65. if(b==0)
  66. {
  67. if(a==0)
  68. {
  69. if(c!=0)
  70. printf("\nSprzecznosc, %.0lf=0 -Funkcja liniowa stala, nie posiada miejsc zerowych",c);
  71. else
  72. printf("\n Funkcja stala %.2lf, nieskonczenie wiele miejsc zerowych",c);
  73. }
  74. else
  75. printf("\nBrak rozwiazan rzeczywistych,delta jest ujemna");
  76.  
  77. /*
  78. delta=(b*b)-(4*(a*c));
  79. sqr=sqrt(delta);
  80. printf("\n %lf",sqr);
  81. */
  82. }
  83.  
  84. if(c==0)
  85. {
  86. if(a==0) // znow sprawdzasz a=0 i b=0
  87. {
  88. if(b==0)
  89. printf("\n Funkcja liniowa stala, nieskonczenie wiele miejsc zerowych");
  90. else
  91. printf("\n Funkcja liniowa stala, o miesjscu zerowym x=0");
  92. }
  93. else
  94. x=-(b/a);
  95. x1=0;
  96. printf("Funkcja kwadratowa o miejscach zerowych x1=%lf i x2=%lf",x,x1);
  97.  
  98. }
  99.  
  100.  
  101. // obliczanie delty powinno byc w jakims "else", inaczej ten kawalek kodu sie niepotrzebnie wykonuje
  102. delta=(b*b)-(4*(a*c));
  103. if(delta<0)
  104. printf("Delta jest ujemna, brak rozwiazan rzeczywistych");
  105. else if(delta==0)
  106. {
  107. x=-(b/(2*a));
  108. }
  109. else // blad skladni, nie ma klamr
  110. sqr=sqrt(delta);
  111. x1=(-b-sqr)/(2*a);
  112. x2=(-b+sqr)/(2*a);
  113. printf("\n Parabola o miejscach zerowych: x1=%lf x2=%lf",x1,x2);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement