Проблем при една от задачите от тech-модула-Sum Big Numbers(стрингообработка)
Може ли някой да ми каже защо кода ми се чупи при големи числа?
Условието е много просто:
Да се съберат две цели числа и да се изведе тяхната сума без да се използва директно BigInteger и BigDecimal.
При тртият нулев тест към сумата на двете съответни цифри хе се добавя остатъка 1.?!?
Ето го и кода :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Big_Integer1
{
class Program
{
static void Main(string[] args)
{
string word1 = Console.ReadLine();
string word2 = Console.ReadLine();
int maxlength = Math.Max(word1.Length, word2.Length);
string outputword="";
int currentchar;
int remainder = 0;
if (word1.Length<word2.Length)
{
word1 =word1.PadLeft(word2.Length,'0');
}
if(word1.Length > word2.Length)
{
word2 = word2.PadLeft(word1.Length, '0');
}
for (int i = maxlength - 1; i >= 0; i--)
{
currentchar = int.Parse(word1[i].ToString()) + int.Parse(word2[i].ToString());
if (currentchar >= 10)
{
if (i == 0)
{
outputword += reverse(currentchar.ToString());
}
else
{
currentchar -= 10;
remainder = 1;
outputword += currentchar.ToString();
}
}
else
{
if (i == 0)
{
outputword +=reverse((currentchar + remainder).ToString());
Console.WriteLine(reverse(outputword));
return;
}
if (currentchar + remainder >= 10)
{
outputword += (currentchar + remainder - 10);
remainder = 1;
}
else
{
outputword += (currentchar + remainder).ToString();
remainder = 0;
}
}
}
Console.WriteLine(reverse(outputword));
}
static string reverse(string s)
{
string s1="";
for (int i =s.Length-1; i>=0;i--)
{
char currentsimvol = s[i];
s1 += currentsimvol.ToString();
}
return s1;
}
}
}
Мерси за решението.