Форум: "Прочее";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
Внизпонедельничная задачка, для поступающих в первый класс Найти похожие ветки
← →
Rule © (2006-09-11 17:41) [0]вот загадали, ничего придумать не могу, мож вместе подумаем ?
Числу 120 соответствует 1, числу 366-2, числу 239-1, числу 521-0, числу 820-3, числу 469-????
← →
Bless © (2006-09-11 17:42) [1]На той неделе уже задавали :)
← →
Eraser © (2006-09-11 17:42) [2]> [0] Rule © (11.09.06 17:41)
боян!
← →
StriderMan © (2006-09-11 17:43) [3]тут уже все поступили. заочно.
← →
Virgo_Style © (2006-09-11 17:43) [4]давайте лучше подумаем, как давно эта тема тут пробегала... я думаю, дня два тому...
:-P
← →
Rule © (2006-09-11 17:44) [5]ооо, ну тогда сорри за баян :-)
← →
Bless © (2006-09-11 17:47) [6]http://delphimaster.net/view/15-1157541245/
← →
Rouse_ © (2006-09-11 17:47) [7]Хош задачку покруче задам? :)
Есть две переменные, к примеру X и Y
Необходимо написать программу выглядящую следующим образом:
1. Инициализация переменных
2. while Условие do begin ... end
3. вывод переменных.
После выполнения цикла переменные должны содержать следующие значения:
X = начальное значение X + начальное значение Y
Y = начальное значение X - начальное значение Y
Выход из цикла только по условию заданному в WHILE, никаких Breack, exit, и т.п.
Использовать третью переменную (в том числе значения на стеке и т.п.) нельзя.
Дерзайте :)))
← →
Bless © (2006-09-11 17:47) [8]Еще недалеко убежала, нашел на 8 странице :)
← →
Rouse_ © (2006-09-11 17:52) [9]Да, чуть не забыл, посе выхода из цикла значения уже должны быть в переменных, никаких поправок их значений быть не должно, только вывод результата :)
← →
Rule © (2006-09-11 18:00) [10]Rouse_ © (11.09.06 17:52) [9]
во блин только занончил над "мяу" и "иа" думать как ты мне про какието циклы тут :-)
← →
StriderMan © (2006-09-11 18:00) [11]народ, не пишите сразу ответ! дайте подумать немного :)
← →
Bless © (2006-09-11 18:02) [12]А без цикла можна?
← →
Bless © (2006-09-11 18:05) [13]
> Использовать третью переменную (в том числе значения на
> стеке и т.п.) нельзя.
Т.е. конструкции типа x := x+2*y; запрещены?
← →
StriderMan © (2006-09-11 18:06) [14]а try..finally..end мона?
← →
han_malign © (2006-09-11 18:09) [15]
> Т.е. конструкции типа x := x+2*y; запрещены?
- ну дык можно inc(y,y) - стек не используется...
← →
Rule © (2006-09-11 18:13) [16]да чегото я тоже не пойму зачем тут цикл, и без него двумя строками все получается ... мож я не прав
X := X+Y;
Y:= (X-y)-Y;
← →
StriderMan © (2006-09-11 18:18) [17]
> Rule © (11.09.06 18:13) [16]
ясен пень что без цикла все просто. условие такое.
← →
Алхимик © (2006-09-11 18:19) [18]
InitXY;
while abs(X) < (abs(X)+abs(Y)) do begin
X := X + Y;
Y := X - Y - Y;
end;
PrintXY;
← →
Алхимик © (2006-09-11 18:21) [19]Только с выходом за диапазон бяка будет...
← →
Плохиш © (2006-09-11 18:22) [20]
> Алхимик © (11.09.06 18:19) [18]
Зациклились ;-)
← →
Алхимик © (2006-09-11 19:00) [21]InitXY;
while GlobalFindAtom("не знаю как задать условие, используя только X и Y") = 0 do begin
X := X + Y;
Y := X - Y - Y;
GlobalAddAtom("не знаю как задать условие, используя только X и Y") ;
end;
PrintXY;
← →
Rule © (2006-09-11 19:07) [22]ишо одна задачка
есть мост. темный. ночью.
мост выдерживает двоих
папа проходит мост за одну минуту
мама - 2
сын - 5
бабушка - 10
есть один фонарик
на всех
нада пройти меньше чем за 19 минут
← →
Алхимик © (2006-09-11 19:12) [23]Папа + бабуля - 10
Папа обратно - 11
Папа + сын - 16
Папа обратно - 17
Папа + мама - ровно 19
Чтоб было меньше 19 минут папа подгоняет маму пендалями :)
← →
Rule © (2006-09-11 19:13) [24]Алхимик © (11.09.06 19:12) [23]
гыы, тогда лучше бабушку с сыном :-)
← →
Rule © (2006-09-11 19:13) [25]Алхимик © (11.09.06 19:12) [23]
мама и так шустрая :-)
← →
StriderMan © (2006-09-11 19:15) [26]посадить бабушку на папу. дальше понятно.
← →
Алхимик © (2006-09-11 19:17) [27]> [26] StriderMan © (11.09.06 19:15)
> посадить бабушку на папу. дальше понятно.
А бабушка - нелюбимая тёща под центнер веса. :)
← →
Rule © (2006-09-11 19:19) [28]Алхимик © (11.09.06 19:17) [27]
прекрасная возможность скинуть с моста :-)
← →
StriderMan © (2006-09-11 19:19) [29]
> Алхимик © (11.09.06 19:17) [27]
> > [26] StriderMan © (11.09.06 19:15)
> > посадить бабушку на папу. дальше понятно.
>
> А бабушка - нелюбимая тёща под центнер веса. :)
тогда тещу на маму. ее мать - пусть сама и тащит
← →
Rule © (2006-09-11 19:27) [30]я знаю два варианта решения :-)
← →
Алхимик © (2006-09-11 19:34) [31]Папа + Мама - 2
Папа обратно - 3
Бабуля + сын - 13
Мама обратно - 15
Папа + мама - ровно 17
← →
Rouse_ © (2006-09-11 21:15) [32]
> Т.е. конструкции типа x := x+2*y; запрещены?
Внутри цикла можно делать что угодно, хоть в степерь возводи :)
главное не использовать третью переменную, выделение памяти под значение или стек - это считай что переменная :)
GlobalFindAtom это тоже переменная, ты же используешь сторонее значение, а в задаче сказано ТОЛЬКО 2 переменных, цикл, после выходя из цикла результат :)
← →
default © (2006-09-11 21:19) [33]Rouse_ © (11.09.06 17:47) [7]
X := X1; Y := Y1;
while ((X <> X1 + Y1) or (Y <> X1 - Y1)) do begin
X := X + Y;
Y := X - 2*Y;
end;
WriteLine(X1); WriteLine(X2);
← →
default © (2006-09-11 22:28) [34]Алхимик © (11.09.06 19:00) [21]
именно только по типу [33] можно решить задачу(использую в условии инициализирующие значения X1 и Y1)
вот смотри
условие будем понимать как некоторую функцию от X и Y и возвращающую булево значение
F(X, Y)
мы хотим, чтобы первый раз условие было выполнено для любых значений переменных X и Y, читай F(X, Y)=true,
а на второй раз F(X+Y, X-Y)=false
но такая функция противоречива, ибо любые числа a и b можно представить ввиде
a=x+y;(0) b=x-y;
сделать это просто: a=x+y;-y=x-a; (1)
b=x-y=x+(1)=x+x-a=2x-a
то есть в последнем выражении для заданного "a" подбираем такое x чтобы получить заданное значение b
а потом чтобы получить "a" в выражении (0) подбираем нужное y
и функция "не может понять" когда ей выдавать true, а когда false
такая функция невозможна
← →
default © (2006-09-11 22:44) [35]+[34]
даже проще, предыдущее можно не читать
понятно, что только когда X=0 и Y=0
манипуляции X := X + Y; Y := X - 2*Y; не изменят значений X и Y, они останутся нулями, то есть и сами манипуляции не обязательно проводить
то есть манипуляции во всех остальных случаях надо проводить
(то есть условие должно обращаться в истину)
отсюда видна бесперспективность найти условие возвращающее во второй раз ложь
← →
Алхимик © (2006-09-11 23:48) [36]> default
Получается что Розыч - редиска?
← →
default © (2006-09-11 23:50) [37]Алхимик © (11.09.06 23:48) [36]
думаю, подразумевалось решение навроде [33]
там в условии фигурируют значения инициализации X1 и Y1
потому, думаю, в условие задачи и введена стадия инициализации, чтобы воспользоваться в условии инициализирующими значениями
а так нафиг бы эта стадия нужна - ну лежать в переменных какие значения и лежат...
← →
StriderMan © (2006-09-12 09:18) [38]а если так?
try
while true do
begin
X := X + Y;
Y := X - Y - Y;
X := X / 0;
end;
except
end;
← →
default © (2006-09-12 09:27) [39]StriderMan © (12.09.06 09:18) [38]
вряд-ли
например, в TP исключений нет
задачка, думаю, не ориентирована исключительно на ЯВ, включающие обработку исключений
← →
Rouse_ © (2006-09-12 12:36) [40]
> default © (11.09.06 21:19) [33]
> Rouse_ © (11.09.06 17:47) [7]
> X := X1; Y := Y1;
> while ((X <> X1 + Y1) or (Y <> X1 - Y1)) do begin
> X := X + Y;
> Y := X - 2*Y;
> end;
> WriteLine(X1); WriteLine(X2);
Ты используешь дополнительные переменные, что нельзя делать :)
А вообще ты прав, данная задача не имеет решения :)
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.014 c