Задание века

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Задание века

Сообщение SLIM » 28.03.2009 (Сб) 12:23

Народ, мне тут задали, а я все никак не могу понять что от меня хотят.
Может это косяк в задании или меня одного глючит?

Даны вещественные q, r, b, c, d, целое n (n>2). Получить
x[n], если x[0]=c; x[1]=d;
x[k]=q*x[k-1]+r*x[k-2]+b, k=2,3,....n

Сразу скажу. Задача не должна решаться с помощью массивов (это точно) и процедурного программирование (но это не так жестко)
На мой взгляд здесь чего-то не хватает
Непонятно что такое всетаки x[n], раз это не обращение к элементу массива....и это не зависимость f(x), так как ф-ии не дано
Хотя конечно если представить что n как-то изменяется, то можно таки увидеть зависимость.
Больше всего конечно меня интересует первый подпункт
:roll:
Пишите жизнь на чистовик.....переписать не удастся.....

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Задание века

Сообщение iGrok » 28.03.2009 (Сб) 12:42

SLIM писал(а):и это не зависимость f(x), так как ф-ии не дано

Не понял? Что значит, ф-ции на дано?
А это что?
x[k]=q*x[k-1]+r*x[k-2]+b, k=2,3,....n ?

Замени квадратные скобки на круглые, и получишь функцию.. =)
label:
cli
jmp label

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Задание века

Сообщение SLIM » 28.03.2009 (Сб) 12:58

Я про первый подпункт....может между ними связь...
Пишите жизнь на чистовик.....переписать не удастся.....

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Задание века

Сообщение iGrok » 28.03.2009 (Сб) 13:27

SLIM писал(а):Я про первый подпункт....может между ними связь...

Так. Либо я чего-то не понимаю, либо ты чего-то не понимаешь.

Формула факториала какая? f(x) = iif(x=1, 1, x * f(x-1)) Так?

А формула числа из ряда Фибоначчи какая? f(x) = iif(x=1, 1 iif(x=2, 1, f(x-1) + f(x-2))) Так?

И чем тогда тебя смущает f(x) = iif(x = 0, c, iif(x = 1, d, q * f(x-1) + r * f(x-2) + b)) ?

А уж как это делать, рекурсией, или массивом с сохранением всего ряда - это твоё дело.
label:
cli
jmp label

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Задание века

Сообщение SLIM » 28.03.2009 (Сб) 14:00

iGrok писал(а):Так. Либо я чего-то не понимаю, либо ты чего-то не понимаешь.

Даже не знаю

Значит так
x[n], если x[0]=c; x[1]=d;
Ага, значит найти нам x[n], т.е. "х" от "n"
Ага, при условии что x[0], т.е. "х" от "0" равен c
Ага, тоже самое с "x" от "1"

Ага....ладно.
x[k]=q*x[k-1]+r*x[k-2]+b, k=2,3,....n

Ага, "x" от "k" равен....ну тут понятно....а "k" изменяется от 2 до n...ага понятно. Тут проблем нет

Ну а вот с первым....я не пойму что от меня хотят. Нафига мне дали: ты типа не вычисляй x[n] для n=0 и n=1....что за тупость то?


ААААА
Все допер. В формуле есть [k-1] и [k-2].....ага
Все понятно.

Лучший способ понять что-то - это попробовать объяснить :D
Пишите жизнь на чистовик.....переписать не удастся.....

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Задание века

Сообщение iGrok » 28.03.2009 (Сб) 14:13

SLIM писал(а):Лучший способ понять что-то - это попробовать объяснить :D

Я же специально дал формулу ряда Фибоначчи, чтобы аналогию было видно невооружённым глазом. =)

У тебя просто условие неправильно записано. Неудобно. Надо примерно так:
Код: Выделить всё
Даны вещественные q, r, b, c, d, целое n (n>2). Получить x[n], если
x[0]=c;
x[1]=d;
x[k]=q*x[k-1]+r*x[k-2]+b, k=2,3,....n

или:
x[k]= {
c                            , k=0;
d                            , k=1;
q*x[k-1]+r*x[k-2]+b , k=2,3,....n;
}

И сразу всё понятно. =)
label:
cli
jmp label

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Задание века

Сообщение SLIM » 28.03.2009 (Сб) 14:19

Ну так о тож

Спасибо тебе!!!
Пишите жизнь на чистовик.....переписать не удастся.....

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Задание века

Сообщение SLIM » 29.03.2009 (Вс) 13:05

продолжаем задания со странным ТЗ
iGrok присоединяйся
Итак

Пусть x[j]=0.3; х[2]=-0.3; x[i]=i+sin(x[i-2]), i=3,4,... .
Среди х[1],...,х[n] найти ближайшее к какому-нибудь целому, которое необходимо преобразовать продублировав в записи числа каждую цифру
Пишите жизнь на чистовик.....переписать не удастся.....

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Задание века

Сообщение iGrok » 29.03.2009 (Вс) 23:40

SLIM писал(а):продолжаем задания со странным ТЗ
iGrok присоединяйся
Итак

Пусть x[j]=0.3; х[2]=-0.3; x[i]=i+sin(x[i-2]), i=3,4,... .
Среди х[1],...,х[n] найти ближайшее к какому-нибудь целому, которое необходимо преобразовать продублировав в записи числа каждую цифру

Вот это реально странное ТЗ.
Т.е. формулу-то я понял. Ты, думаю, тоже.

А вот формулировку "Среди ... найти ближайшее к какому-нибудь целому, которое необходимо преобразовать..." - нет.

Хотя.. М.б. имеется в виду, проверить все значения x(1)...x(n), найти из них то, для которого будет min (abs(Int(x(k)) - x(k))), после чего продублировать в записи каждую цифру (т.е. 2.34 => 22.3344 ) ?
label:
cli
jmp label

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Задание века

Сообщение SLIM » 30.03.2009 (Пн) 0:03

Лучше попробовать разобрать по кусочкам

На первом этапе мне очень непонятно зачем нужно x[j]
Полагаю, если взять аналогию предыдущего задания то должно быть не x[j] а x[1]

Тогда станет более менее понятно как перебирать от x[1] до x[n]
По поводу приближенного к какому-нибудь числу тут более менее понятно
Например, задают какое-либо целое, нужно найти самое приближенное из них к этому целому, преобразовав его путем дублирования цифр

Короче мутные задания какие-то
Ладно я немного хоть программирование знаю, а представь как моим однокурсникам. Они вообще не бум бум. А с такими ТЗ вообще очумеют.
Есть люди которые могут что-то сделать, если им объяснишь вменяемо что именно. А есть люди не умеющие ничего делать, а тут им еще и объяснить что делать невозможно...
Пишите жизнь на чистовик.....переписать не удастся.....

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Задание века

Сообщение Хакер » 30.03.2009 (Пн) 0:41

Автора этих задач и формулировок надо казнить в жесточайшей форме.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Задание века

Сообщение iGrok » 30.03.2009 (Пн) 8:17

Да, я тоже думаю, что там x[1], а не x[j].

Хакер писал(а):Автора этих задач и формулировок надо казнить в жесточайшей форме.

+1..
label:
cli
jmp label

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Задание века

Сообщение SLIM » 30.03.2009 (Пн) 13:23

самое интересное что в выражении i+sin(x[i-2]) может таки получится иррациональный результат. А если результат иррациональный, то как дублировать цифры то?

Позор универу
Пишите жизнь на чистовик.....переписать не удастся.....

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Задание века

Сообщение Хакер » 30.03.2009 (Пн) 13:40

:?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Александр Дмитриев
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 296
Зарегистрирован: 05.01.2005 (Ср) 3:39
Откуда: Санкт-Петербург    Куда: /dev/null

Re: Задание века

Сообщение Александр Дмитриев » 30.03.2009 (Пн) 19:15

SLIM писал(а):самое интересное что в выражении i+sin(x[i-2]) может таки получится иррациональный результат.

Да не просто может а и принимает для всех рациональных аргументов. Но здесь подразумевается приближение этого иррационального числа рациональным. Удваивание цифр такого числа, конечно же идиотизм, к тому же в новом виде оно полностью и не влезет в переменную. Скорее всего здесь имеется в виду удваивание цифр целого (ближайшего). То есть вот так:
Автор этих задач и формулировок, которого надо казнить в жесточайшей форме писал(а):Среди х[1],...,х[n] найти ближайшее к какому-нибудь целому, которое необходимо преобразовать продублировав в записи числа каждую цифру
SLIM писал(а):Позор универу
Ты не один. У нас одному дали задание, он над ним просидел две недели, потом спросил-таки у преподавателя, мол, ну никак не получается. Выяснилось, что препод сама не представляет, как такое решать. Я сегодня всю ночь потратил на то, чтобы понять, что от меня требуется в очередной лабораторке. Так и не понял. Сегодня на занятии выяснилось, что преподаватель ошибся, выдавая задание.

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Задание века

Сообщение SLIM » 30.03.2009 (Пн) 19:48

Александр Дмитриев писал(а):Скорее всего здесь имеется в виду удваивание цифр целого (ближайшего). То есть вот так:

Ага, это типа:
мы набрали массив значений
x[1]=0,3
x[2]=-0,3
x[3]=0.96 (тут и дальше только ради примера)
x[4]=2,156
x[5]=12,22
x[6]=133,11
x[7]=145,13

Пользователь задает число 12, после преобразования получаем 1122, и самое приближенное к нему будет число 145,13
Так чтоли?
Пишите жизнь на чистовик.....переписать не удастся.....

Александр Дмитриев
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 296
Зарегистрирован: 05.01.2005 (Ср) 3:39
Откуда: Санкт-Петербург    Куда: /dev/null

Re: Задание века

Сообщение Александр Дмитриев » 30.03.2009 (Пн) 20:04

Нет, я имел в виду другое. Хотя так, как ты объяснил, тоже неплохо :)
Есть массив значений:
x[1]=0,3
x[2]=-0,3
x[3]=0.96
x[4]=2,156
x[5]=12,22
x[6]=133,11
x[7]=145,13
Расстояние до ближайшего целого меньше всего у третьего элемента - 0.96. У целого, к которому оно так близко (в данном случае 1) удваиваем все цифры (получается: 11). Это вариант "какого-нибудь целого" IGrok'а. Я придумал ещё вариант: взять какое-нибудь число от 1 до n (самостоятельно взять один раз то, которое больше понравится) и найти среди чисел последовательности ближайшее к нему, потом целое удвоить. (И преподавателю сказать, что я решил выбрать такое-то число). Но проблема здесь в том, что удваиваться будет одно и то же число (то, которое ты выбрал).

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Задание века

Сообщение SLIM » 30.03.2009 (Пн) 20:10

Самое страшное что число - это совсем не строка.
Это в VB с этим проще...Так что алгоритм удваивания цифры нужно будет придумывать в разрезе цифр, а не символов
Пишите жизнь на чистовик.....переписать не удастся.....

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Задание века

Сообщение iGrok » 30.03.2009 (Пн) 20:10

SLIM писал(а):x[1]=0,3
x[2]=-0,3
x[3]=0.96 (тут и дальше только ради примера)
x[4]=2,156
x[5]=12,22
x[6]=133,11
x[7]=145,13

Пользователь задает число 12, после преобразования получаем 1122, и самое приближенное к нему будет число 145,13
Так чтоли?

Я понял так (начальные данные - из твоих "потолковых" значений):
d(x[1]) = abs(0 - 0.3) = 0.3; d(x[2]) = 0.3; d(x[3]) = 0.04; d(x[4]) = 0.156; ; d(x[5]) = 0.22 ...
Из них, очевидно, ближайшее к целому - 0.96 (dx минимальное). Вот его-то цифры и удваиваем. Получается 0,9966.
label:
cli
jmp label

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Задание века

Сообщение SLIM » 30.03.2009 (Пн) 20:19

iGrok писал(а):Из них, очевидно, ближайшее к целому - 0.96 (dx минимальное). Вот его-то цифры и удваиваем. Получается 0,9966.

Вот как раз здесь то и косяк.
Все хорошо если число 0.96, а если иррациональное? Перполнение обеспечено
Пишите жизнь на чистовик.....переписать не удастся.....

Александр Дмитриев
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 296
Зарегистрирован: 05.01.2005 (Ср) 3:39
Откуда: Санкт-Петербург    Куда: /dev/null

Re: Задание века

Сообщение Александр Дмитриев » 30.03.2009 (Пн) 20:30

Знаешь, скорее всего имеется в виду всё-таки тот самый "идиотизм", с удваиванием каждой цифры дробного (кстати, там не указано, какой цифры: двоичной, восьмеричной). То есть так: строим последовательность, просим пользователя ввести целое число, среди элементов последовательности ищем ближайшее к введённому, в этом ближайшем удваиваем каждую цифру (лишнее отрубаем).

SLIM писал(а):Все хорошо если число 0.96, а если иррациональное?

"Иррациональное" (которое, на самом деле, вполне рациональное) будет получаться всегда начиная с третьего члена.

SLIM писал(а):Перполнение обеспечено

Какое переполнение? У нас есть: 53.31452145245822146368. Удваиваем: 5533.33114455221144552244.

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Задание века

Сообщение SLIM » 30.03.2009 (Пн) 20:48

ХЗ
Написал письмо декану, завтра поеду в универ. Точно узнаем, потом сообщу результат
Пишите жизнь на чистовик.....переписать не удастся.....

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Задание века

Сообщение Хакер » 31.03.2009 (Вт) 0:07

Про переполнение, это я ему вчера рассказывал.

Я рассказывал о том, что память, отведённая под хранение переменной в принципе конечна. И раз так, то существует некий предел информации, которая может быть в него засунута.

Для обычных числе это просто предельное число, после превышения которого происходит overflow, для FP-числел существует аналогичное явление, обусловенное тем, что та часть FP-числа, в которой хранится мантисса, не резиновая, не может растянуться так, чтобы сохранить новую мантиссу (полученное после дублирования цифр). Так что при дублировании цифр будут иметь место округления по не совсем очевидным человеку законам.

Иными словами, дублирование цифр в FP-числе потребует от FP-переменной в каких-то случаях удвоения точности, что невозможно, так что будут происходить «переполнения точности».
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 64

    TopList