MeehoweCK

Untitled

Aug 24th, 2019
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.96 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. // A12b
  6.  
  7. string b(string s, string t)
  8. {
  9.     // sprawdzamy napisy s i t czy poprawnie przechowują liczby
  10.     for(unsigned i = 0; i < s.size(); ++i)
  11.         if(s[i] < '0' || s[i] > '9')
  12.             return "";
  13.  
  14.     for(unsigned i = 0; i < t.size(); ++i)
  15.         if(t[i] < '0' || t[i] > '9')
  16.             return "";
  17.  
  18.     // odwracanie
  19.     string so, to;
  20.     so = "";
  21.     to = "";
  22.     for(int i = s.size() - 1; i >= 0; --i)
  23.     {
  24.         so += s[i];
  25.     }
  26.     for(int i = t.size() - 1; i >= 0; --i)
  27.     {
  28.         to += t[i];
  29.     }
  30.  
  31.     string wynik = "";
  32.     char znak;
  33.     bool flaga;
  34.     int suma;
  35.  
  36.     // jeżeli napis t jest dłuższy, zamieniamy napisy:
  37.     if(t.size() > s.size())
  38.         swap(to, so);
  39.  
  40.     flaga = false;
  41.     for(unsigned i = 0; i < to.size(); ++i)
  42.     {
  43.         if(flaga)
  44.         {
  45.             suma = 1;
  46.             flaga = false;
  47.         }
  48.         else
  49.             suma = 0;
  50.         suma += static_cast<int>(so[i]) + static_cast<int>(to[i]) - 96;
  51.         if(suma > 9)
  52.         {
  53.             flaga = true;
  54.             suma -= 10;
  55.         }
  56.         znak = static_cast<char>(suma + 48);
  57.         wynik += znak;
  58.     }
  59.     // kontynuujemy z napisem s
  60.     for(unsigned i = to.size(); i < so.size(); ++i)
  61.     {
  62.         if(flaga)
  63.         {
  64.             suma = 1;
  65.             flaga = false;
  66.         }
  67.         else
  68.             suma = 0;
  69.         suma += static_cast<int>(so[i]) - 48;
  70.         if(suma > 9)
  71.         {
  72.             flaga = true;
  73.             suma -= 10;
  74.         }
  75.         znak = static_cast<char>(suma + 48);
  76.         wynik += znak;
  77.     }
  78.     if(flaga)
  79.         wynik += '1';
  80.  
  81.     string odwrocona = "";
  82.     for(int i = wynik.size() - 1; i >= 0; --i)
  83.         odwrocona += wynik[i];
  84.     return odwrocona;
  85. }
  86.  
  87. int main()
  88. {
  89.     string liczba = "295562161";
  90.     string druga_liczba = "7897897899";
  91.     cout << b(liczba, druga_liczba) << endl;
  92.     return 0;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment