Длинная арифметика (сумма) и ошибка выхода массива за пределы - C#

Узнай цену своей работы

Формулировка задачи:

Всем доброго времени суток, ребят, пишу программу по базовым операциям на длинную арифметику, начал как наверное все начинают с суммы, написал за мин 10, вроде ничего сложного, но у меня почему то вылетает за грань массива, посмотрите пожалуйста, может чей то свежий взгляд найдет ошибку Для удобности напихал комментариев.
private void button1_Click(object sender, EventArgs e)
        {
            string s1, s2;
            int i1, i2;
            int pr1=0;
            int [] ar1 = new int[10]; //массив 1, тут храниться первое длинное число
            int [] ar2 = new int[10]; //массив 2, тут храниться первое длинное число
            int [] ar3 = new int[11]; //массив 3, тут храниться результат суммы.
            s1 = textBox1.Text;
            s2 = textBox2.Text;
            for (int ii = 0; ii < 10; ii++) //читаем текстэдит, и переводим символы в цифры, собственно заполняем масивы
            {
                ar1[ii] = Convert.ToInt32(s1[ii]); 
                ar2[ii] = Convert.ToInt32(s2[ii]);
            }
            for (int hh = 9; hh > (-1) ; hh--)  //исчисление суммы
            {
                if ((ar1[hh] + ar2[hh]) > 10)  //если сумма больше 10, 1 в разряд выше остальное в поточную позицию
                {
                    pr1 = 1;
                    ar3[hh] = ar1[hh] + ar2[hh] + ar3[hh] - 10;
                    ar3[hh - 1] = pr1;
                }
                else
                {
                    ar3[hh] = ar1[hh] + ar2[hh]+ ar3[hh];  //если не больше 10, просто пишем сумму в 3-тий массив
                }
            }
            for (int yy = 1 - pr1; yy < 11; yy++)  // вывод 3-тего массива в 3-тий текстэдит
            {
                textBox3.Text += Convert.ToString(ar3[yy]); 
            }
        }
ругается на
if ((ar1[hh] + ar2[hh]) > 10)
в Шарпе, номера позиций в массиве так же начинаются с 0? если у кого есть что то реализовано из длинной арифметики, прошу поделитесь) Спасибо.

Решение задачи: «Длинная арифметика (сумма) и ошибка выхода массива за пределы»

textual
Листинг программы
                ar3[hh] = ar1[hh] + ar2[hh] + pr; //пишем нужную сумму
                
                if (ar3[hh]> 10)  //если сумма больше 10
                {
                    pr1 = 1;  //1 в разряд выше 
                    ar3[hh] -= 10; //а самму сумму уменьшаем на 10
                }
                else
                {
                    pr1 = 0;
                }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5
Похожие ответы