#include <iostream>
using namespace std;
int main()
{
int a, n;
float s;
s = 1,5;
n = 2;
cout << "vvedite a:";
cin >> a;
while (a >= s) {
n++;
s += 1 / n;
}
cout << "naim n=" << n;
return 0;
}
в 14 строке (s += 1 / n;) происходит деление на ноль, но я понятия не имею откуда он взялся о:
Необработанное исключение по адресу 0x00007FF7405C1068 в Проект1.exe: 0xC0000094: Integer division by zero.
Самая глупая ошибка у вас в s = 1,5;
- в C++ нужно использовать точку, а не запятую.
Вторая по глупости ошибка в том, что вы используете целочисленное деление
s += 1 / n;
которое всегда дает (при n > 1
) нуль. Так что программа зациклится, n
перевалит за границу допустимого и станет 0.
Но и это еще не все. Все равно ваш метод расчетов для int n
не может дать значение выше примерно 22.064778 - это все, что вы можете получить (при n
достигающем максимального представимого этим типом значения).
Гармонический ряд - ОЧЕНЬ медленно расходящийся ряд (для того, чтобы сумма превысила 100, необходимо около 1043 элементов ряда). Да, эта сумма станет заведомо больше любого значения... но при таких n
, что вашей жизни (а то и жизни вселенной) не хватит, чтоб этого дождаться. Ну, и точности компьютера тоже не хватит :)
Эта задача решается не так - по крайней мере для достаточно больших n
.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть ли возможность сделать инициализацию vector<char> из строки одной строкой кода? Я делаю так:
сколка времени надо на чтение числа scanf c++?