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

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Карина55
Сообщения: 1
Зарегистрирован: 27 мар 2013, 23:13

помогите решить пожалуйста
Ne0N
Сообщения: 6
Зарегистрирован: 28 мар 2013, 14:39

что-то вроде этого:

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

double y;
for (int x=40, y=x; x>1 ;)
  y=--x+cos(y);
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

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;
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ne0N
Сообщения: 6
Зарегистрирован: 28 мар 2013, 14:39

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

Единственное у меня ограничение цикла надо ставить x>0 - не заметил первый cos
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Да, пардон, бесконечного цикла не будет. Просто вынос префиксного декремента из "правильного" места в for в саму формулу уж никак не добавляет читабельности. Если это меня сбило с толку (хотя каюсь, спешил и смотрел невнимательно), то новичку вообще мозг взорвёт :)
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить