У меня есть рабочий код на паскалеvar a, k, s, b,

У меня есть рабочий код на паскале

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 абс(s-k) lt; 0.01 then begin writeln(1); break; end;
until nlt;0;
writeln(s);
writeln(n);

end.

Нужно перевести его в с++, вот что у меня получилось

include lt;iostreamgt;
include lt;cmathgt;

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;jlt;=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++;
coutlt; if (абс(s-k)lt;0,01)
break;

while(ngt;0);
coutlt; return(0);


Неувязка в том, что break срабатывает сходу же, проходя цикл do один раз, а потом выходит, желая условие не соблюденино

Если 0.01 и абс использовать в отдельных переменных, а потом сопоставить их, то цикл становится бесконечным, желая на 8 шаге условие должно быть соблюденино

В чем ошибка и как ее исправить?

Задать свой вопрос
2 ответа
include lt;iostreamgt;
include lt;cmathgt;

using namespace std;

int main()
   float a(-1),b(1),h,x1,x2,y1,y2,k,s(0);
   int n(2);
   do
      k=s; s=0;
      for (int j=1; jlt;=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++;
      if (abs(s-k)lt;0.01)
         cout lt;lt; "1" lt;lt; endl;
         break;
     
  
   while(ngt;=0);
   cout lt;lt; s lt;lt;endl lt;lt; n lt;lt; endl;
   return(0);

Не верно используешь cout
Юлия Тарадеева
Ща исправлю
Ангелина Скудная
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++; if (абс(s-k)<0,01) cout<<"1"; break; break; while(n>0); cout<
Кирилл Вербников
выводит 12, это верно?
Семён Несанов
include "stdafx.h"include 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 = 2; 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++; if (абс(s - k) < 0.01) cout << "1"<0); printf("%f \n %d \n", s,n); system("pause"); return(0);
Руслан Столпников
100 Проц правильно
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт