Составить программу табулирования функции у = 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 шт):
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)
}
теперь по ошибкам:
где в вашем коде вы в цикле вычисляете
x, по которому потом вычисляетеy?вы в цикле идете от границы
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);
}