Я пытаюсь реализовать класс BigInteger в C#. Прямо сейчас я застрял в методе isLessThan(HugeInteger b)
. Это мой класс и соответствующие методы.Как сравнить большие целые числа, хранящиеся в массиве int?
class HugeInteger
{
public int[] array = new int[40];
public HugeInteger(String s)
{
this.input(s);
} // end constructor
/*To read a huge integer having upto 40 digits, I am using an integer array to store
these values(input is read as a string for this matter) and later on will override
ToString() for output if needed.*/
private void input(String s)
{
char[] charInteger = s.ToCharArray();
int index = 0;
for (int i = 0; i <= 39 - charInteger.Length; i++)
{
array[i] = 0;
}
for (int i = 39 - charInteger.Length + 1; i <= 39; i++)
{
array[i] = int.Parse(charInteger[index].ToString());
index++;
}
}
public bool isLessThan(HugeInteger that)
{
for (int i = 0; i <= 39; i++)
{
if (this.array[i] < that.array[i])
{
return true;
}
}
return false;
}
}
В принципе, у меня есть 40 цифр, хранящихся в целочисленном массиве для каждого объекта HugeInteger. Но я точно знаю, что мой метод isLessThan(HugeInteger b)
ошибочен и что есть что-то простое, что я пропускаю. Итак, как мне нужно сделать правильный метод isLessthan(HugeInteger b)
?
Edit: Мой метод isLessThan не работает в некоторых случаях, как, если я попытаюсь сравнить «9873» и «75», я получаю true
, но мне нужно false
. Извините за то, что я не понимаю.
Примечание: Я вставляю свои входы (например, 9873 или 75) в виде строки, а затем анализирую их на int в моем методе input
, а затем сохраняю их в целочисленном массиве.
так скажите нам, по крайней мере, что не так или чего вы ожидаете ..? – MethodMan
примечание стороны: не используйте * магические числа *, то есть '40',' 39', но объявляйте константу –
Я предполагаю, что это для домашней работы, иначе в классе C# уже есть класс BigInteger. – juharr