Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <conio.h>
- using namespace std;
- string odwrotna(string tekst)
- {
- string wynik = "";
- for(int i = tekst.size() - 1; i >= 0; --i)
- {
- wynik += tekst[i];
- }
- return wynik;
- }
- string suma(string a, string b)
- {
- int wynik[100];
- bool flaga = false;
- int cyfra;
- unsigned i;
- a = odwrotna(a);
- b = odwrotna(b);
- if(a.size() < b.size())
- for(i = a.size(); i < b.size(); ++i)
- a += '0';
- else if(b.size() < a.size())
- for(i = b.size(); i < a.size(); ++i)
- b += '0';
- for(i = 0; i < a.size(); ++i)
- {
- cyfra = a[i] + b[i] - 96;
- if(flaga)
- ++cyfra;
- if(cyfra > 9)
- {
- cyfra -= 10;
- flaga = true;
- }
- else
- flaga = false;
- wynik[i] = cyfra;
- }
- string result = "";
- for(unsigned j = 0; j < i; ++j)
- result += wynik[j] + 48;
- if(flaga)
- result += '1';
- return odwrotna(result);
- }
- bool druga_wieksza(string a, string b)
- {
- if(a.size() > b.size())
- return false;
- if(a.size() < b.size())
- return true;
- for(unsigned i = 0; i < a.size(); ++i)
- {
- if(a[i] > b[i])
- return false;
- if(a[i] < b[i])
- return true;
- }
- return false;
- }
- string roznica(string a, string b)
- {
- int wynik[100];
- bool flaga = false;
- bool znak_minus = false;
- int cyfra;
- unsigned i;
- if(a == b)
- return "0";
- a = odwrotna(a);
- b = odwrotna(b);
- if(druga_wieksza(a, b))
- {
- swap(a, b);
- znak_minus = true;
- }
- if(a.size() < b.size())
- for(i = a.size(); i < b.size(); ++i)
- a += '0';
- else if(b.size() < a.size())
- for(i = b.size(); i < a.size(); ++i)
- b += '0';
- for(i = 0; i < a.size(); ++i)
- {
- cyfra = a[i] - b[i];
- if(flaga)
- --cyfra;
- if(cyfra < 0)
- {
- cyfra += 10;
- flaga = true;
- }
- else
- flaga = false;
- wynik[i] = cyfra;
- }
- string result = "";
- for(unsigned j = 0; j < i; ++j)
- result += wynik[j] + 48;
- if(result[result.size() - 1] == '0')
- result.erase(result.size() - 1, 1);
- if(znak_minus)
- result += '-';
- return odwrotna(result);
- }
- string iloczyn(string a, string b)
- {
- int wynik[100] = {0};
- int flaga = 0;
- int cyfra;
- unsigned i, j;
- a = odwrotna(a);
- b = odwrotna(b);
- if(a.size() < b.size())
- for(i = a.size(); i < b.size(); ++i)
- a += '0';
- else if(b.size() < a.size())
- for(i = b.size(); i < a.size(); ++i)
- b += '0';
- for(i = 0; i < b.size(); ++i)
- {
- for(j = 0; j < a.size(); ++j)
- {
- cyfra = (a[j] - 48) * (b[i] - 48) + flaga;
- if(cyfra > 9)
- {
- flaga = cyfra / 10;
- cyfra -= (10 * flaga);
- }
- else
- flaga = 0;
- wynik[i + j] += cyfra;
- }
- if(flaga > 0)
- wynik[i + j + 1] += flaga;
- }
- flaga = 0;
- for(i = 0; i < 100; ++i)
- {
- wynik[i] += flaga;
- if(wynik[i] > 9)
- {
- flaga = wynik[i] / 10;
- wynik[i] -= (10 * flaga);
- }
- else
- flaga = 0;
- }
- bool flague = true;
- string result = "";
- for(int k = 99; k >= 0; --k)
- {
- if(flague)
- {
- if(wynik[k] == 0)
- continue;
- else
- flague = false;
- }
- result += (wynik[k] + 48);
- }
- return result;
- }
- int main()
- {
- string a, b;
- cin >> a >> b;
- cout << "suma: " << suma(a, b) << endl;
- cout << "roznica: " << roznica(a, b) << endl;
- cout << "iloczyn: " << iloczyn(a, b) << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement