После 23 строки ( cin >> h) прога встает и ничего не происходит. Код ниже #include <iostream> #include <cmath> using namespace std; double F(double a, double x){ double ret; if(a<0)return sin(a+x)*sin(a+x); return sin(1+a*x-x*x); } int main(){ int n, m; double z0,z1,h; cout << "Enter z0:" << endl; cin >> z0; cout << "Enter z1:" << endl; cin >> z1; cout << "Enter n:" << endl; cin >> n; cout << "Enter m:" << endl; cin >> m; cout << "Enter h:" << endl; cin >> h; int* arrfi = new int[m]; for(int i = 0; i < m; i++) { arrfi[i] = 0; } for(int i = 2; i < n; i++){ double zi = F(z0,z1); zi = (zi+1.5)*(zi+1.5); z0 = z1; z1 = zi; for(int j = 1; j < m; i++){ int temp1 = (j-1)*h; int temp2 = j*h; if( (temp1 <= zi) && (temp2 > zi) ){ arrfi[j-1]+=1; } } } for(int i = 0; i < m; i++){ cout << arrfi[i] << " "; } } C #include <iostream> #include <cmath> using namespace std; double F(double a, double x){ double ret; if(a<0)return sin(a+x)*sin(a+x); return sin(1+a*x-x*x); } int main(){ int n, m; double z0,z1,h; cout << "Enter z0:" << endl; cin >> z0; cout << "Enter z1:" << endl; cin >> z1; cout << "Enter n:" << endl; cin >> n; cout << "Enter m:" << endl; cin >> m; cout << "Enter h:" << endl; cin >> h; int* arrfi = new int[m]; for(int i = 0; i < m; i++) { arrfi[i] = 0; } for(int i = 2; i < n; i++){ double zi = F(z0,z1); zi = (zi+1.5)*(zi+1.5); z0 = z1; z1 = zi; for(int j = 1; j < m; i++){ int temp1 = (j-1)*h; int temp2 = j*h; if( (temp1 <= zi) && (temp2 > zi) ){ arrfi[j-1]+=1; } } } for(int i = 0; i < m; i++){ cout << arrfi[i] << " "; } }
mondaylevi, проблема в вашем коде находится внутри второго цикла `for(int j = 1; j < m; i++)`. Вместо инкремента переменной `j`, вы инкрементируете переменную `i`, что приводит к бесконечному циклу и зависанию программы. Вам нужно заменить `i++` на `j++` во втором цикле, чтобы исправить эту ошибку. Вот исправленный код: #include <iostream> #include <cmath> using namespace std; double F(double a, double x){ double ret; if(a<0)return sin(a+x)*sin(a+x); return sin(1+a*x-x*x); } int main(){ int n, m; double z0,z1,h; cout << "Enter z0:" << endl; cin >> z0; cout << "Enter z1:" << endl; cin >> z1; cout << "Enter n:" << endl; cin >> n; cout << "Enter m:" << endl; cin >> m; cout << "Enter h:" << endl; cin >> h; int* arrfi = new int[m]; for(int i = 0; i < m; i++) { arrfi[i] = 0; } for(int i = 2; i < n; i++){ double zi = F(z0,z1); zi = (zi+1.5)*(zi+1.5); z0 = z1; z1 = zi; for(int j = 1; j < m; j++){ int temp1 = (j-1)*h; int temp2 = j*h; if( (temp1 <= zi) && (temp2 > zi) ){ arrfi[j-1]+=1; } } } for(int i = 0; i < m; i++){ cout << arrfi[i] << " "; } } C #include <iostream> #include <cmath> using namespace std; double F(double a, double x){ double ret; if(a<0)return sin(a+x)*sin(a+x); return sin(1+a*x-x*x); } int main(){ int n, m; double z0,z1,h; cout << "Enter z0:" << endl; cin >> z0; cout << "Enter z1:" << endl; cin >> z1; cout << "Enter n:" << endl; cin >> n; cout << "Enter m:" << endl; cin >> m; cout << "Enter h:" << endl; cin >> h; int* arrfi = new int[m]; for(int i = 0; i < m; i++) { arrfi[i] = 0; } for(int i = 2; i < n; i++){ double zi = F(z0,z1); zi = (zi+1.5)*(zi+1.5); z0 = z1; z1 = zi; for(int j = 1; j < m; j++){ int temp1 = (j-1)*h; int temp2 = j*h; if( (temp1 <= zi) && (temp2 > zi) ){ arrfi[j-1]+=1; } } } for(int i = 0; i < m; i++){ cout << arrfi[i] << " "; } } Попробуйте запустить исправленный код и проверьте, работает ли он как ожидается.