Уменя есть рабочий код на паскале var a, k, s, b, x1, x2, y1, y2, h: real; n, j: integer; begin a : = -1; b : = 1; n : = 2; repeat k : = s; s : = 0; for j : = 1 to n do begin h : = (b - a) / n; x1 : = a + h * (j - 1); x2 : = x1 + h; y1 : = sqr(x1); y2 : = sqr(x2); s : = s + (y1*h + y2*h) / 2; end; n : = n + 1; if abs(s-k) < 0.01 then begin writeln(1); break; end; until n< 0; writeln(s); writeln(n); end. нужно перевести его в с++, вот что у меня получилось #include #include using namespace std; int main() { float a,b,h,x1,x2,y1,y2,k,s; int j,n; a=-1; b=1; n=1; s=0; do{ k=s; s=0; for(j=1; j< =n; j++) { h=(b-a)/n; x1=a+h*(j-1); x2=x1+h; y1=x1*x1; y2=x2*x2; s=s+(y1*h+y2*h)/2; } n++; cout< if (abs(s-k)< 0,01) break; } while(n> 0); cout< return(0); } проблема в том, что break срабатывает сразу же, проходя цикл do один раз, а затем выходит, хотя условие не соблюденино если 0.01 и abs использовать в отдельных переменных, а затем сравнить их, то цикл становится бесконечным, хотя на 8 шаге условие должно быть соблюденино в чем ошибка и как ее исправить?
125
332
Ответы на вопрос:
Популярно: Информатика
-
BroKeNxHeArT20.07.2020 08:14
-
davidpizhuk1345678915.10.2022 13:46
-
Olga2000466609.04.2020 12:19
-
gustzhatetskiy02.10.2020 19:03
-
20Bella0415.08.2020 14:24
-
coollest01.08.2021 00:47
-
mischad02.12.2021 02:29
-
kalishevij9927.12.2020 14:16
-
Ailina2407.03.2023 23:41
-
abereziuk201727.06.2023 21:27