Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Новые рефераты » Російське народне множення

Реферат Російське народне множення





і, десятки, сотні, і т.д.).

Крім того, всі операції будуть реалізовані таким чином, що після виконання будь-якої з них лідируючі нулі (тобто зайві нулі на початку числа) відсутні (зрозуміло, в припущенні, що перед кожною операцією лідируючі нулі також відсутні). Слід зазначити, що в представленій реалізації для числа нуль коректно підтримуються відразу два подання: порожній вектор чисел, і вектор чисел, що містить єдиний елемент - нуль.

невід'ємне ціле число N довжини n так само можна представити у вигляді:


,


де Base - основа системи числення, всі коефіцієнти.

Наприклад, число 12345 10 в цій інтерпретації буде має вигляд:

.


Довге число зберігається в масиві, де i-й елемент відповідає коефіцієнту числа при Base i. Як приклад, розглянемо масив для 12345 10: (5, 4, 3, 2, 1). Як видно, цифри зберігаються в зворотному порядку. Основа системи числення Base залежить від максимального розміру базового типу даних на комп'ютері і вибирається, виходячи з таких міркувань:

. Основа повинна підходити під один з базових типів даних.

. Base має бути якомога більше, щоб зменшити розмір уявлення довгого числа і збільшити швидкість операцій з ними, але досить малого розміру, щоб всі операції з коефіцієнтами використовували базовий тип даних.

. Для зручності можна вибрати Base як ступінь 10 (висновок інформації, налагодження). Base - ступінь двійки дозволяє проводити швидкі операції на низькому рівні.

У своїй програмі я використовувала інший метод для представлення великих чисел. Записувала числа типом string:


public void long_addition (string first_summand, string second_summand, ref string sum)

{

int dop=0;

sum=«»;

reverse (first_summand, ref first_summand);

reverse (second_summand, ref second_summand);

if (first_summand.Length> second_summand.Length)

{

second_summand=add_0 (first_summand, second_summand);

}

else

{

first_summand=add_0 (second_summand, first_summand);

}

for (int i=0; i

{

sum +=(int.Parse (first_summand [i]. ToString ()) + int.Parse (second_summand [i]. ToString ()) + dop)% 10;

dop=(int.Parse (first_summand [i]. ToString ()) + int.Parse (second_summand [i]. ToString ()) + dop) / 10;

if (i == first_summand.Length - 1 && dop!=0)

{

sum +=dop;

}

}

reverse (sum, ref sum);

}


5. Операції над довгими числами


Насамперед, необхідно уточнити інтерфейс. Можна визначити оператори як частини класу, і це буде досить зручно у використанні. Однак при обчисленні C=A + B оператор не зможе отримати доступ до числа C. Тому доведеться створювати тимчасове ч...


Назад | сторінка 4 з 7 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Основні системи побудови мережі 10 Base T
  • Реферат на тему: Base and Superstructure
  • Реферат на тему: Визначення числа підприємств, обсягу продукції, середньооблікового числа пр ...
  • Реферат на тему: Знаходження оптимального числа листів фанери и Вирізання потрібного числа з ...
  • Реферат на тему: Закріплення знань учнів з теми: "Числа 1-10 та число 0"