Читать методичка по информатике, вычислительной технике, телекоммуникациям: "Операции многократной точности (операции с длинными числами)" Страница 1


назад (Назад)скачать (Cкачать работу)

Функция "чтения" служит для ознакомления с работой. Разметка, таблицы и картинки документа могут отображаться неверно или не в полном объёме!

Задание

Операции многократной точности (т.е. операции с длинными числами).

Конкретизация задания

Сначала буквам присваивается значение – например: а=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 если а9 then begin

    ost:=k div 10;k:=k mod 10;

    end;

    c[j]:=inttostr(k)[1];

    j:=j-1;

    end;

    if ost>0 then begin

    tmp2:=inttostr(ost)+tmp2;

    c:=form1.sum(tmp2,c);

    end;

    if bol then c:='-'+c;

    sum:=c;

    end;

    function Tform1.minus(a,b:string):string;

    var

    i,la,lb,vv,snos:integer;

    c,tmp:string;

    pom:boolean;

    begin

    if ((b[1]='-') and (a[1]'-')) then begin



Интересная статья: Основы написания курсовой работы