Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 389

/ вопрос открыт /

Здравствуйте, эксперты!
такая вот тема мжки.

есть число Х > 10(6)
надо найти его по формуле У(2)+1.
далее идет цикл: вместо У возводиться в квадрат уже (У(2)+1),
потом возводиться то что получилсь и т.д. - до Х.
как написать такой цикл??

я написал по другому: здесь возводиться в квадрат увеличивающийся на ед-цу У

Приложение:
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var x: double;
  3. a: integer;
  4. begin
  5. a:=0;
  6. while x <= 1000000 do
  7. begin
  8. Inc(a);
  9. x:= power(pred(a), 2)+1;
  10. end;
  11. Label1.Caption:= 'x = ' +floattostr(x);
  12. end;
  13.  
  14. end.


габибыч Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: габибыч (статус: Заблокирован)
Вопрос отправлен: 6 июля 2010, 18:45
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 32; последнее сообщение — 6 июля 2010, 22:49; участников в обсуждении: 4.

Страницы: [« Предыдущая] [1] [2]

IlluminatI

IlluminatI (статус: 2-ой класс), 6 июля 2010, 22:21 [#21]:

Либо в условии ставить:
 while a <> x do ... ;
Но вероятность того, что ты угадаешь X, крайне мала.
IlluminatI

IlluminatI (статус: 2-ой класс), 6 июля 2010, 22:22 [#22]:

>> А и Х описываю как Double. иначе компилятор кусается
А нафига тебе тут вещественный тип? Целочисленный прекрасно со всем справится.
min@y™

min@y™ (статус: Доктор наук), 6 июля 2010, 22:22 [#23]:

Цитата (габибыч):

пока не будет получено число Х, больше миллиона.Найдите число Х.

var
  X: Int64;
begin
  X:= 1;
  while X <= 1000000 do
    X:= X * X + 1;
  WriteLn('X = ', X)
end;
Это всё?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
габибыч

габибыч (статус: Заблокирован), 6 июля 2010, 22:26 [#24]:

IlluminatI, второй вариант твоего кода дает 2...*10(308)!!
ужас!
сегодня я такую хрень уже получал_)
габибыч

габибыч (статус: Заблокирован), 6 июля 2010, 22:33 [#25]:

min@y™ , если вместо Int64 подставить integer, ответ более подходящий (ближе к 1000000)
габибыч

габибыч (статус: Заблокирован), 6 июля 2010, 22:35 [#26]:

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.

этот код дает 1000001.
но здесь не реализовано условие цикла..
min@y™

min@y™ (статус: Доктор наук), 6 июля 2010, 22:41 [#27]:

Цитата (габибыч):

если вместо Int64 подставить integer, ответ более подходящий (ближе к 1000000)

Зато с Int64 результат правильный, а с Integer - нет. Вот промежуточные результаты с Integer:
2
5
26
677
458330
-387008603
176771162
X = 176771162
А вот с Int64:
2
5
26
677
458330
210066388901
X = 210066388901
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 6 июля 2010, 22:42 [#28]:

Это всё, конечно, при условии, что Х должно быть целым числом.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
габибыч

габибыч (статус: Заблокирован), 6 июля 2010, 22:46 [#29]:

блин, точно, первый раз я так решил и уменя ответ такой же большой получился (это сбило меня с толку).
а как ты промежуточные данные выводишь??
габибыч

габибыч (статус: Заблокирован), 6 июля 2010, 22:46 [#30]:

но у меня конечно был Integer
габибыч

габибыч (статус: Заблокирован), 6 июля 2010, 22:48 [#31]:

спасибо всем!
min@y™

min@y™ (статус: Доктор наук), 6 июля 2010, 22:49 [#32]:

Цитата (габибыч):

а как ты промежуточные данные выводишь??

program Project1;
 
{$APPTYPE CONSOLE}
 
var
  X: Int64;
begin
  X:= 1;
  while X <= 1000000 do
    begin
      X:= X * X + 1;
      WriteLn(X);
    end;
  WriteLn('X = ', X);
  ReadLn;
end.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

7 июля 2010, 12:53: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Алгоритмы, преобразования модератором Ерёмин А.А.

Страницы: [« Предыдущая] [1] [2]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 26 апреля 2026, 00:12
Выполнено за 0.04 сек.