Длинная арифметика (сумма) и ошибка выхода массива за пределы - C#
Формулировка задачи:
Всем доброго времени суток, ребят, пишу программу по базовым операциям на длинную арифметику, начал как наверное все начинают с суммы, написал за мин 10, вроде ничего сложного, но у меня почему то вылетает за грань массива, посмотрите пожалуйста, может чей то свежий взгляд найдет ошибку
Для удобности напихал комментариев.
ругается на
в Шарпе, номера позиций в массиве так же начинаются с 0?
если у кого есть что то реализовано из длинной арифметики, прошу поделитесь)
Спасибо.
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)
Решение задачи: «Длинная арифметика (сумма) и ошибка выхода массива за пределы»
textual
Листинг программы
ar3[hh] = ar1[hh] + ar2[hh] + pr; //пишем нужную сумму if (ar3[hh]> 10) //если сумма больше 10 { pr1 = 1; //1 в разряд выше ar3[hh] -= 10; //а самму сумму уменьшаем на 10 } else { pr1 = 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д