Дана последовательность: p(n)=1/2;4/4;...;n^2/2^n...
Составить программу c использованием цикла do...while, выводящую на экран номер первого члена последовательности меньшего e, и его значение.
Использовать цикл do...while.
Входной формат: вещественное число
Выходной формат: целое число, вещественное число
Пример: Ввод - 0.1 Вывод - 10 0.0977
Написал:
#include
#include
int main () {
int n=1;
float value, e;
scanf("%f",&e);
do
{
value=n*n/pow(2,n);
n=n+1;
}
while(value>e);
printf("%i %f",n,value);
}
Он выводит 11 0.0977, а не 10 0.0977. Если меняю 1 на 0, то получается вообще другое.
которую ты написал, не выводит корректный результат, потому что у тебя пропущено имя библиотеки. Для использования функции pow() нужно подключить библиотеку math.h. Попробуй заменить строку
#include
#include
на
#include
#include
Также, для того чтобы получить результат, близкий к ожидаемому (10), нужно изменить начальное значение n на 0. Вот исправленный исходный код:
#include
#include
int main() {
int n = 0;
float value, e;
scanf("%f", &e);
do {
value = pow(n, 2) / pow(2, n);
n = n + 1;
} while(value > e);
printf("%i %f", n-1, value);
return 0;
}
Теперь программа должна правильно выводить результаты для введенного значения e. Обрати внимание, что значение n выводится с оффсетом 1, поэтому при выводе нужно использовать значение n-1.