MaterStudiorum.ru - домашняя страничка студента.
Минимум рекламы - максимум информации.


Авиация и космонавтика
Административное право
Арбитражный процесс
Архитектура
Астрология
Астрономия
Банковское дело
Безопасность жизнедеятельности
Биографии
Биология
Биология и химия
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
Валютные отношения
Ветеринария
Военная кафедра
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Деньги и кредит
Естествознание
Журналистика
Зоология
Издательское дело и полиграфия
Инвестиции
Иностранный язык
Информатика
Информатика, программирование
Исторические личности
История
История техники
Кибернетика
Коммуникации и связь
Компьютерные науки
Косметология
Краткое содержание произведений
Криминалистика
Криминология
Криптология
Кулинария
Культура и искусство
Культурология
Литература и русский язык
Литература(зарубежная)
Логика
Логистика
Маркетинг
Математика
Медицина, здоровье
Медицинские науки
Международное публичное право
Международное частное право
Международные отношения
Менеджмент
Металлургия
Москвоведение
Музыка
Муниципальное право
Налоги, налогообложение
Наука и техника
Начертательная геометрия
Новейшая история, политология
Оккультизм и уфология
Остальные рефераты
Педагогика
Полиграфия
Политология
Право
Право, юриспруденция
Предпринимательство
Промышленность, производство
Психология
Психология, педагогика
Радиоэлектроника
Разное
Реклама
Религия и мифология
Риторика
Сексология
Социология
Статистика
Страхование
Строительные науки
Строительство
Схемотехника
Таможенная система
Теория государства и права
Теория организации
Теплотехника
Технология
Товароведение
Транспорт
Трудовое право
Туризм
Уголовное право и процесс
Управление
Управленческие науки
Физика
Физкультура и спорт
Философия
Финансовые науки
Финансы
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
Экология
Экономика
Экономико-математическое моделирование
Экономическая география
Экономическая теория
Эргономика
Этика
Юриспруденция
Языковедение
Языкознание, филология
    Начало -> Информатика, программирование -> Задачи на длинную арифметику

Название:Задачи на длинную арифметику
Просмотров:90
Раздел:Информатика, программирование
Ссылка:none(0 KB)
Описание:достаточно популярную в программировании задачу на работу с "длинными" числами. Реально с "астрономическими" или "микроскопическими" числами приходится сталкиваться не так уж и часто.

Часть полного текста документа:

Задачи на длинную арифметику
    Рассмотрим достаточно популярную в программировании задачу на работу с "длинными" числами. Реально с "астрономическими" или "микроскопическими" числами приходится сталкиваться не так уж и часто. Тем не менее, упражнения, рассматриваемые в этой публикации, могут послужить хорошей тренировкой в области программирования и занять достойное место в классах с углубленным изучением информатики или на кружках по программированию. Алгоритмы, представленные ниже, записаны на Turbo Pascal, версия7.0. При желании или необходимости они могут легко быть адаптированы к любой другой программной среде.
    Диапазон представления целых чисел (Integer, Word, LongInt) ограничен, о чем не раз уже говорилось (впрочем, для действительных величин это замечание тоже актуально). Поэтому при решении задач всегда приходится действовать с оглядкой, - как бы не допустить возникновения ошибки выхода за диапазон или переполнения. Например, вычисляя факториал (n!=1*2*3*...*n), в диапазоне представления величин типа Integer удастся правильно получить только 7!=5040, а в диапазоне представления типа LongInt - 12!=479001600. Для больших значений, конечно, можно использовать действительные типы данных, но это уже не гарантирует точного результата. Поэтому полезно для получения точных значений при действиях с многозначными числами разработать другие способы представления таких чисел, алгоритмы выполнения арифметических и других операций, процедуры ввода и вывода результатов и т.д.
    Покажем реализацию решения такого рода задач на примере умножения одного многозначного числа на другое. Именно эта арифметическая операция наиболее часто используется при решении других задач.
    Наиболее естественным способом представления многозначного числа является запись каждого его разряда в виде отдельного элемента линейного массива (или списка, где память под цифру будет отводиться по мере надобности, в то время как в массиве приходится заранее задавать максимальное количество элементов в нем). Пусть (для удобства дальнейших действий) разряды "длинного" числа при записи в массив нумеруются с единицы, начиная с разряда единиц, т.е. цифра из разряда единиц - элемент массива с номером один, цифра из разряда десятков - элемент массива с номером два и т.д. Определим для работы с "длинными" неотрицательными числами тип данных:
    Const MNax = 2000;
    Type Digit = 0..9;
    DlChislo = Array[1..Nmax] Of Digit;
    Для решения поставленной задачи необходимо уметь выполнять следующие действия:
    1) ввод "длинного" числа;
    2) собственно умножение двух "длинных" чисел;
    3) вывод "длинного" числа;
    4) определение количества цифр в записи числа.
    Каждую из подзадач реализуем в виде отдельной подпрограммы. Начнем с ввода. Ввести большое число целесообразно в виде строки, а в дальнейшем преобразовать в массив цифр. В процедуре учтен указанный выше способ размещения "длинного" числа в массиве, т.е. с точки зрения пользователя число записывается как бы в обратном порядке.
    {Процедура преобразования длинного числа, записанного
    в виде строки, в массив цифр; переменная OK принимает значение True,
    если в записи числа нет посторонних символов, отличных от десятичных
    цифр, иначе - false}
    Procedure Translate(S : String; Var A : DlChislo; Var OK : Boolean);
    Var I : Word;
    Begin
    Zero(A); I := Length(S); OK := True;
    While (I >= 1) And OK Do
    Begin
    If S[I] In ['0'..'9']
    Then A[Length(S)- I + 1]:= Ord(S[I]) - 48
    Else OK := False; I := I - 1
    End
    End;
    В процедуре вызывается подпрограмма Zero(A), назначение которой - запись нуля в каждый разряд длинного числа. ............






Похожие работы:

Название:Составить программу обучения работе с клавиатурой
Просмотров:140
Описание: СОВРЕМЕННЫЙ ГУМАНИТАРНЫЙ УНИВЕРСИТЕТ КУРСОВАЯ РАБОТА По дисциплине: «Алгоритмические языки и программирование» На тему: «Составить программу обучения работе с клавиатурой

Название:Составить программу на языке Turbo Pascal для параллельной сортировки чисел
Просмотров:177
Описание: Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования Южно-Уральский государственный университет Приборостроительный факультет Кафед

Название:Как составить финансовый отчет, чтобы не заметить миллиард
Просмотров:169
Описание:Компания может по своему усмотрению заявить практически о любом уровне доходности. У руководства есть два варианта манипулирования показателями: 1. использовать различные определения термина "прибыль".

Название:Содержание договора о передаче прав на программу для ЭВМ
Просмотров:119
Описание:Способы передачи имущественных прав. Использование программного продукта третьими лицами. Образец заявления на регистрацию договора о полной уступке имущественных прав.

Название:Конструктор из процессных технологий (как составить план проведения изменений на предприятии)
Просмотров:94
Описание:Под бизнес-процессом (БП) понимают совокупность различных видов деятельности, причем на входе используется один или более видов ресурсов, а в результате на выходе создается продукт, представляющий ценность для потребителя.

 
     

Вечно с вами © MaterStudiorum.ru