|
Вопрос # 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]
|
IlluminatI (статус: 2-ой класс), 6 июля 2010, 22:21 [#21]:
Либо в условии ставить:
while a <> x do ... ;
Но вероятность того, что ты угадаешь X, крайне мала.
|
|
IlluminatI (статус: 2-ой класс), 6 июля 2010, 22:22 [#22]:
>> А и Х описываю как Double. иначе компилятор кусается
А нафига тебе тут вещественный тип? Целочисленный прекрасно со всем справится.
|
|
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™ (статус: Доктор наук), 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™ (статус: Доктор наук), 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™ (статус: Доктор наук), 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]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|