Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <string>
- #include <iostream>
- #include <conio.h>
- #include <cmath>
- using namespace std;
- string bnm_add(string a, string b)
- {
- string wynik;
- string length; // length == najdłuższy string
- int aln, bln, switcher(0); // switcher -> dodaje 1 w lewej komórce, gdy 199 + 001 = 19: -> 1:0 -> 200
- static_cast<int>(aln) = a.length();
- static_cast<int>(bln) = b.length();
- printf("\na: %i \nb: %i\n\n", aln, bln);
- if (aln > bln)
- { //DODAWANIE ZER : 199 + 1 -> 199 + 001 = 200, (aby 199 + 1 != 299)
- length = a;
- std::reverse(b.begin(), b.end());
- while(true)
- {
- b += '0';
- bln++;
- if (bln == aln)break;
- }
- std::reverse(b.begin(), b.end()); // odwracamy 1 -> 100 -> 001 itd.
- }
- else if (bln > aln)
- {
- length = b;
- reverse(a.begin(), a.end());
- while(true)
- {
- a += '0';
- aln++;
- if (aln == bln)break;
- }
- reverse(a.begin(), a.end());
- }
- else if (aln == bln)
- {
- length = a;
- }
- for (size_t x = length.length() - 1; x >= 0; x--)
- {
- char buffor;
- buffor = a[x] + (b[x] - 48) + switcher; // Wstawianie do bufora wartosci, np. 1 + 2 (buff = 49 + (50-48) + 0)
- if (buffor < 48)
- {
- buffor += 48;
- }
- switcher = 0;
- if (buffor > 57) // przypadek np. 96 + 85
- {
- switcher = 1;
- buffor -= 10;
- }
- wynik += buffor; // dodawanie buffora do wyniku
- buffor = { 0 };
- if (x == 0 && switcher == 1)
- {
- wynik += '1'; // Przechodzenie np. 9 -> 10, 999 -> 1249, dodawanie jedynki po lewej.
- }
- if (x == 0)break;
- }
- reverse(wynik.begin(), wynik.end()); // na koniec odwracamy (wszystko było odwrotnie naliczane)
- printf("\n %s\n+ %s\n____________________________________________________\n %s\n\n", a.c_str(), b.c_str(), wynik.c_str());
- return wynik;
- }
- int main()
- {
- string liczba1;
- string liczba2;
- cin >> liczba1;
- cin >> liczba2;
- string wynik = { 0 };
- wynik = bnm_add(liczba1, liczba2);
- cout << "WYNIK DODAWANIA: " << wynik << endl << "\n";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement