Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 29.06.2020
Сообщений: 10

Длинная целочисленная арифметика, нужны комментарии к коду

22.11.2020, 14:07. Показов 571. Ответов 1

Студворк — интернет-сервис помощи студентам
Помогите объяснить за что отвечает каждая функция

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
function df0(a:string):string;
var
r:string;
begin
r:=a;
while (length(r)>1) and (r[1]='0') do delete(r,1,1);
df0:=r;
end;
 
function dl0(a:string):string;
var
r:string;
begin
r:=a;
while (length(r)>1) and (r[length(r)]='0') do delete(r,length(r),1);
if r[length(r)]='.' then delete(r,length(r),1);
dl0:=r;
end;
 
function Mult(s:string;n:integer):string;
var
i,j,k:integer;
r:string;
begin
r:='';k:=0;
for i:=length(s) downto 1 do begin
j:=(ord(s[i])-48)*n+k;
k:=j div 10;j:=j mod 10;
r:=inttostr(j)+r;
end;
if k>0 then r:=chr(k+48)+r;
Mult:=r;
end;
 
function Srav(a,b:string):boolean;
var
i:longint;
r:boolean;
begin
r:=true;
if length(a)<length(b) then r:=false else
if length(a)=length(b) then for i:=1 to length(a) do if a[i]>b[i] then break else if a[i]<b[i] then begin r:=false;break;end;
Srav:=r;
end;
 
function Minus(a,b:string):string;
var
i,j,k,l,z:integer;
r,m:string;
begin
m:='';
a:=df0(a);b:=df0(b);
if not Srav(a,b) then begin m:='-';r:=a;a:=b;b:=r;end;
r:='';
j:=length(b);i:=length(a);
while j>0 do begin
k:=ord(b[j])-48;
l:=ord(a[i])-48;
if k>l then begin z:=i-1;while a[z]='0' do begin a[z]:='9';z:=z-1;end;a[z]:=chr(ord(a[z])-1);l:=10+l;end;
r:=inttostr(l-k)+r;
j:=j-1;i:=i-1;
end;
r:=df0(copy(a,1,i)+r);
Minus:=m+r;
end;
 
function LargeSqrt(n:string;t:longint):string;
var
s,b,c,d,r:string;
i,j,k,l,m,p:longint;
a:array[1..2000] of string[2];
begin
if length(n)>4000 then writeln('Слишком длинное число!') else begin
j:=1;
s:=n;
while length(s)>1 do begin
a[j]:=copy(s,length(s)-1,2);
delete(s,length(s)-1,2);
j:=j+1;
end;
if s<>'' then a[j]:=s else j:=j-1;
m:=strtoint(a[j]);l:=trunc(sqrt(m));
s:=inttostr(l);
b:=inttostr(m-l*l);
repeat
c:=s;
j:=j-1;
if j>0 then b:=b+a[j] else begin if p=0 then p:=length(s);b:=b+'00';t:=t-1;end;
b:=df0(b);
if b<>'0' then begin
c:=Mult(c,2);
i:=9;
d:=Mult(c+chr(i+48),i);
while (Srav(d,b) and (d<>b) and (i>0)) do begin i:=i-1;d:=Mult(c+chr(i+48),i);end;
b:=Minus(b,d);
end else i:=0;
s:=s+chr(i+48);
until (t=0);
insert('.',s,p+1);
r:=s;
LargeSqrt:=dl0(r);
end;
end;
 
 
var n:string;
begin
write('Введите число ');
readln(n);
writeln('Его корень = ',LargeSqrt(n,10)); //10 - количество знаков после запятой;
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.11.2020, 14:07
Ответы с готовыми решениями:

Длинная целочисленная арифметика

Длинная целочисленная арифметика
Помогите объяснить за что отвечает каждая функция function df0(a:string):string; var...

Длинная целочисленная арифметика
Написал простую, но оказалось я не понял задачу первоначально. Помогите переделать в длинную...

1
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
23.11.2020, 05:00
Одна функция отвечает за вычисление квадратного корня.
Другая за сравнение строк-чисел.
Ещё одна удаляет нули в конце, а другая в начале.
Ещё есть две, которые складывают и вычитают числа.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.11.2020, 05:00
Помогаю со студенческими работами здесь

Длинная целочисленная арифметика, вычислить сумму ряда
Задание: вычислить сумму первых N членов следующего ряда: \sum_{k=1}^{n}k^k Никак не...

Длинная целочисленная арифметика .Составить функцию вычисления целочисленного квадратного корня из длинно-го числа
В строчке While (s='0') and (Length(s)&gt;1) do Delete(s,1,1); выводит ошибку Ошибка времени...

Решето Аткина. Нужны комментарии к коду
Напишите пожалуйста что означает каждая строчка в этой программе program atkin; var...

Нужны комментарии к коду
var i,j,n,s,b:integer; begin write('n='); read(n); s:=0; for i:=1 to n do begin ...

Нужны комментарии к коду
uses crt,graph; const n=2; var a,a1:array of real; b,b1,x:array of real; function...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru