![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
SSJ |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: SSJ Репутация: ![]() ![]() ![]() |
Помогите пожалуйста, у меня задача: Написать программу для вычисления корня квадратного из огромного числа( количество цифр в нем n,n>40) при условий что корень извлекается т.е. он целое число. Я нашел алгоритм чисто математический, суть его разбитие на грани и.., вопщем у меня не получается написать на паскале нормально работающую прогу. Я тут смотрел вроде была тема длинная арифметика и там были разобраны некоторые задачи но моей не было. И НИГДЕ в инете кода этой задачи нет. Подмогните!
Сообщение отредактировано: SSJ - 10.04.2007 8:57 |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
|
SSJ |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 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. |
![]() ![]() |
![]() |
Текстовая версия | 24.06.2025 10:43 |