Составить программу табулирования функции у = f (x) У меня почемуто вечний цикл?

Составить программу таблирования функции у = f (x) на интервале [a; b] с шагом h ровно (b-a)/N, где N это целое число (вводится с клавиатуры). Велечини которие нужно найти ето суммы y>-0.1 и y<-0.1 Я пробивал сам написать вот код но не получается я не очень понял задание и у меня вечний цикл пишет что число nan.

#include <iostream>
#include <stdio.h>
#include <math.h>

int main()
{
    int x = 3;
    int n;
    int b = 1;
    float a = 0.5;
    scanf("%d", &n);
    float h = (b - a) / n;
    for (int i = a; i < b; i += h)
    {
        float y = x / asin(x);
        printf("%f", y);
    }
}

Ответы (1 шт):

Автор решения: Zhihar
  float h=(b-a)/n;
  for(int i=a;i<b; i+=h){
      float y=x/asin(x);
      printf("%f",y);
  }

начну с мелочи - в таких вещах точнее (лучше) идти с целочисленным шагом от 0 до n, чем каждый раз добавлять смещение к позиции и идти от границы a к границе b - точность меньше страдает, т.е.

for (int i = 0; i < n; i++) {
    const float x = a + i * (b - a) / (n - 1)
}

теперь по ошибкам:

  1. где в вашем коде вы в цикле вычисляете x, по которому потом вычисляете y?

  2. вы в цикле идете от границы a к b, но не с помощью числа с плавающей запятой, а целочисленного числа!!!

     for(int i=a;i<b; i+=h){
    

надо тогда править на

    for(float i=a;i<b; i+=h){

Результат (значение только произвольные поставил):

int main()
{
    // получить кол-во точек в графике
    int n;
    scanf("%d",&n);

    // проанализировать данные
    const float a = 0;
    const float b = 10;

    const float sum = 0;

    for(int index = 0; index < n; index ++){
        // определить значение координаты x
        const float x = a + index * (b - a) / (n - 1)

        // определить значение координаты y
        const float y = x / asin(x);

        // подсчитать сумму значений в заданном диапазоне
        if ((y >= 0) && (y <= 5))
            sum += y;

        // вычислить результаты на экран
        printf("%f", y);
    }

    // вывести на экран сумму
    printf("%f", sum);
}
→ Ссылка