Dzień dobry, od jakiegoś czasu próbuję napisać program do sumowania liczb naturalnych, przy użyciu tablic.
Generalnie zadanie udało mi się wykonać i wszystko wydawało się być w porządku, dopóki sprawdzałem go w Visual Studio 2015.
Natomiast w code blocks i na ideone po wprowadzeniu danych ostatnia cyfra jest zwiększana o 1, z niewiadomego mi powodu. Bardzo bym prosił kogoś aby mnie troszeczkę oświecił.
Pozdrawiam.
#include <iostream>
#include <string>
using namespace std;
string liczba1;
string liczba2;
string bufor1;
int bufor2;
int testy;
int main()
{
cin >> testy;
for (int i = 0; i < testy; i++)
{
cin >> liczba1;
cin >> liczba2;
int length1 = liczba1.length();
int length2 = liczba2.length();
if (length2 > length1)
{
bufor1 = liczba1;
liczba1 = liczba2;
liczba2 = bufor1;
bufor2 = length1;
length1 = length2;
length2 = bufor2;
}
int* suma;
suma = new int[length1];
for (int i = 0; i < length2; i++)
{
suma[length1 - 1 - i] = liczba1[length1 - 1 - i] - 48 + liczba2[length2 - 1 - i] - 48;
}
if (length2 < length1)
for (int i = 0; i < length1 - length2; i++)
{
suma[length1 - 1 - length2 - i] = liczba1[length1 - 1 - length2 - i] - 48;
}
for (int i = length1; i > 0; i--)
{
if (suma[i] > 9)
{
suma[i] = suma[i] - 10;
suma[i - 1] = suma[i - 1] + 1;
}
}
for (int i = 0; i < length1; i++)
{
cout << suma[i];
}
cout << endl;
delete[] suma;
}
return 0;
}