Задать вопрос
@leokodian
Новичок c++

Не могу найти ошибку в цикле.Что делать?

Пользователем вводится интервал от h до m.При этом h должен быть меньше, чем m.H и M -вещественные числа. Нужно определить количество чисел последовательности (n-1)^2/n,(n=1,2,3,...),попадающих в интервал [h,m].
Вывести на экран найденные числа и их кол-во.

Мой код:
#include <iostream >
using namespace std;
int  main()
{
setlocale (0, "");
float h,p=0,m;
int n=1,count =1;
cout<<"Введите числа [h,m]"<<endl;
cin>>h>>m;
while (p<=m)
{
   if (p>=h)
   {
       cout<<count<<"-e число:"<<p<<endl;
       count++;
    }
   p=((n-1)*(n-1))/n;
   n++;
}
system("pause");
return 0;
}
  • Вопрос задан
  • 112 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Разработчик C++
    9 месяцев
    Далее
  • Нетология
    Специалист по информационной безопасности + нейросети
    12 месяцев
    Далее
  • Компьютерная академия «TOP»
    Учебная программа “Разработка программного обеспечения”
    30 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
0xD34F
@0xD34F
Переменная n объявлена как целочисленная:

int n=1

Соответственно, результат выражения

((n-1)*(n-1))/n

тоже будет целым. Чтобы был вещественным, в выражении должно быть где-то использовано вещественное значение.

Можно выполнять для n приведение типов: ((n - 1) * (n - 1)) / (float) n.

Или пусть одна из использованных в выражении констант будет вещественной: ((n - 1.0) * (n - 1)) / n.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы