Есть такая задача из книги:
Объясните пожалуйста, что конкретно требуется найти в данной задаче?
И объясните к чему в тексте задачи указана "Подсказка"?
И не понятно к какому значению должны сходиться последовательности. (если вообще должны)
Я вроде как написал решение, но что то кажется не так как нужно.
Вариант решения 1#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
int main(void)
{
float value = 1.0;
int length;
float result_1 = 0.0;
float result_2 = 0.0;
float number = 1.0;
printf("Input length: ");
while (scanf("%d", &length) == 1 && length > 0)
{
for (int i = 0; i < length; i++, number++)
{
result_1 += (value / number);
if (i % 2 == 0)
result_2 += (value / number);
else
result_2 -= (value / number);
}
printf("1.0 + 1.0 / 2.0 + ... = %f\n", result_1);
printf("1.0 - 1.0 / 2.0 + ... = %f\n", result_2);
printf("Input the next length: ");
}
printf("Done!");
_getch();
return 0;
}
Вариант решения 2#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
int main(void)
{
float value = 1.0;
int length;
float result_1 = 0.0;
float result_2 = 0.0;
float number = 1.0;
printf("Input length: ");
while (scanf("%d", &length) == 1 && length > 0)
{
for (int i = 0; i < length; i++, number++)
{
result_1 += (value / number);
}
number = 1.0;
for (int i = 0; i < length; i++, number++)
{
if (i % 2 == 0)
result_2 += (value / number);
else
result_2 -= (value / number);
}
printf("1.0 + 1.0 / 2.0 + ... = %f\n", result_1);
printf("1.0 - 1.0 / 2.0 + ... = %f\n", result_2);
printf("Input the next length: ");
}
printf("Done!");
_getch();
return 0;
}
Вроде как результаты должны совпадать, но почему то результаты запуска двух решений разные. Подскажите пожалуйста, почему результаты разные (MSVC)? Просто же вычисления разделены на два цикла с теми же условиями.
PS. Скомпилировал оба варианта другим компилятором (GCC). Результат оказался одинаковый в обоих случаях. Почему так?PSS. Что то я вообще запутался. Попытался слегка по разному записать "одно и тоже", в итоге все результаты оказались разными.
Попробовал сначала во втором цикле заменить i на j. Результат другой получился. Потом попробовал привести перед вторым циклом переменные в значению по умолчанию. В итоге опять другой результат.
Такое чувство как будто при запуске циклы работают в перемешку и все данные смешиваются в кучу...