Advertisement
Guest User

Untitled

a guest
May 25th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.29 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<math.h>
  3.  
  4.  
  5. void wprowadz_dane(int *a, int *b, int *c, int *d) {
  6. printf("podaj a\n");
  7. scanf_s("%d", a);
  8. printf("podaj b\n");
  9. scanf_s("%d", b);
  10. printf("podaj c\n");
  11. scanf_s("%d", c);
  12. printf("podaj d\n");
  13. scanf_s("%d", d);
  14. }
  15.  
  16. void formatuj_rownanie(int a, int b, int c, int d) {
  17. if (a > 0) {
  18. printf("%dxx", a);
  19. }
  20. else if (a<0) {
  21. printf("%dxx", a);
  22. }
  23. else {
  24. printf("");
  25. }
  26. if (b > 0 && a != 0) {
  27. printf("+%dx", b);
  28. }
  29. else if (b > 0 && a == 0) {
  30. printf("%dx", b);
  31. }
  32. else if (b<0) {
  33. printf("%dx", b);
  34. }
  35. else if (b == 0 && a != 0) {
  36. printf("");
  37. }
  38. else {
  39. printf("");
  40. }
  41. if (c > 0) {
  42. printf("+%d", c);
  43. }
  44. else if (c<0) {
  45. printf("%d", c);
  46. }
  47. else {
  48. printf("");
  49. }
  50. if (d > 0 && c == 0 && b == 0 && a == 0) {
  51. printf("%di=0", d);
  52. }
  53. else if (d > 0) {
  54. printf("+%di=0", d);
  55. }
  56. else if (d<0) {
  57. printf("%di=0", d);
  58. }
  59. else {
  60. printf("=0");
  61. }
  62. printf("\n");
  63. }
  64. float oblicz_d_r(int a, int b, int c) {
  65. float deltar = (b*b) - (4 * a*c);
  66. return deltar;
  67. }
  68.  
  69. float oblicz_d_u(int a, int d) {
  70. float deltau = -(4 * a*d);
  71. return deltau;
  72. }
  73.  
  74. float oblicz_p_d_r(float deltar, float deltau) {
  75. float pdeltar;
  76. pdeltar = sqrt((sqrt((deltar*deltar) + (deltau*deltau)) + deltar) / 2);
  77. return pdeltar;
  78. }
  79.  
  80. float oblicz_p_d_u(float deltar, float deltau) {
  81. float pdeltau;
  82. pdeltau = sqrt((sqrt((deltar*deltar) + (deltau*deltau)) - deltar) / 2);
  83. return pdeltau;
  84.  
  85. }
  86. void oblicz_rownanie(int a, int b, int c, int d, float *x1r, float *x1u, float *x2r, float *x2u, float *x3r, float *x3u, float *x4r, float *x4u) {
  87.  
  88. float deltar, deltau, pdeltar, pdeltau, deltr;
  89.  
  90. if (a != 0 && d == 0) {
  91. deltar = oblicz_d_r(a, b, c);
  92. deltau = oblicz_d_u(a, d);
  93. //1.1
  94. //deltar = 8.204060;
  95. if (deltar > 0) {
  96. pdeltar = oblicz_p_d_r(deltar, deltau);
  97. *x1r = (-(float)b - pdeltar) / (2 * a);
  98. *x2r = (-(float)b + pdeltar) / (2 * a);
  99. }
  100. //1.2
  101. if (deltar == 0) {
  102. *x1r = -(float)b / (2 * a);
  103. }
  104. //1.3
  105. if (deltar < 0) {
  106. deltar = -deltar;
  107. pdeltar = oblicz_p_d_r(deltar, deltau);
  108. *x1r = (float)-b / (2 * a);
  109. *x1u = (float)-(pdeltar / (2 * a));
  110. *x2r = *x1r;
  111. *x2u = -*x1u;
  112. }
  113. }
  114. //2.
  115. if (a == 0 && b != 0 && d == 0) {
  116. *x1r = -((float)c / b);
  117. }
  118. //3.
  119. if (a == 0 && b == 0 && (c != 0 || d != 0)) {
  120. printf("Rownanie sprzeczne \n");
  121. }
  122.  
  123. //4.
  124. if (a == 0 && b == 0 && c == 0 && d == 0) {
  125. printf("Rownanie tozsamosciowe \n");
  126. }
  127. //5.
  128. if (a == 0 && b != 0 && d != 0) {
  129. *x1r = -((float)c / b);
  130. *x1u = -((float)d / b);
  131. }
  132. //6.
  133. if (a != 0 && d != 0) {
  134. deltar = oblicz_d_r(a, b, c);
  135. deltau = oblicz_d_u(a, d);
  136. pdeltar = oblicz_p_d_r(deltar, deltau);
  137. pdeltau = oblicz_p_d_u(deltar, deltau);
  138. *x1r = (-b - pdeltar) / (2 * a);
  139. *x1u = (-b - pdeltau) / (2 * a);
  140. *x2r = (-b - pdeltar) / (2 * a);
  141. *x2u = (-b + pdeltau) / (2 * a);
  142. *x3r = (-b + pdeltar) / (2 * a);
  143. *x3u = (-b + pdeltau) / (2 * a);
  144. *x4r = (-b + pdeltar) / (2 * a);
  145. *x4u = (-b - pdeltau) / (2 * a);
  146. }
  147. }
  148. void dodaj(float deltar, float deltau, float *x1r, float *x1u, float *x2r, float *x2u, float *x3r, float *x3u, float *x4r, float *x4u, float*sr, float*su) {
  149. if (deltau != 0) {
  150. *sr = *x1r + *x2r + *x3r + *x4r;
  151. *su = *x1u + *x2u + *x3u + *x4u;
  152. }
  153. else if (deltar > 0) {
  154. *sr = *x1r + *x2r;
  155. }
  156. else if (deltar < 0) {
  157. *sr = *x1r + *x2r;
  158. *su = *x1u + *x2u;
  159. }
  160. }
  161. void odejmij(float deltar, float deltau, float *x1r, float *x1u, float *x2r, float *x2u, float *x3r, float *x3u, float *x4r, float *x4u, float*rr, float*ru) {
  162. if (deltau != 0) {
  163. *rr = *x1r - *x2r - *x3r - *x4r;
  164. *ru = *x1u - *x2u - *x3u - *x4u;
  165. }
  166. else if (deltar > 0) {
  167. *rr = *x1r - *x2r;
  168. }
  169. else if (deltar < 0) {
  170. *rr = *x1r - *x2r;
  171. *ru = *x1u - *x2u;
  172. }
  173. }
  174. void pomnoz(float deltar, float deltau, float *x1r, float *x1u, float *x2r, float *x2u, float *x3r, float *x3u, float *x4r, float *x4u, float*ir, float*iu) {
  175. if (deltau != 0) {
  176. *ir = ((*x1r * *x2r - *x1u * *x2u) * (*x3r * *x4r - *x3u * *x4u)) - ((*x1r * *x2u + *x2r * *x1u) * (*x3r * *x4u + *x4r * *x3u));
  177. *iu = ((*x1r * *x2r - *x1u * *x2u) * (*x3r * *x4u + *x4r * *x3u)) + ((*x1r * *x2u + *x2r * *x1u) * (*x3r * *x4r - *x3u * *x4u));
  178. }
  179. else if (deltar > 0) {
  180. *ir = *x1r * *x2r;
  181. }
  182. else if (deltar < 0) {
  183. *ir = (*x1r * *x2r - *x1u * *x2u);
  184. *iu = (*x1r * *x2u + *x2r * *x1u);
  185. }
  186. }
  187. void wyswietl_wynik(int a, int b, int c, int d, float x1r, float x1u, float x2r, float x2u, float x3r, float x3u, float x4r, float x4u, float sr, float su, float rr, float ru, float ir, float iu) {
  188. if (a != 0 && d == 0) {
  189. float deltar = oblicz_d_r(a, b, c);
  190. //printf("Delta= %f \n", deltar);
  191.  
  192. //1.1
  193. //deltar = 8.204060;
  194. if (deltar > 0) {
  195. printf("x1r = %f \n", x1r);
  196. printf("x2r = %f \n", x2r);
  197. printf("\n");
  198. printf("sr = %f \n", sr);
  199. printf("rr = %f \n", rr);
  200. printf("ir = %f \n", ir);
  201. }
  202.  
  203. //1.2
  204. if (deltar == 0) {
  205. printf("x1r = %f \n", x1r);
  206. }
  207.  
  208. //1.3
  209. if (deltar < 0) {
  210.  
  211. printf("x1r = %f \n", x1r);
  212. printf("x1u = %f \n", x1u);
  213. printf("x2r = %f \n", x2r);
  214. printf("x2u = %f \n", x2u);
  215. printf("\n");
  216. printf("sr = %f \n", sr);
  217. printf("su = %f \n", su);
  218. printf("rr = %f \n", rr);
  219. printf("ru = %f \n", ru);
  220. printf("ir = %f \n", ir);
  221. printf("iu = %f \n", iu);
  222. }
  223.  
  224. }
  225. //2.
  226. if (a == 0 && b != 0 && d == 0) {
  227. printf("x1r = %f \n", x1r);
  228.  
  229. }
  230.  
  231. //3.
  232. if (a == 0 && b == 0 && (c != 0 || d != 0)) {
  233. printf("Rownanie sprzeczne \n");
  234. }
  235.  
  236. //4.
  237. if (a == 0 && b == 0 && c == 0 && d == 0) {
  238. printf("Rownanie tozsamosciowe \n");
  239. }
  240.  
  241. //5.
  242. if (a == 0 && b != 0 && d != 0) {
  243. printf("x1r = %f \n", x1r);
  244. printf("x1u = %f \n", x1u);
  245. }
  246.  
  247. //6.
  248. if (a != 0 && d != 0) {
  249. float deltar = oblicz_d_r(a, b, c);
  250. float deltau = oblicz_d_u(a, d);
  251. printf("Delta = %f ", deltar);
  252. if (deltau > 0)
  253. printf("+ ");
  254. printf("%fi\n", deltau);
  255. printf("x1r = %f\n", x1r);
  256. printf("x1u = %f\n", x1u);
  257. printf("x2r = %f\n", x2r);
  258. printf("x2u = %f\n", x2u);
  259. printf("x3r = %f\n", x3r);
  260. printf("x3u = %f\n", x3u);
  261. printf("x4r = %f\n", x4r);
  262. printf("x4u = %f\n", x4u);
  263. printf("\n");
  264. printf("sr = %f \n", sr);
  265. printf("su = %f \n", su);
  266. printf("rr = %f \n", rr);
  267. printf("ru = %f \n", ru);
  268. printf("ir = %f \n", ir);
  269. printf("iu = %f \n", iu);
  270. }
  271. }
  272.  
  273. int main() {
  274.  
  275. int a=0, b=0, c=0, d=0;
  276. float deltar=0, deltau=0, pdeltar, pdeltau, x1r, x2r, x3r, x4r, x1u, x2u, x3u, x4u, sr=0, su=0, rr=0, ru=0, ir=0, iu=0;
  277.  
  278. wprowadz_dane(&a,&b,&c,&d);
  279. formatuj_rownanie(a, b, c, d);
  280. deltar=oblicz_d_r(a,b,c);
  281. deltau=oblicz_d_u(a,d);
  282. oblicz_rownanie(a, b, c, d, &x1r, &x1u, &x2r, &x2u, &x3r, &x3u, &x4r, &x4u);
  283. printf("\n\n");
  284. dodaj(deltar, deltau, &x1r, &x1u, &x2r, &x2u, &x3r, &x3u, &x4r, &x4u, &sr, &su);
  285. odejmij(deltar, deltau, &x1r, &x1u, &x2r, &x2u, &x3r, &x3u, &x4r, &x4u, &rr, &ru);
  286. pomnoz(deltar, deltau, &x1r, &x1u, &x2r, &x2u, &x3r, &x3u, &x4r, &x4u, &ir, &iu);
  287. printf("\n\n");
  288. wyswietl_wynik(a, b, c, d, x1r, x1u, x2r, x2u, x3r, x3u, x4r, x4u, sr, su, rr, ru, ir, iu);
  289.  
  290. printf("\n");
  291.  
  292. system("pause");
  293. }
  294.  
  295. //0 u 0 usuwamy zera przy wyswietlaniu
  296. //x1 do x4 do skrot trzeba wszystkie
  297. //oblicz rownanie wysietlamy torzsamosciowe
  298. //biblio
  299. //oblicz rownanie to poprzedni kod
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement