AnhVan1712

phanSo

Mar 6th, 2020
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.55 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3. struct phanSo
  4. {
  5. int tu;
  6. int mau;
  7. }p1, p2, p;
  8. void nhap (phanSo &p1, phanSo &p2);
  9. void xuat (phanSo &p);
  10. int USCLN (phanSo p);
  11. int rutGon (phanSo &p);
  12. int xuLy (phanSo &p);
  13. void tinhTong (phanSo p1, phanSo p2, phanSo &p);
  14. void tinhHieu (phanSo p1, phanSo p2, phanSo &p);
  15. void tinhTich (phanSo p1, phanSo p2, phanSo &p);
  16. int tinhThuong (phanSo p1, phanSo p2, phanSo &p);
  17. void nhap2 (phanSo &p);
  18. void kiemTraTinhToiGian (phanSo &p);
  19. void kiemTraAmDuong (phanSo &p);
  20. void soSanh (phanSo &p1, phanSo &p2);
  21. void quyDong (phanSo &p1, phanSo &p2);
  22. void main ()
  23. {
  24. printf ("Hay chon so tuong ung voi yeu cau :\n1-Kiem tra tinh toi gian.\n2-Rut gon.\n3-Tinh tong.\n4-Tinh hieu.\n5-Tinh tich.\n6-Tinh thuong.\n7-So sanh.\n8-Kiem tra am duong.\n");
  25. int lenh;
  26. do
  27. {
  28. scanf ("%d",&lenh);
  29. if (lenh<1||lenh>8)
  30. {
  31. printf ("Nhap lhong hop le , hay nhap lai !\n");
  32. }
  33. } while (lenh<1||lenh>8);
  34. if (lenh==1)
  35. {
  36. nhap2(p);
  37. kiemTraTinhToiGian (p);
  38. }
  39. if (lenh==2)
  40. {
  41. nhap2(p);
  42. xuat (p);
  43. }
  44. if (lenh==3)
  45. {
  46. nhap (p1,p2);
  47. tinhTong (p1,p2,p);
  48. xuat (p);
  49. }
  50. if (lenh==4)
  51. {
  52. nhap (p1,p2);
  53. tinhHieu (p1,p2,p);
  54. xuat (p);
  55. }
  56. if (lenh==5)
  57. {
  58. nhap (p1,p2);
  59. tinhTich (p1,p2,p);
  60. xuat (p);
  61. }
  62. if (lenh==6)
  63. {
  64. nhap (p1,p2);
  65. int kt=tinhThuong (p1,p2,p);
  66. if (kt==0)
  67. {
  68. printf ("Khong chia duoc !\n");
  69. } else
  70. {
  71. xuat (p);
  72. }
  73. }
  74. if (lenh==7)
  75. {
  76. nhap(p1,p2);
  77. soSanh (p1,p2);
  78. }
  79. if (lenh==8)
  80. {
  81. nhap2(p);
  82. kiemTraAmDuong(p);
  83. }
  84.  
  85. }
  86. void soSanh (phanSo &p1, phanSo &p2)
  87. {
  88. quyDong (p1,p2);
  89. if (p1.tu>p2.tu)
  90. {
  91. printf ("phan so thu nhat lon hon\n");
  92. } else
  93. {
  94. if (p1.tu==p2.tu)
  95. {
  96. printf ("Hai phan so bang nhau\n");
  97. } else
  98. {
  99. printf ("Phan so thu hai lon hon\n");
  100. }
  101. }
  102. }
  103. void quyDong (phanSo &p1, phanSo &p2)
  104. {
  105. p1.tu=p1.tu*p2.mau;
  106. p2.tu=p2.tu*p1.mau;
  107. }
  108. void kiemTraAmDuong (phanSo &p)
  109. {
  110. if ((p.tu<0&&p.mau>0)||(p.tu>0&&p.mau<0))
  111. {
  112. printf ("Am !\n");
  113. } else
  114. {
  115. if (p.tu==0)
  116. {
  117. printf ("Khong am khong duong !\n");
  118. } else
  119. {
  120. printf ("Duong !\n");
  121. }
  122. }
  123. }
  124. void nhap2 (phanSo &p)
  125. {
  126. printf ("Nhap lan luot tu va mau cua phan so :\n");
  127. do
  128. {
  129. scanf ("%d%d",&p.tu, &p.mau);
  130. if (p.mau==0)
  131. {
  132. printf ("Phan so khong hop le hay nhap lai !\n");
  133. }
  134. } while (p.mau==0);
  135. }
  136. void kiemTraTinhToiGian (phanSo &p)
  137. {
  138. xuLy (p);
  139. if ((p.tu==0)||((p.tu==1)&&(p.mau==1)))
  140. {
  141. printf ("toi gian\n");
  142. } else
  143. {
  144. int kt=USCLN (p);
  145. if (kt==1)
  146. {
  147. printf ("toi gian \n");
  148. } else
  149. {
  150. printf ("khong toi gian \n");
  151. }
  152. }
  153. }
  154. int tinhThuong (phanSo p1, phanSo p2, phanSo &p)
  155. {
  156. if (p2.tu==0)
  157. {
  158. return 0;
  159. } else
  160. {
  161. p.mau=p1.mau*p2.tu;
  162. p.tu=p1.tu*p2.mau;
  163. }
  164. return 1;
  165. }
  166. void tinhTich (phanSo p1, phanSo p2, phanSo &p)
  167. {
  168. p.mau=p1.mau*p2.mau;
  169. p.tu=p1.tu*p2.tu;
  170. }
  171. void tinhHieu (phanSo p1, phanSo p2, phanSo &p)
  172. {
  173. p.mau=p1.mau*p2.mau;
  174. p.tu=p1.tu*p2.mau-p2.tu*p1.mau;
  175. }
  176. void tinhTong (phanSo p1, phanSo p2, phanSo &p)
  177. {
  178. p.mau=p1.mau*p2.mau;
  179. p.tu=p1.tu*p2.mau+p2.tu*p1.mau;
  180. }
  181. int xuLy (phanSo &p)
  182. {
  183. if (p.tu==0)
  184. {
  185. return -2;
  186. }
  187. if ((p.tu<0)&&(p.mau<0))
  188. {
  189. p.tu=abs (p.tu);
  190. p.mau=abs (p.mau);
  191. return 0;
  192. } else
  193. {
  194. if (p.tu<0)
  195. {
  196. p.tu=abs(p.tu);
  197. return 1;
  198. } else
  199. {
  200. if (p.mau<0)
  201. {
  202. p.mau=abs (p.mau);
  203. return 1;
  204. }
  205. }
  206. }
  207. return 0;
  208. }
  209. int USCLN (phanSo p)
  210. {
  211. int a=p.tu;
  212. int b=p.mau;
  213. if (a==b)
  214. {
  215. return 0;
  216. } else
  217. {
  218. while (a!=b)
  219. {
  220. if (a>b)
  221. {
  222. a=a-b;
  223. } else
  224. {
  225. b=b-a;
  226. }
  227. }
  228. }
  229. return a;
  230. }
  231. int rutGon (phanSo &p)
  232. {
  233. int kt=xuLy (p);
  234. if (kt==-2)
  235. {
  236. return -2;
  237. }
  238. int a=USCLN (p);
  239. if (a==0)
  240. {
  241. if (kt==1)
  242. {
  243. return -1;
  244. } else
  245. {
  246. return 0;
  247. }
  248. } else
  249. {
  250. if (kt==0)
  251. {
  252. p.tu=p.tu/a;
  253. p.mau=p.mau/a;
  254. } else
  255. {
  256. p.tu=-p.tu/a;
  257. p.mau=p.mau/a;
  258. }
  259. }
  260. return 1;
  261. }
  262. void nhap (phanSo &p1, phanSo &p2)
  263. {
  264. printf ("Nhap lan luot tu va mau cua 2 phan so :\n");
  265. do
  266. {
  267. scanf ("%d%d%d%d",&p1.tu,&p1.mau,&p2.tu,&p2.mau);
  268. if (p1.mau==0||p2.mau==0)
  269. {
  270. printf ("Phan so khong hop le hay nhap lai !\n ");
  271. }
  272. } while (p1.mau==0||p2.mau==0);
  273. }
  274. void xuat (phanSo &p)
  275. {
  276. int kt=rutGon(p);
  277. if (kt==-2)
  278. {
  279. printf ("0");
  280. } else
  281. {
  282. if (kt==0)
  283. {
  284. printf ("1 ");
  285. } else
  286. {
  287. if (kt==-1)
  288. {
  289. printf ("-1");
  290. } else
  291. {
  292. if (p.mau==1)
  293. {
  294. printf ("%d ",p.tu);
  295. } else
  296. {
  297. printf ("%d/%d ",p.tu,p.mau);
  298. }
  299. }
  300. }
  301. }
  302. }
Advertisement
Add Comment
Please, Sign In to add comment