Witam, mam problem ze zrozumieniem kodu. Znalazłem taki o to kawałek kodu:
#include <iostream>
#include <string>
using namespace std;
// funkcja zwraca ciąg znaków będący wynikiem dodawania argumentów
//----------------------------------------------------------------
string dodaj(string a, string b)
{
// wyznaczamy pozycję ostatniej cyfry w obu łańcuchach
int pa = a.length() - 1;
int pb = b.length() - 1;
// zerujemy łańcuch wynikowy
string wynik = "";
// na początku przeniesienie wynosi 0
int p = 0;
// w pętli dodajemy kolejne cyfry a i b
while(pa >= 0 || pb >= 0)
{
// wyliczamy wartości cyfr w łańcuchach a i b
int ca, cb, w;
if(pa >= 0) ca = a[pa] - **48**; else ca = 0;
if(pb >= 0) cb = b[pb] - **48**; else cb = 0;
// obliczamy sumę cyfr z a i b, uwzględniając przeniesienie
w = ca + cb + p;
// do łańcucha wynikowego wstawiamy ostatnią cyfrę w
wynik = "0" + wynik;
wynik[0] = **48** + w % 10;
// obliczamy przeniesienie do następnej kolumny
p = w / 10;
// modyfikujemy indeksy kolumn w łańcuchu a i b
pa--; pb--;
}
// jeśli przeniesienie wynosi 1, dopisujemy cyfrę 1 do wyniku
if(p) wynik = "1" + wynik;
return wynik;
}
int main()
{
string a, b;
cin >> a >> b;
cout << a << " + " << b << " = " << dodaj(a,b) << endl;
return 0;
}
Ogólnie jak działa program nie jest dla mnie problemem, jednak nie mam pojęcia skąd w zaznaczonych gwiazdkami miejscach liczba 48? Program ma dodawać dwie dowolnej długości liczby, uwzględniając przeniesienie.
Z góry dziękuje za pomoc, pozdrawiam.