Длинная арифметика. Сравнение двух и трех длинных чисел.

Длинная арифметика. Сравнение двух и трех длинных чисел.


Сегодня я публикую ещё один исходник программы на Pascal. Итак, сегодня я помогу вам составить программу в паскале, задача которой - сравнение двух больших чисел (0<=N<=101000 ,0<=M<=101000), т.е. эти числа не помещаются ни в integer, longint и int64. Просмотреть исходный код, а также скачать уже готовый исходник рабочей программы, Вы можете далее.

const
nMax = 1000;
type
Tarray = array[0..nmax] of integer;
var
a, b: Tarray;
c: char;
procedure sch(var a: Tarray; c: char); // процедура считывания числа
var
i, err: integer;
begin
i := 1;
read(c);
a[0] := 0;
while (c <> '.') do //цикл считает все числа и запишет их из строки до точки.
begin
val(c, a[i], err); //Преобразует строковое представление s вещественного числа к числовому значению и записывает его в a[i]
i := i + 1; // переходит к следующему элементу
a[0] := a[0] + 1; // увеличивает переменную, содержащую кол-во элементов массива
read(c);// считывает с, т.к. цикл иначе зациклится и не дойдет до точки
end;
end;

function srav(a, b: tarray): tarray; // процедура сравнения чисел
var
i: integer;
flag: boolean;
begin
flag := false;
if a[0] > b[0] then // есла в числе а больше цифр, то выводим его
srav := a
else
if b[0] > a[0] then // иначе, если в числе b больше цифр, то выводим его
srav := b
else
while (i <= a[0]) and not (flag) do // пока цикл не дойдет до н-ого элемента и не поднимится флаг, который сигнализирует о нахождении большего элемента, он не закончится
if a[i] > b[i] then begin
srav := a;
flag := true;
end
else begin
srav := b;
flag := true;
end;
i := i + 1;
end;
procedure inimatr; // процедура вывода большего числа
var
i: integer;
d: tarray;
begin
d := srav(a, b);
for i := 3 to d[0] do
write(d[i], '');
end;
begin//начало основной программы
writeln('Введите число и закончите его точкой');
sch(a, c); //считывание первого числа
sch(b, c); //считывание второго числа
inimatr; //вывод большего числа
end.


При решении данной задачи становится очевидно решение и для сравнения трех больших чисел. Достаточно в процедуре inimatr изменить условие.

procedure inimatr; // процедура вывода большего числа
var
i: integer;
d: tarray;
begin
d := srav(a,srav(c,b));
for i := 3 to d[0] do
write(d[i], '');
end;


Скачать исходник программы сравнения двух чисел: sravnenie.pas

Скачать исходник программы сравнения трёх чисел: sravnenie.pas

Кстати, а Вы, дорогие читатели, не знаете, какие выбрать натяжные потолки? А то в современном мире столько выбора стройматериалов, что и задумываешься над такими, казалось бы глупыми вопросами. Да...Ремонт - песня долгая...
Дата: 2012-10-10 20:17:18   Просмотров: 10287

Теги: массивы исходник исходники Паскаль Pascal длинная арифметика