Advertisement
Guest User

Untitled

a guest
Dec 12th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.79 KB | None | 0 0
  1. #include<stdio.h>
  2.  
  3. struct wymierna {
  4. int licznik;
  5. int mianownik;
  6. };
  7.  
  8. int NWD(int a, int b) {
  9. do {
  10. if (a > b && a != b) {
  11. a = a - b;
  12. } else {
  13. b = b - a;
  14. }
  15. } while (a != b);
  16. return a;
  17. }
  18.  
  19. void roznica(wymierna *a, wymierna *b) {
  20. a->licznik = a->licznik * b->mianownik;
  21. b->licznik = b->licznik * a->mianownik;
  22.  
  23. a->licznik = a->licznik - b->licznik;
  24. a->mianownik = a->mianownik * b->mianownik;
  25.  
  26. a->licznik = a->licznik / NWD(a->licznik, a->mianownik);
  27. a->mianownik = a->mianownik / NWD(a->licznik, a->mianownik);
  28.  
  29. }
  30. void suma(wymierna *a, wymierna *b) {
  31. a->licznik = a->licznik * b->mianownik;
  32. b->licznik = b->licznik * a->mianownik;
  33.  
  34. a->licznik = a->licznik + b->licznik;
  35. a->mianownik = a->mianownik * b->mianownik;
  36.  
  37. a->licznik = a->licznik / NWD(a->licznik, a->mianownik);
  38. a->mianownik = a->mianownik / NWD(a->licznik, a->mianownik);
  39.  
  40. }
  41.  
  42. void iloczyn(wymierna *a, wymierna *b) {
  43. a->licznik = a->licznik * b->licznik;
  44. a->mianownik = a->mianownik * b->mianownik;
  45. }
  46. void iloraz(wymierna *a, wymierna *b) {
  47. a->licznik = a->licznik * b->mianownik;
  48. a->mianownik = a->mianownik * b->licznik;
  49. }
  50.  
  51. int main() {
  52. wymierna a, b;
  53. char znak;
  54.  
  55. a.licznik = 1;
  56. a.mianownik = 1;
  57.  
  58. do {
  59. scanf("%c", &znak);
  60. if (znak == 'x'){
  61. break;
  62. }
  63. scanf(" %i %i\n", &b.licznik, &b.mianownik);
  64. if (znak == '+') {
  65. suma(&a, &b);
  66. } else if (znak == '*') {
  67. iloczyn(&a, &b);
  68. } else if (znak == '/') {
  69. iloraz(&a, &b);
  70. } else if (znak == '-') {
  71. roznica(&a, &b);
  72. }
  73.  
  74. } while (true);
  75. a.licznik = a.licznik / NWD(a.licznik, a.mianownik);
  76. a.mianownik = a.mianownik / NWD(a.licznik, a.mianownik);
  77. printf("%d/%d", a.licznik, a.mianownik);
  78.  
  79. return 0;
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement