Помощь - Поиск - Пользователи - Календарь
Полная версия: Реализация числовых структур данных
Форум «Всё о Паскале» > Разработка ПО, алгоритмы, общие вопросы > Алгоритмы
Calling
Здравствуйте! Задали нам лабу, которую я никак не могу понять как делать. Задание такое: Найти остаток от деления одного длинного целого на другое. При этом нельзя использовать базовые типы (арифметика многократной точности) и программную реализацию рациональных чисел.
Я даже понятия не имею с чего начинать. Похожее задание делал одногруппник (только там с умножением 2х длинных целых), работал со строками. Помогите пожалуйста с этим заданием если сможете unsure.gif
andriano
Начать следует с того, что более конкретно сформулировать, чем можно пользоваться и чем - нельзя.
Создать программу, не использующую ни одной переменной (а как еще можно воспринимать запрет на ВСЕ базовые типы?), достаточно проблематично. Без базового числового типа не сделаешь даже цикл.
Calling
Цитата(andriano @ 14.02.2008 8:42) *

Начать следует с того, что более конкретно сформулировать, чем можно пользоваться и чем - нельзя.
Создать программу, не использующую ни одной переменной (а как еще можно воспринимать запрет на ВСЕ базовые типы?), достаточно проблематично. Без базового числового типа не сделаешь даже цикл.

задание звучит так: Лабораторная работа включает задания по программной реализации точных вычислений, которые не могут быть непосредственно выполнены с использованием базовых типов алгоритмического языка (арифметика многократной точности) и программной реализации рациональных чисел. При реализации заданных структур данных можно использовать любые базовые типы алгоритмического язык. И вариант задания, который я писала выше.
volvo
В таком случае тебе надо просто найти в FAQ-е тему Длинная Арифметика, и воспользоваться тем, что там написано. Ни с одним пунктом твоего задания это не будет конфликтовать...
Calling
ок спасибо, поищу
andriano
Цитата(Calling @ 14.02.2008 11:39) *

задание звучит так:
...
Вот теперь вполне вменяемое задание - никаких противоестественных ограничений на использование типов.
Цитата
И вариант задания, который я писала выше.
Увы, первоначально описанный "вариант" имеет очень мало общего с тем, что приведено позже.

Ну а самый разумный совет по данной теме уже был приведен: искать либо здесь, либо поисковыми системами по словосочетанию "длинная арифметика".
Calling
Цитата(andriano @ 14.02.2008 22:29) *

Увы, первоначально описанный "вариант" имеет очень мало общего с тем, что приведено позже.


Я имела ввиду вариант: Найти остаток от деления одного длинного целого на другое.
Почитала FAQ, но не совсем поняла как делать задание. Пожалуйста, не могли бы вы хотя б набросок сделать этой проги. Извините за такую наглость, просто я дуб-дерево unsure.gif
andriano
Деревья программы не пишут.
Не нужно им это.
Если тебе нужно, значит, ты не дерево, и надо затратить хоть немного собственных усилий для того, чтобы что-то получилось.
Основная идея достаточно проста и полностью совпадает с тем, как мы проводим вычисления с помощью карандаша и бумаги.
Числа мы представляем в виде набора цифр. Для любой пары цифр нам известны таблица умножения и таблица сложения. Пользуясь этими таблицами, а также известным алгоритмом (например в столбик), мы можем проводить вычисления над многозначными числами. Точно так же происходят вычисления и в длинной арифметике - число представляется массивом, а каждый элемент массива - своеобразная цифра. Если в качестве длинных чисел использовать строки, то один знак - десятичная цифра. Если пользоваться примером из FAQ, каждое число массива - это 10000-чная цифра, т.е. цифра, значение которой лежит в диапазоне от 0 до 9999.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.