Страница 1 из 1

Вычислить y=cos(1+cos(2+...+cos(39+cos(40)... ))

Добавлено: 27 мар 2013, 23:15
Карина55
помогите решить пожалуйста

Re: Вычислить y=cos(1+cos(2+...+cos(39+cos(40)... ))

Добавлено: 28 мар 2013, 14:53
Ne0N
что-то вроде этого:

Код: Выделить всё

double y;
for (int x=40, y=x; x>1 ;)
  y=--x+cos(y);

Re: Вычислить y=cos(1+cos(2+...+cos(39+cos(40)... ))

Добавлено: 28 мар 2013, 15:11
Romeo
Ne0N писал(а):что-то вроде этого:

Код: Выделить всё

double y;
for (int x=40, y=x; x>1 ;)
  y=--x+cos(y);
Кошмар.... код вообще не скомпилируется. Но даже если поправить синтаксис, программа просто зависнет в вечном цикле.

Вот так должно быть:

Код: Выделить всё

double y = 40;
for (int i = 39; i >= 0; --i)
{
   y = i + cos(y);
}
std::cout << "y = " << y << std::endl;

Re: Вычислить y=cos(1+cos(2+...+cos(39+cos(40)... ))

Добавлено: 28 мар 2013, 15:59
Ne0N
Romeo писал(а):Кошмар.... код вообще не скомпилируется. Но даже если поправить синтаксис, программа просто зависнет в вечном цикле.
Да с чего бы. Посмотрел бы ты внимательно на код, не возникло бы такого мнения.

Единственное у меня ограничение цикла надо ставить x>0 - не заметил первый cos

Re: Вычислить y=cos(1+cos(2+...+cos(39+cos(40)... ))

Добавлено: 28 мар 2013, 16:51
Romeo
Да, пардон, бесконечного цикла не будет. Просто вынос префиксного декремента из "правильного" места в for в саму формулу уж никак не добавляет читабельности. Если это меня сбило с толку (хотя каюсь, спешил и смотрел невнимательно), то новичку вообще мозг взорвёт :)