Операции многократной точности операции с длинными числами
Операции многократной точности (т.е. операции с длинными числами). Конкретизация задания Сначала буквам присваивается значение – например: а=23850934, причем все переменные – целые числа, которые по длине не должны превышать 300 знаков. Потом пишется выражение, например f=(a+b)/c+(d+a). При этом деление – это целое от деления делимого на делитель. Операции сложения, вычитания, умножения – обычные арифметические операции, только это операции над длинными числами. Кроме сложения, вычитания, умножения и деления еще могут быть использованы скобки. Формат ввода Любую строку в поле ввода можно представить в виде S={C,V} Где S – константа либо вычисляемое значение. Если это – константа, то С – число в строковом виде, перед которым стоит символ «@», а если S надо найти то S=V, где V – выражение с переменными и числами. В строке не должно быть пробелов и все переменные состоят из одой буквы. Между строками в поле ввода не должно быть пустых строк. Вывод идет аналогично вводу. Пример ввода и вывода можно посмотреть на рисунке Интерфейс программы. Интерфейс программы – ее внешний вид является наглядным и удобным. В верхнем поле ввода пишутся известные величины и формулы, потом жмется кнопка «Расчитать» и в нижнем поле выводятся в алфавитном порядке все переменные. Программа написана в среде программирования Delphi 6. Использовались только стандартные компоненты – TEdit и TButton. Итого на форме размещено поле ввода, поле вывода и кнопка – для запуска процесса расчета. Использование визуаль
ных средств разработки на много ускорило процесс написания программы. Структура хранения Все длинные числа представляются в виде строки, каждый элемент которой – цифра. Если число отрицательное, то первым символом строки будет “-“. Чтобы считать по формуле используем структуру, описанную ниже type dd= record lin:array[1..300] of string; dl:integer; end; var mas:array[1..300] of dd; В массиве mas хранится уравнение. Каждый элемент массива – отдельное уравнение. В lin хранятся отдельные элементы уравнения. Например mas[3].lin=(‘A’,’=’,’3’,’/’,’(‘,’B’,’-‘,’1’,’)’) соответствует уравнению A=3/(B-1). В первом элементе (mas[i].lin[1]) всегда хранится буква, во втором (mas[i].lin[2]) символ “=”. Такая форма ведения уравнения нужна для удобства вычисления длинных формул. В dl хранится текущее число элементов в уравнении+1. Можно сказать – если dl=4, то в данном элементе хранится не формула, которую надо вычислить, а значение. Количество строк введенных в поле ввода должно быть не более 300 – это задается размерностью массива mas. Используемые процедуры и функции zapolnenie ; - заполнение массива mas из поля edt1. sum (a,b:string):string; - сумма чисел, хранящихся в a и b. minus (a,b:string):string; - разностьчисел, хранящихсяв a и b. minus=a-b umn (a:integer;var xx:string):string; - умножениечислаххнацифруа. Используетсявфункции umnozen. umnozen (a,b:string):string; - произведение чисел, хранящихся в a и b. del2 (str:string):string; - делитчисло str на 2. sravnenie (a,b:string):shortint; - сравнивает число a с числом b. Возвращается результат: · если а>b, то sravnenie =1 · если а<b, то sravnenie =-1 · если а<b, то sravnenie =0 delen (a,b:string):string; - частное от деления a на b. Берется целая часть. po _ ch _ num (ch:string;varznach:string):boolean; - ищет значение буквы в массиве mas. Если значение найдено то возвращается значение «Истина», в противном случае «Ложь». Функция используется для подстановки чисел в выражения. Аргументы: ch – буква, значение которой мы ищем, znach – найденное значение. sislo (ch:char):boolean; - проверяет – является ли символ ch цифрой. Если да – то возвращается «Истина». Функция используется для определения константа или выражения соответствует заданной букве. poisk (z:integer); - процедура для вычисления значения выражения. Она опирается на все предыдущие процедуры и функции. Z – номер вычисляемого значения в массиве mas. Алгоритм ее работы таков: считаем количество открывающихся скобок и если они есть, то начинаем считать с самой вложенной, потом идет умножение и деление, потом сумма и разность. После каждой операции длина уравнения уменьшается и обращение идет опять к процедуре poisk с тем же параметром z. vivod ; - вывод найденных значений в поле вывода memo3. TForm 1. Button 1 Click (Sender: TObject); - процедура нажатия на кнопку «Расчет». TForm 1. Button 2 Click (Sender: TObject); - процедура нажатия на кнопку «Задание». Все функции используют глобальную переменную mas и все процедуры и функции между собой тесно связаны.
Рефераты по информатикеОперации многократной точности (т.е. операции с длинными числами). Конкретизация задания Сначала буквам присваивается значение – например:
Оценок: 318 (Средняя 5 из 5)
Специалисты RetsCorp работают в digital-сфере более 7 лет. За это время мы разработали более 500+ успешных проектов. Основываясь на своем опыте и знании рынка, мы с уверенностью можем сказать, что будет работать, а что — нет. Заказывая создание лендинга для бизнеса в нашей студии, вы получаете работающие решения, необходимые именно вашему бизнесу.
Сотрудничая с нами, вы будете не клиентом, а нашим партнером. Благодаря этому мы будем развивать ваш бизнес как собственный. Мы так же как и вы заинтересованы в успехе проекта, поскольку ваша успешность будет нашей рекламой.