Программа зависает после ввода данных - C (СИ)

Узнай цену своей работы

Формулировка задачи:

#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
int n;
double ypred, y,F,F1,eps=0.10;
double *x=new double [n];
delete []x;
cout << "Enter n";
cin >> n;
for (int j=1; j<=n; j++)
{
cout << "Enter x";
cin >> x[j];
}
for (int j=1; j<=n; j++) {
ypred = -(sqrt(1+x[j]*x[j]))/(1+0.4*x[j]*x[j])/(3+x[j]*x[j]);
do{
y=ypred;
F=y*(3+x[j]*x[j])+(sqrt(1+x[j]*x[j]))/(1+0.4*x[j]*x[j])+2*(sin(1+y));
F1=3+x[j]*x[j]+2*(cos(1+y));
y-=F/F1;
}
while ( fabs(ypred-y)>eps);
 
cout <<"("<<x<<";"<<y<<")";
}
return 0;
 
}
программка входит цикл, и зависает, после ввода данных!

Решение задачи: «Программа зависает после ввода данных»

textual
Листинг программы
#include <iostream.h>
#include <math.h>
#include <conio.h>
 
using namespace std;
 
double fi(double x)    {return (3+x*x) ;}
double ksi (double x)  {return sqrt(1+x*x)/(1+0.4*x*x);}
double lam (double y)  {return  2*sin(1+y);}
double lam1 (double y) {return  2*cos(1+y);} // производная
 
int main()
{
int n;
double ypred,y,eps=0.10;
 
    cout << "Enter n ";
    cin >> n;
 
double *x = new double[n];
 
    for (int j=0; j<n; j++)
    {
        cout << "Enter x ";
        cin >> x[j];
    }
 
    for (int j=0; j<n; j++)
    {
        y = -ksi(x[j])/fi(x[j]);
        do
          {
            ypred=y;
            y-=( y*fi(x[j])+ksi(x[j])+lam(y) ) / ( fi(x[j])+lam1(y) );
          }
        while ( fabs(ypred-y)>eps);
        cout <<"\n("<<x[j]<<";"<<y<<")";
    }
 
delete []x;
getch();
 
return 0;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.333 из 5
Похожие ответы