|
Вопрос # 4 389/ вопрос открыт / |
|
Здравствуйте, эксперты!
такая вот тема мжки.
есть число Х > 10(6)
надо найти его по формуле У(2)+1.
далее идет цикл: вместо У возводиться в квадрат уже (У(2)+1),
потом возводиться то что получилсь и т.д. - до Х.
как написать такой цикл??
я написал по другому: здесь возводиться в квадрат увеличивающийся на ед-цу У
Приложение: Переключить в обычный режим- procedure TForm1.Button1Click(Sender: TObject);
- var x: double;
- a: integer;
- begin
- a:=0;
- while x <= 1000000 do
- begin
- Inc(a);
- x:= power(pred(a), 2)+1;
- end;
- Label1.Caption:= 'x = ' +floattostr(x);
- end;
-
- end.
 |
Вопрос задал: габибыч (статус: Заблокирован)
Вопрос отправлен: 6 июля 2010, 18:45
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 32; последнее сообщение — 6 июля 2010, 22:49; участников в обсуждении: 4.
Страницы: [1] [2] [Следующая »]
|
min@y™ (статус: Доктор наук), 6 июля 2010, 20:32 [#1]:
У(2) - это случайно не Y2?
Если X = Y2 + 1, надо найти что? Y?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
габибыч (статус: Заблокирован), 6 июля 2010, 21:00 [#2]:
да это Y в квадрате.
найти надо Х.
ход цикла такой: сначала Y возводиться в квадрат, прибавляем 1, потом вот этот получившийся результат возводим в квад. и опять прибавляем 1 и т.д.
никак не могу продумать запись этого цикла..
|
|
Кириченко Сергей (статус: 1-ый класс), 6 июля 2010, 21:13 [#3]:
Возможно нужно сделать так :
x:=1;
while x <= 1000000 do
begin
x:=x*x+1;
end;
|
|
габибыч (статус: Заблокирован), 6 июля 2010, 21:15 [#4]:
ok, щас проверим..
|
|
габибыч (статус: Заблокирован), 6 июля 2010, 21:21 [#5]:
блин, кажется не то....
в условии цикла Х до 10(6) доходит, а его квадрат вообще в небесах..
получается Х = 176771162
|
|
min@y™ (статус: Доктор наук), 6 июля 2010, 21:36 [#6]:
Нихрена непонятно.
Если надо найти Х, то чему должен быть равен Y? Если нужно вычислить Х рекуррентно, давай формулу рекуррентности.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
габибыч (статус: Заблокирован), 6 июля 2010, 21:41 [#7]:
условие задачи:
Число А возводят в квадрат и результат увеличивают на 1.Полученное число снова возводят в квадрат и результат увеличивают на 1.Этот процесс прдолжается до тех пор, пока не будет получено число Х, больше миллиона.Найдите число Х.
|
|
min@y™ (статус: Доктор наук), 6 июля 2010, 21:50 [#8]:
Ты уверен, что число А надо возводить в квадрат? Может, всё-таки, Y?
Если на текущей итерации мы в X не попадаем, а получившееся число > X, тогда что?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
габибыч (статус: Заблокирован), 6 июля 2010, 21:55 [#9]:
А, Y, X это просто обозначения (называй как хочешь).
незнаю, я задачу с инета скачал.
главное идея. можно ли вообще такую задачу решить?
думаю должен быть break или exit, если число будет > X
|
|
габибыч (статус: Заблокирован), 6 июля 2010, 21:56 [#10]:
там второго числа и нет (как я понимаю).
просто число по какой то схеме увеличивается и не должно выходить за 1000000
|
|
min@y™ (статус: Доктор наук), 6 июля 2010, 22:03 [#11]:
Цитата (габибыч):
я задачу с инета скачал.
Скопируй сюда оригинальный текст задачи.
А то мне телепатор за неуплату отключили.
Никак не пойму, чего ты хочешь добиться и для чего всё это надо!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
IlluminatI (статус: 2-ой класс), 6 июля 2010, 22:07 [#12]:
Если я правильно понял условие, то код будет предельно простым:
a:=1; // про исходное значение A не сказано, пусть будет 1
while a < 1000000 do
a:=power((power(a, 2) + 1), 2) + 1;
// т.е формула: A = (A^2 + 1)^2 + 1
// выводим A куда надо. Power() - возведение в степень
// + уточни условие, < или <=
|
|
габибыч (статус: Заблокирован), 6 июля 2010, 22:09 [#13]:
оригинальный текст задачи:
Число А возводят в квадрат и результат увеличивают на 1.Полученное число снова возводят в квадрат и результат увеличивают на 1.Этот процесс прдолжается до тех пор, пока не будет получено число Х, больше миллиона.Найдите число Х.
а добиться хочу - просто решить _)
надо, чтобы логику програмирования таким образом узнать что ли (на разных примерах).
вручную могу - это ряд (в каком то сходящийся)
представить это в Делфи не совсем получается
|
|
IlluminatI (статус: 2-ой класс), 6 июля 2010, 22:13 [#14]:
Если это оригинальный текст задачи, тогда мое решение должно быть верным.
|
|
габибыч (статус: Заблокирован), 6 июля 2010, 22:13 [#15]:
IlluminatI, не то.
получается - 210066388901 _)
|
|
IlluminatI (статус: 2-ой класс), 6 июля 2010, 22:15 [#16]:
А нет. Немного не так. X считывается с клавиатуры? если да, тогда:
readln(x);
if x > 1000000 then
begin
a:=1;
while a <= x do
a:=power((power(a, 2) + 1), 2) + 1;
end
else writeln('X меньше миллиона');
|
|
габибыч (статус: Заблокирован), 6 июля 2010, 22:15 [#17]:
min@y, по моему прав (рекурентно надо решить)
в задаче переменная обращается к себе пока не станет больше 1000000
|
|
IlluminatI (статус: 2-ой класс), 6 июля 2010, 22:15 [#18]:
Ничо не понял. А сколько должно получится? Опиши A как Int64, возможно просто за диапазон вылетело.
|
|
IlluminatI (статус: 2-ой класс), 6 июля 2010, 22:16 [#19]:
>> в задаче переменная обращается к себе пока не станет больше 1000000
Дык у меня так и написано, так то.
|
|
габибыч (статус: Заблокирован), 6 июля 2010, 22:20 [#20]:
А и Х описываю как Double. иначе компилятор кусается
( не совместимые типы integer и extended)
|
Страницы: [1] [2] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|