Форум программистов, компьютерный форум CyberForum.ru

Вычислить произведение ряда - C++

Восстановить пароль Регистрация
 
Павел апостол
0 / 0 / 0
Регистрация: 27.12.2009
Сообщений: 12
17.01.2010, 17:19     Вычислить произведение ряда #1
Дано натуральное число n. Вычислить
(1+1/1^2)*(1+1/2^2)…(1+1/n^2)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
   int i;
   double n,s,d;
   cout<<"vvedite n=";
   cin>>n;
   for (i=1;i<=n;i++)
   {
      s=(1+1/(i*i));
     d=s*s;
      
      
   }
   cout<<d<<endl;
   system("PAUSE");
   return EXIT_SUCCESS;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2010, 17:19     Вычислить произведение ряда
Посмотрите здесь:

Вычислить произведение ряда C++
Вычислить произведение ряда C++
C++ Вычислить произведение ряда
C++ Вычислить произведение ряда
Вычислить произведение ряда C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
17.01.2010, 17:30     Вычислить произведение ряда #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
 
int main(int argc, char *argv[])
{
    double n,s,d=1;
    cout<<"vvedite n=";
    cin>>n;
    for (double i=1;i<=n;i++)
    {
        s=(double)(1+1/(i*i));
        d*=s*s;
    }
    cout<<d<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
ответ проверь
Павел апостол
0 / 0 / 0
Регистрация: 27.12.2009
Сообщений: 12
17.01.2010, 17:33  [ТС]     Вычислить произведение ряда #3
Всё равно чё то не то
Shymep
 Аватар для Shymep
13 / 13 / 0
Регистрация: 10.01.2010
Сообщений: 34
17.01.2010, 17:41     Вычислить произведение ряда #4
А зачем умножать на s^2?
C++
1
d*=s*s;
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
17.01.2010, 18:00     Вычислить произведение ряда #5
Лучше будет так
Код
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
int i;
double n,s,d;
cout<<"vvedite n=";
cin>>n;
d = 1;
for (i=1;i<=n;i++)
{
s=(1+1.0/(i*i));  // Именно так  1.0 !!!
d *= s;
}
cout<<d<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Darky
Быдлокодер
 Аватар для Darky
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
17.01.2010, 18:22     Вычислить произведение ряда #6
Day, И зачем 1.0 ?
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
17.01.2010, 18:42     Вычислить произведение ряда #7
Цитата Сообщение от Darky Посмотреть сообщение
Day, И зачем 1.0 ?
явное указание что тип double, однако, имхо i надо сразу double делать, всё равно потом преобразуется
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
17.01.2010, 19:08     Вычислить произведение ряда #8
Это, безусловно, дело вкуса.
Но мне кажется, что приведение типа надо делать той точке, где это актуально.
А то кто-то всколзь глянет - "чего этот придурок переменную цикла в double обрядил..."
И потом - не верю я в арифметику действительных чисел на компе
Конструкция if (i = n) при double i, int n - ох какая скользкая!
Shymep
 Аватар для Shymep
13 / 13 / 0
Регистрация: 10.01.2010
Сообщений: 34
17.01.2010, 19:21     Вычислить произведение ряда #9
Day, при разработках в современных IDE, с учетом оптимизаторов кода, это уже не проблема. Понятно, что есть классы задач, на которых можно использовать свою многобайтовую. Но реальный эксперимент, проводимый еще лет 6 назад для задачи, которая действительно требовала точности знака до 7-8, показал, что Borland CBuilder6, MatLab и собственный класс выдал одинаковый ответ до 13 знака.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2010, 20:09     Вычислить произведение ряда
Еще ссылки по теме:

C++ Вычислить произведение ряда
Вычислить произведение ряда C++
Вычислить произведение ряда C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
17.01.2010, 20:09     Вычислить произведение ряда #10
Ты совершенно прав!
Просто у меня идиосинкразия на тип float, double и прочее
Столько пришлось помучиться, чтоб совпадали суммы вычисленные по горизонтали
и вертикали!
Правдо было это в незапямятные времена языка PL/1.
Это мы сейчас думаем - ну и монстр!
А тогда это был весма прогрессивный язычище!

А целое - оно и в Африке целое (пока не пробьет разрядную сетку (MAX_INT))
Yandex
Объявления
17.01.2010, 20:09     Вычислить произведение ряда
Ответ Создать тему
Опции темы

Текущее время: 06:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru