![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
SSJ |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: SSJ Репутация: ![]() ![]() ![]() |
Помогите пожалуйста, у меня задача: Написать программу для вычисления корня квадратного из огромного числа( количество цифр в нем n,n>40) при условий что корень извлекается т.е. он целое число. Я нашел алгоритм чисто математический, суть его разбитие на грани и.., вопщем у меня не получается написать на паскале нормально работающую прогу. Я тут смотрел вроде была тема длинная арифметика и там были разобраны некоторые задачи но моей не было. И НИГДЕ в инете кода этой задачи нет. Подмогните!
Сообщение отредактировано: SSJ - |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Ну, насчет "нигде" - это ты не прав... Вот, например, библиотека BigInt, в которой реализовано нахождение корня длинного числа: http://www.mi.unicyb.kiev.ua/downloads/acm.../c/BigInteger.c
(то, что она написана на С++, еще не значит, что это же нельзя реализовать на Паскале... Справишься, или нужна помощь?) |
SSJ |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: SSJ Репутация: ![]() ![]() ![]() |
Volvo, если тебе не сложно, напиши ты.
__ p.s и ваабще тебе чисто человеческий респект, я смотрю ты тут многим помогаешь p.р.s. Еще хотел спросить ты по asm шаришь, если да то не знаешь алгоритма или мануала по взлому star force, если че сам кречил,то давай по асе свяжимся и ты расскажишь |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
|
SSJ |
![]()
Сообщение
#5
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: SSJ Репутация: ![]() ![]() ![]() |
Volvo, эта прога с твоего сайта странно работает она к примеру из числа 138384 не верно считает корень ды и не только для него...
Если ты можешь загляни сюда comp-science.hut.ru/dl-ar/dl-ar.html и напиши прогу по этому мат алгоритму. Я могу выложить то что я пока сделал но не знаю поможет ли это.. Пожалуйста помоги а то у меня курсовик стоит, из 10 задач одна эта осталась. Добавлено через 11 мин. Volvo, эта прога с твоего сайта странно работает она к примеру из числа 138384 не верно считает корень ды и не только для него... Если ты можешь загляни сюда comp-science.hut.ru/dl-ar/dl-ar.html и напиши прогу по этому мат алгоритму. Я могу выложить то что я пока сделал но не знаю поможет ли это.. Пожалуйста помоги а то у меня курсовик стоит, из 10 задач одна эта осталась. Program KvadratniiKoren; const nmax=2000; var c,n,c2:array[1..nmax]of integer; m,zt,c2i,a1s,cs,bbs,rezs,nj,nt,max0s,max1s:string; mI,l,i,kolgr,j,code,max,max1,x,z,zz,ab1,am1,cc,rez,bm,bb,u:integer; log:text; begin assign(log,'log.ssj_prog'); {очищаем файл} rewrite(log); close(log); read(m); l:=length(m); for i:=1 to l do begin {заполняем массив с(числовой)из файла, по 1 символу(цифре) в ячейку массива} val(m[i],mI,code); c[i]:=mI; end; if l mod 2 =0 then {если число цифр в введенном числе четное то по два числа в грани, если нечетное то первая слева грань имеет 1 цифру а все остальные по 2} begin writeln('кол-во цифр в числе четное ',l); for i:=1 to l do begin assign(log,'log.ssj_prog'); append(log); writeln(log,m[i],m[i+1]); i:=i+1; close(log); end; kolgr:=round(l/2); {определяем кол-во граней(групп по 2 цифры), ! число граней равно числу цифр исходеного числа} writeln('В результате должно получиться число, длина которого ',kolgr,' цифр'); assign(log,'log.ssj_prog'); {заполняем массив с2(числовой)из файла, по 2 символа(цифре) в ячейку массива} reset(log); for j:=1 to kolgr do readln(log,c2[j]); close(log); erase(log); writeln('Вывожу введенное число с расстановленными гранями'); for j:=1 to kolgr do write(c2[j],' '); writeln; assign(log,'log.ssj_prog'); rewrite(log); close(log); nt:=''; for i:=1 to kolgr do if i=1 then begin for x:=1 to c2[1] do if c2[1]>= sqr(x) then max:=x; {ищем число квадрат которого меньше или равен числу 1-ой грани} assign(log,'log.ssj_prog'); append(log); writeln(log,max); close(log); if kolgr>1 then begin str(max,max0s); nt:=nt+max0s; z:=sqr(max); zz:=c2[1]-z; str(zz,zt); str(c2[i+1],c2i); a1s:=zt+c2i; val(a1s,ab1,code); am1:=2*max; for x:=1 to ab1 do if (10*am1+x)*x<=ab1 then max1:=x; assign(log,'log.ssj_prog'); append(log); writeln(log,max1); close(log); str(max1,max1s); nt:=nt+max1s; cc:=ab1-(10*am1+max1)*max1; end; for i:=3 to kolgr do begin str(cc,cs); str(c2[i],c2i); bbs:=cs+c2i; val(bbs,bb,code); rezs:=''; for j:=1 to i do begin rezs:=rezs+nt; val(rezs,rez,code); bm:=2*rez; for x:=1 to bb do if (10*bm+x)*x<=bb then max:=x; cc:=bb-(10*bm+max)*max; assign(log,'log.ssj_prog'); append(log); writeln(log,max); close(log); end; end; end; {результат пока выводит в файл} end; end. |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Исправлено...
На сайте - новая версия программы... Сообщение отредактировано: volvo - |
Гость |
![]()
Сообщение
#7
|
Гость ![]() |
Спасибо Volvo, все работает!
|
![]() ![]() |
![]() |
Текстовая версия | 21.04.2025 9:05 |