Можете объяснить почему программа выдает неправильный ответ? - C#
Формулировка задачи:
Условие задачи: Даны действительные числа a, b ( a << b ). Найти третий член из генерации чисел ((-1)^i) * (1 + 1/2 +.....1/i); (i = 1, 2...), которая не пpинадлежит отрезку [a,b].
namespace ConsoleApplication15
{
class Program
{
static void Main(string[] args)
{
double a = 0, b = 0, r = 0, sum = 0, s = 0, l = 0, k = 32000;
int z;
do
{
Console.WriteLine("- Нажмите 1 и Enter для просмотра условия задачи");
Console.WriteLine("- Нажмите 2 и Enter для ввода отрезка [a, b]");
Console.WriteLine("- Нажмите 3 и Enter для выполнения программы");
Console.WriteLine("- Нажмите 4 и Enter для выхода из программы");
z = Convert.ToInt32(Console.ReadLine());
switch (z)
{
case 1:
Console.WriteLine("Даны действительные числа a, b ( a << b ). Найти третий член из генерации чисел ((-1)^i) * (1 + 1/2 +.....1/i); (i = 1, 2.....) , который не пpинадлежит отрезку [a, b].");
break;
case 2:
Console.Write("Введите значение a = ");
a = Convert.ToDouble(Console.ReadLine());
Console.Write("Введите значение b = ");
b = Convert.ToDouble(Console.ReadLine());
break;
case 3:
for (double i = 1; i <= k; i++)
{
do
{
l = l + 1;
sum += (1 / l);
r = Math.Pow(-1, i) * sum;
if ((r < a) || (r > b))
s++;
}
while (s == 3);
}
Console.WriteLine("Третье число: " + r);
break;
}
}
while (z < 4);
Console.ReadKey();
}
}
}Решение задачи: «Можете объяснить почему программа выдает неправильный ответ?»
textual
Листинг программы
int i = 1;
do
{
l = l + 1;
sum += (1 / l);
r = Math.Pow(-1, i) * sum;
if ((r < a) || (r > b))
s++;
i++;
}
while (s != 3);
Console.WriteLine("Третье число: " + r);
break;