Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Projekt.cpp : Defines the entry point for the console application.
- //
- //#include "stdafx.h"
- #include<iostream>
- #include <conio.h>
- #include <math.h>
- using namespace std;
- int NajwiekszyWspolnyDzielnik(int a, int b) //Wyznaczenie największego wspólnego dzielnika
- {
- int pom;
- while (b != 0) //Kontrola mianownika
- {
- pom = b;
- b = a % b;
- a = pom;
- }
- return a;
- }
- int NajmniejszaWspolnaWielokrotnosc(int a, int b) //Wyznaczenie najmniejszej wspólnej wielokrotności
- {
- int iloczyn = a * b;
- do {
- if (a>b) a = a - b;
- else b = b - a;
- } while (a != b);
- return iloczyn / a;
- }
- void dodawanie(int l1, int l2, int m1, int m2) { // wprowadzam oba ułamki do funkcji
- int mianownik;
- int licznik;
- mianownik = NajmniejszaWspolnaWielokrotnosc(m1, m2);
- //Wyznaczenie najmniejszej wspólnej wielokrotności dla wspólnego mianownika (mianownik wyjściowy)
- int pom = licznik = mianownik / m1 * l1 + mianownik / m2 * l2; //Obliczenie licznika wyjściowego
- licznik /= abs(NajwiekszyWspolnyDzielnik(pom, mianownik)); //Sprowadzenie licznika wyjściowego do najprostszej postaci
- mianownik /= abs(NajwiekszyWspolnyDzielnik(pom, mianownik)); //Sprowadzenie mianownika wyjściowego do najprostszej postaci
- int wartosc = licznik / mianownik;
- int reszta = fmod(licznik, mianownik);
- cout << "Wynik: " << l1 << "/" << m1 << " + " << l2 << "/" << m2 << " = ";
- if (wartosc != 0)
- cout << wartosc;
- if (reszta != 0)
- cout << " " << abs(reszta) << "/" << abs(mianownik);
- }
- void odejmowanie(int l1, int l2, int m1, int m2) {
- int mianownik;
- int licznik;
- mianownik = NajmniejszaWspolnaWielokrotnosc(m1, m2); //Wyznaczenie najmniejszej wspólnej wielokrotności dla wspólnego mianownika (mianownik wyjściowy)
- int pom = licznik = mianownik / m1 * l1 - mianownik / m2 * l2; //Obliczenie licznika wyjściowego
- licznik /= abs(NajwiekszyWspolnyDzielnik(pom, mianownik)); //Sprowadzenie licznika wyjściowego do najprostszej postaci
- mianownik /= abs(NajwiekszyWspolnyDzielnik(pom, mianownik)); //Sprowadzenie mianownika wyjściowego do najprostszej postaci
- int wartosc = licznik / mianownik;
- int reszta = fmod(licznik, mianownik); //Zmienne pomocnicze do wyświetlania całości ułamków i ich reszty
- cout << "Wynik: " << l1 << "/" << m1 << " - " << l2 << "/" << m2 << " = ";
- if (wartosc != 0)
- cout << wartosc;
- if (reszta != 0)
- cout << " " << abs(reszta) << "/" << abs(mianownik);
- }
- void mnozenie(int l1, int l2, int m1, int m2) {
- int licznik;
- int mianownik;
- int licznikpom = licznik = l1 * l2; //Wyznaczenie licznika wynikowego i licznika pomocniczego
- mianownik = m1 * m2; //Wyznaczenie mianiwnika wynikowego
- licznik /= abs(NajwiekszyWspolnyDzielnik(licznikpom, mianownik)); //Sprowadzenie licznika wynikowego do najprostszej postaci
- mianownik /= abs(NajwiekszyWspolnyDzielnik(licznikpom, mianownik)); //Sprowadzenie mianownika wynikowego do najprostszej postaci
- int wartosc = licznik / mianownik;
- int reszta = fmod(licznik, mianownik); //Zmienne pomocnicze do wyświetlania całości ułamków i ich reszty
- cout << "Wynik: " << l1 << "/" << m1 << " * " << l2 << "/" << m2 << " = ";
- if (wartosc != 0)
- cout << wartosc;
- if (reszta != 0)
- cout << " " << abs(reszta) << "/" << abs(mianownik);
- }
- void dzielenie(int l1, int l2, int m1, int m2) {
- int licznik;
- int mianownik;
- int licznikpom = licznik = l1 * m2; //Wyznaczenie licznika wynikowego i licznika pomocniczego
- mianownik = m1 * l2;
- //Wyznaczenie mianiwnika wynikowego
- if (mianownik < 0) { //Dodatkowa kontrola w razie pojawienia się ujemnego mianownika
- licznik = -licznik;
- }
- licznik /= abs(NajwiekszyWspolnyDzielnik(licznikpom, mianownik)); //Sprowadzenie licznika wynikowego do najprostszej postaci
- mianownik /= abs(NajwiekszyWspolnyDzielnik(licznikpom, mianownik));
- //Sprowadzenie mianownika wynikowego do najprostszej postaci
- int wartosc = licznik / abs(mianownik);
- int reszta = fmod(licznik, mianownik); //Zmienne pomocnicze do wyświetlania całości ułamków i ich reszty
- cout << "Wynik: " << l1 << "/" << m1 << " / " << l2 << "/" << m2 << " = ";
- if (wartosc != 0)
- cout << wartosc;
- if (reszta != 0)
- cout << " " << abs(reszta) << "/" << abs(mianownik);
- }
- int main()
- {
- int licznik1;
- int licznik2;
- int mianownik1;
- int mianownik2; //Liczniki i mianowniki ułamków wejściowych //Kreska ułamkowa przy wprowadzaniu ułamków
- char znak; //Znak określający rodzaj wykonywanego działania na ułamkach
- int licznik;
- int licznikpom;
- int mianownik;
- bool niemoznadzielicprzez0 = true;
- cout << "Podaj licznik pierwszego ulamka : ";
- cin >> licznik1;
- cout << "Podaj mianownik pierwszego ulamka : ";
- cin >> mianownik1;
- if (mianownik1 == 0) {
- cout << "Nie mozna dzielic przez 0 ";
- niemoznadzielicprzez0 = false;
- }
- if (niemoznadzielicprzez0 == true) {
- cout << "Podaj znak dzialania na ulamkach [+ - * /]: ";
- cin >> znak;
- cout << "Podaj licznik drugiego ulamka : ";
- cin >> licznik2;
- cout << "Podaj mianownik drugiego ulamka : ";
- cin >> mianownik2;
- if (mianownik2 == 0) {
- cout << "Nie mozna dzielic przez 0 ";
- niemoznadzielicprzez0 = false;
- }
- }
- if (niemoznadzielicprzez0 == true) {
- if (znak == '+')
- dodawanie(licznik1, licznik2, mianownik1, mianownik2);
- else if (znak == '-')
- odejmowanie(licznik1, licznik2, mianownik1, mianownik2);
- else if (znak == '*')
- mnozenie(licznik1, licznik2, mianownik1, mianownik2);
- else if (znak == '/') {
- if (licznik2 == 0)
- cout << " Nie mozna dzielic przez 0" << endl;
- else
- dzielenie(licznik1, licznik2, mianownik1, mianownik2);
- }
- else
- cout << "Podano niewlasciwy znak" << endl;
- }
- cout << endl;
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement