![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
barlog |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 27 Пол: Мужской Реальное имя: г Репутация: ![]() ![]() ![]() |
Нужно было составить программу демонстрирующая извлечения корня квадратного.
Дошёл до такого вот момента Uses Crt; Немогу загнать всё это в цикл. Ввожу семизначное число 7654321 и над ним эксперементирую. Другие семи и восьми значные тоже считает, до запятой. Надо чтобы и по короче числа брал, вместо того чтобы нули писал в конце. Может где-то перемудрил. Помогите довести до ума пожалуйста! |
klem4 |
![]()
Сообщение
#2
|
|||
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Ты бы убрал свои бирюльки GotoXY, и так не понятно что твоя программа должна делать и в чем ошибка + телепат штатный в отпуске по этому со следующими строчками возникают неразрешимые проблемы :
WriteLn(' ЪДДДДДДДД'); Если хочешь получить какой-либо результат, приведи полностью свое задание, разбириться среди понятных только тебе вычислений желания нету ни малейшего.
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
|||
barlog |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 27 Пол: Мужской Реальное имя: г Репутация: ![]() ![]() ![]() |
Задачи вычисляет корень квадратный из числа до запятой.
В данном случае реализована для частного случая-семизначного числа. Эта прогамма - демонстрация `старого способа извлечения корня`.Всё делаеться по шагово, т.е после каждого нажатия Enter появляеться следующее значение. Нужно как то зациклить повторяющееся действия. Прикрепленные файлы ![]() |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
А ты не можешь зациклить одно, и НЕ зациклить другое... У тебя часть действий повторяется, а вот кое-что каждый раз новое:
Первый проход: z:=z div 100; {z=10000}Второй проход: b:=x; {b=3654321}Третий проход: b:=b*z+x mod 100;Как ты ЭТО хочешь зациклить? Сначала приведи это к виду, когда все переменные на каждой итерации изменяются одинаково, потом зацикливать будешь... |
barlog |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 27 Пол: Мужской Реальное имя: г Репутация: ![]() ![]() ![]() |
Попробую, тока не забывайте про эту тему пока, хорошо?! Как получиться выложу.
|
Archon |
![]()
Сообщение
#6
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: ![]() ![]() ![]() |
Попробуй посмотреть DEMO.DESIGN FAQ
-------------------- Close the World...txeN eht nepO
|
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Archon, ссылка на алгоритм - здесь:
Точное вычисление квадратного корня Автору нужно именно пошаговое его выполнение, а не те ассемблерные процедуры, которые ты предлагаешь... |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
barlog,
вот что получилось у меня (только без всех этих GotoXY, их сам добавь, если нужно... Моя программа просто иллюстрирует процесс получения результата): Проверялось на 5-ти и 7-ми значных числах... Вроде не сбоит... |
barlog |
![]()
Сообщение
#9
|
Новичок ![]() Группа: Пользователи Сообщений: 27 Пол: Мужской Реальное имя: г Репутация: ![]() ![]() ![]() |
Спасибо тебе volvo! Наконец то кто то понял что мне надо. Твоя программа работает при всех возможных числах. Просто задание у нас это было по целым числам, а не по строкам. Вот я тут доделал свою.
В принцепе всё нормально работает, если сможете посмотрите, помоему можно сдавать?! Код Uses Crt; Var x,b,z,l,c,r,d,i,u,um:Longint; k:byte; s:string; Begin ClrScr; {------------------------------------------------------} TextColor(white); GotoXY(15,1); WriteLn('Izvlechenia korna kvadratnogo'); WriteLn('Vvedite chislo'); WriteLn(' ЪДДДДДДДДД'); Write(' \і'); ReadLn(x); GotoXY(19,4);Write('='); {------------------------------------------------------} str(x,s); l:=round(length(s)/2)-1; b:=x; z:=1; r:=0; {------------------------------------------------------} for k:=2 to l+2 do begin GotoXY(8,3*k);Write('ДДДДДДДДДДД'); end; {------------------------------------------------------} while b>=100 do begin b:=b div 100; z:=z*100 end; {------------------------------------------------------} c:=9; while c*c>b do c:=c-1; r:=r*10+c; d:=c*c; x:=x-d*z; ReadKey; GotoXY(10,5); Write(d); ReadKey; GotoXY(20,4); Write(c); {------------------------------------------------------} for k:=0 to l-1 do begin l:=l-1; z:=z div 100; b:=x; for i:=1 to l do b:=b div 100; ReadKey; GotoXY(10+k,7+3*k); Write(b); c:=9; while (20*r+c)*c>b do c:=c-1; d:=(20*r+c)*c; x:=x-d*z; r:=r*10+c; u:=r*2-c; um:=u*c; ReadKey; GotoXY(5,7+3*k); Write(u); ReadKey; GotoXY(6+k,8+3*k); Write(c); ReadKey; GotoXY(10+k,8+3*k); Write(um); ReadKey; GotoXY(21+k,4); Write(c); end; b:=b-um; ReadKey; GotoXY(11+k,10+3*k); Write(b); ReadLn; End. Если ничего исправлять не нужно по вашему усмотрению, то тему можно закрыть. Спасибо volvo ещё раз огромное за всё! ![]() |
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
Цитата В принцепе всё нормально работает Не совсем... При вводе числа 54321, например, (да и любого пятизначного числа) с программой начинает твориться что-то непонятное... А попробуй ввести двухзначное число ![]() ![]() Все-таки, доработай программу... Осталось, скорее всего, совсем чуть-чуть... |
barlog |
![]()
Сообщение
#11
|
Новичок ![]() Группа: Пользователи Сообщений: 27 Пол: Мужской Реальное имя: г Репутация: ![]() ![]() ![]() |
Действительно с двухзначными числами глюк!?
А с пяти значными всё считает просто он последнее число после вычитания выводит на одну позицию левее или правее. Я просто не смог разобраться с полседним GotoXY. Код GotoXY(11+k,10+3*k); Write(b); Надо подумать над этим. Спасибо за подсказку! |
![]() ![]() |
![]() |
Текстовая версия | 22.06.2025 6:49 |