Дана последовательность: 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, то получается вообще другое.

Малышкалюбитспать Малышкалюбитспать    3   09.12.2020 13:09    23

Ответы
bossHor bossHor  18.01.2024 18:00
Программа,
которую ты написал, не выводит корректный результат, потому что у тебя пропущено имя библиотеки. Для использования функции 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.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Другие предметы