• Есть программа, код приложу,нужно ее переделать используя счетчик.Если не сложно прокомментируйте нововведения. 
    program pr3;
    const a = 2.12;
    const b = 7.45;
    const h = 0.34;
    var  x, f1, f2, y, s: real;
    begin 
    x := a; 
     s := 0;
      REPEAT   
      f1:=3*ln(exp(1/5)*ln(sin(x)+sqr(x))); 
       f2:=((2*x+1)/(x*x*x*x*x)); 
      y := f1 / f2;
        s := s + y; 
       x := x + h; 
    UNTIL x > b; 
     Writeln('S=', s:10:5); 
    end.

Ответы 5

  • без + 1 в конце
  • х у нас меняется от a до b с шагом h. Можно было просто написать до входа в цикл х:=a, а в конце тела цикла поставить x:=x+h. Но беда в том, что это дурной тон. Наращивание значения на h в каждом шаге цикла - не лучшее решение, потому что и a, и h могут точно в машине не представляться (например, нельзя представить шаг 1/3 в виде десятичной дроби, поэтому в программе, если написать 1/3+1/3+1/3, то 1 никогда не получится). И на каждом шаге цикла ошибка накапливается.
  • x=a+(i-1)*h позволяет снизить ошибки накопления, потому что значение х каждый раз получается "с нуля".
    • Автор:

      chiczru3
    • 5 лет назад
    • 0
  • Т.е. при i=1 мы получаем x=a*(1-1)*h=a, при i=2 получим x=a+(2-1)*h=a+h,... И при i=n получаем x=a+(n-1)*h, т.е. b
    • Автор:

      michelle
    • 5 лет назад
    • 0
  • вроде понял,спасибо за объяснение
    • Автор:

      díazhxpg
    • 5 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years