Программа зависает после ввода данных - 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;
}