Need a unique gift idea?
A Pastebin account makes a great Christmas gift
SHARE
TWEET

Untitled

a guest Jun 13th, 2018 50 Never
Upgrade to PRO!
ENDING IN00days00hours00mins00secs
 
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top