Нужно в C++ вычислить ∑ 1/i², где i принимает значения от 1 до 50. Программу написал, но она выдаёт
неверное значение суммы. Почему? #include using namespace std; int main () { int S,i; for (S=0, i=1; i<=50; i++) S+=1/(i*i); cout <<"S="< }Ответы на вопрос
using namespace std;
int main ()
{
double S=0;
for (int i=1; i<=50; i++) S+=1.0/(i*i);
cout <<"S="<< S;
}
Результат:
S=1.62513
Я могу помочь вам с вашим вопросом. Ваша программа выдаёт неверное значение суммы, потому что вы используете целочисленную арифметику, а не вещественную. Целочисленная арифметика округляет результаты деления до ближайшего целого числа, поэтому выражение 1/(i*i) будет равно 0 для всех i, кроме 1. Ваша программа по сути считает только первый член ряда, то есть 1/1² = 1. Чтобы получить правильный ответ, вам нужно использовать тип данных double или float для переменных S и i, а также явно привести 1 к этому типу при вычислении 1/(i*i). Например, так:
```c++
#include
Эта программа выведет S=1.62513, что близко к истинному значению суммы ряда, равному π²/6 ≈ 1.64493. Вы можете найти более подробную информацию о сумме квадратов обратных целых чисел на [этой странице](https://brilliant.org/wiki/sum-of-n-n2-or-n3/). Надеюсь, это поможет вам.
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili
