Advertisement
Guest User

Untitled

a guest
Jun 13th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.29 KB | None | 0 0
  1. // Projekt.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. //#include "stdafx.h"
  5. #include<iostream>
  6. #include <conio.h>
  7. #include <math.h>
  8.  
  9. using namespace std;
  10.  
  11. int NajwiekszyWspolnyDzielnik(int a, int b) //Wyznaczenie największego wspólnego dzielnika
  12. {
  13. int pom;
  14. while (b != 0) //Kontrola mianownika
  15. {
  16. pom = b;
  17. b = a % b;
  18. a = pom;
  19. }
  20. return a;
  21. }
  22.  
  23. int NajmniejszaWspolnaWielokrotnosc(int a, int b) //Wyznaczenie najmniejszej wspólnej wielokrotności
  24. {
  25. int iloczyn = a * b;
  26.  
  27. do {
  28. if (a>b) a = a - b;
  29. else b = b - a;
  30. } while (a != b);
  31.  
  32. return iloczyn / a;
  33. }
  34.  
  35. void dodawanie(int l1, int l2, int m1, int m2) { // wprowadzam oba ułamki do funkcji
  36.  
  37. int mianownik;
  38. int licznik;
  39.  
  40. mianownik = NajmniejszaWspolnaWielokrotnosc(m1, m2);
  41. //Wyznaczenie najmniejszej wspólnej wielokrotności dla wspólnego mianownika (mianownik wyjściowy)
  42. int pom = licznik = mianownik / m1 * l1 + mianownik / m2 * l2; //Obliczenie licznika wyjściowego
  43.  
  44. licznik /= abs(NajwiekszyWspolnyDzielnik(pom, mianownik)); //Sprowadzenie licznika wyjściowego do najprostszej postaci
  45. mianownik /= abs(NajwiekszyWspolnyDzielnik(pom, mianownik)); //Sprowadzenie mianownika wyjściowego do najprostszej postaci
  46.  
  47. int wartosc = licznik / mianownik;
  48. int reszta = fmod(licznik, mianownik);
  49.  
  50. cout << "Wynik: " << l1 << "/" << m1 << " + " << l2 << "/" << m2 << " = ";
  51.  
  52. if (wartosc != 0)
  53. cout << wartosc;
  54. if (reszta != 0)
  55. cout << " " << abs(reszta) << "/" << abs(mianownik);
  56.  
  57. }
  58. void odejmowanie(int l1, int l2, int m1, int m2) {
  59.  
  60. int mianownik;
  61. int licznik;
  62.  
  63. mianownik = NajmniejszaWspolnaWielokrotnosc(m1, m2); //Wyznaczenie najmniejszej wspólnej wielokrotności dla wspólnego mianownika (mianownik wyjściowy)
  64. int pom = licznik = mianownik / m1 * l1 - mianownik / m2 * l2; //Obliczenie licznika wyjściowego
  65. licznik /= abs(NajwiekszyWspolnyDzielnik(pom, mianownik)); //Sprowadzenie licznika wyjściowego do najprostszej postaci
  66. mianownik /= abs(NajwiekszyWspolnyDzielnik(pom, mianownik)); //Sprowadzenie mianownika wyjściowego do najprostszej postaci
  67. int wartosc = licznik / mianownik;
  68. int reszta = fmod(licznik, mianownik); //Zmienne pomocnicze do wyświetlania całości ułamków i ich reszty
  69.  
  70. cout << "Wynik: " << l1 << "/" << m1 << " - " << l2 << "/" << m2 << " = ";
  71.  
  72.  
  73. if (wartosc != 0)
  74. cout << wartosc;
  75. if (reszta != 0)
  76. cout << " " << abs(reszta) << "/" << abs(mianownik);
  77.  
  78. }
  79.  
  80.  
  81. void mnozenie(int l1, int l2, int m1, int m2) {
  82.  
  83. int licznik;
  84. int mianownik;
  85.  
  86. int licznikpom = licznik = l1 * l2; //Wyznaczenie licznika wynikowego i licznika pomocniczego
  87. mianownik = m1 * m2; //Wyznaczenie mianiwnika wynikowego
  88. licznik /= abs(NajwiekszyWspolnyDzielnik(licznikpom, mianownik)); //Sprowadzenie licznika wynikowego do najprostszej postaci
  89. mianownik /= abs(NajwiekszyWspolnyDzielnik(licznikpom, mianownik)); //Sprowadzenie mianownika wynikowego do najprostszej postaci
  90. int wartosc = licznik / mianownik;
  91. int reszta = fmod(licznik, mianownik); //Zmienne pomocnicze do wyświetlania całości ułamków i ich reszty
  92.  
  93. cout << "Wynik: " << l1 << "/" << m1 << " * " << l2 << "/" << m2 << " = ";
  94.  
  95. if (wartosc != 0)
  96. cout << wartosc;
  97. if (reszta != 0)
  98. cout << " " << abs(reszta) << "/" << abs(mianownik);
  99.  
  100. }
  101.  
  102. void dzielenie(int l1, int l2, int m1, int m2) {
  103.  
  104. int licznik;
  105. int mianownik;
  106.  
  107. int licznikpom = licznik = l1 * m2; //Wyznaczenie licznika wynikowego i licznika pomocniczego
  108. mianownik = m1 * l2;
  109. //Wyznaczenie mianiwnika wynikowego
  110. if (mianownik < 0) { //Dodatkowa kontrola w razie pojawienia się ujemnego mianownika
  111. licznik = -licznik;
  112. }
  113. licznik /= abs(NajwiekszyWspolnyDzielnik(licznikpom, mianownik)); //Sprowadzenie licznika wynikowego do najprostszej postaci
  114. mianownik /= abs(NajwiekszyWspolnyDzielnik(licznikpom, mianownik));
  115. //Sprowadzenie mianownika wynikowego do najprostszej postaci
  116. int wartosc = licznik / abs(mianownik);
  117. int reszta = fmod(licznik, mianownik); //Zmienne pomocnicze do wyświetlania całości ułamków i ich reszty
  118.  
  119. cout << "Wynik: " << l1 << "/" << m1 << " / " << l2 << "/" << m2 << " = ";
  120.  
  121. if (wartosc != 0)
  122.  
  123. cout << wartosc;
  124. if (reszta != 0)
  125. cout << " " << abs(reszta) << "/" << abs(mianownik);
  126. }
  127.  
  128.  
  129.  
  130. int main()
  131. {
  132.  
  133. int licznik1;
  134. int licznik2;
  135. int mianownik1;
  136. int mianownik2; //Liczniki i mianowniki ułamków wejściowych //Kreska ułamkowa przy wprowadzaniu ułamków
  137. char znak; //Znak określający rodzaj wykonywanego działania na ułamkach
  138. int licznik;
  139. int licznikpom;
  140. int mianownik;
  141. bool niemoznadzielicprzez0 = true;
  142.  
  143. cout << "Podaj licznik pierwszego ulamka : ";
  144. cin >> licznik1;
  145.  
  146. cout << "Podaj mianownik pierwszego ulamka : ";
  147. cin >> mianownik1;
  148.  
  149. if (mianownik1 == 0) {
  150. cout << "Nie mozna dzielic przez 0 ";
  151. niemoznadzielicprzez0 = false;
  152. }
  153.  
  154. if (niemoznadzielicprzez0 == true) {
  155. cout << "Podaj znak dzialania na ulamkach [+ - * /]: ";
  156. cin >> znak;
  157.  
  158. cout << "Podaj licznik drugiego ulamka : ";
  159. cin >> licznik2;
  160.  
  161. cout << "Podaj mianownik drugiego ulamka : ";
  162. cin >> mianownik2;
  163. if (mianownik2 == 0) {
  164. cout << "Nie mozna dzielic przez 0 ";
  165. niemoznadzielicprzez0 = false;
  166. }
  167.  
  168. }
  169.  
  170. if (niemoznadzielicprzez0 == true) {
  171. if (znak == '+')
  172. dodawanie(licznik1, licznik2, mianownik1, mianownik2);
  173. else if (znak == '-')
  174. odejmowanie(licznik1, licznik2, mianownik1, mianownik2);
  175. else if (znak == '*')
  176. mnozenie(licznik1, licznik2, mianownik1, mianownik2);
  177. else if (znak == '/') {
  178. if (licznik2 == 0)
  179. cout << " Nie mozna dzielic przez 0" << endl;
  180. else
  181. dzielenie(licznik1, licznik2, mianownik1, mianownik2);
  182.  
  183. }
  184. else
  185. cout << "Podano niewlasciwy znak" << endl;
  186. }
  187.  
  188. cout << endl;
  189. system("pause");
  190.  
  191. return 0;
  192. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement