Guest User

Untitled

a guest
Oct 22nd, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.17 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. float f1,f2,f3,f4,f5;
  5. bool rozwiazanie;
  6. float val(float x);
  7. float bisekcja(float lewy, float prawy);
  8.  
  9. main()
  10. {
  11. float P, K;
  12.  
  13. scanf("%f",&f1);
  14. scanf("%f",&f2);
  15. scanf("%f",&f3);
  16. scanf("%f",&f4);
  17. scanf("%f",&f5);
  18.  
  19. scanf("%f %f",&P,&K);
  20.  
  21. float x = bisekcja(P,K);
  22. if(rozwiazanie == true)
  23. printf("%0.4f", x);
  24.  
  25. return 0;
  26. }
  27.  
  28. float val(float x)
  29. {
  30. return f1*x*x*x + f2*x*x+ f3*x + f4 + f5/x;
  31. }
  32.  
  33. float bisekcja(float lewy, float prawy)
  34. {
  35. float srodek;
  36. while(1)
  37. {
  38. srodek = (prawy+lewy)/2.0f;
  39.  
  40. if(srodek - lewy < 0.00001 || prawy - srodek < 0.00001)
  41. {
  42. rozwiazanie = true;
  43. return srodek;
  44. }
  45.  
  46. if(f5 != 0 && srodek == 0)
  47. {
  48. if(f5*val(lewy) < 0)
  49. prawy = srodek;
  50. else if(val(prawy) * val(srodek) < 0)
  51. lewy = srodek;
  52. else
  53. {
  54. printf("NIE");
  55. rozwiazanie = false;
  56. return 0;
  57. }
  58. }
  59. else
  60. {
  61. if(val(srodek)*val(lewy) < 0)
  62. prawy = srodek;
  63. else if(val(prawy) * val(srodek) < 0)
  64. lewy = srodek;
  65. else
  66. {
  67. printf("NIE");
  68. rozwiazanie = false;
  69. return 0;
  70. }
  71. }
  72. }
  73. }
Add Comment
Please, Sign In to add comment