Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2014, 16:54   #1
Stacy31
Новичок
Джуниор
 
Регистрация: 25.11.2014
Сообщений: 5
По умолчанию Операторы цикла (Pascal)

Задание: Выбрать алгоритм, составить блок-схему и программу для вычис-
ления в точках xi = a + i×h, i = 0,1,2…,n, h = (b – a)/n промежутка [a,b]
наибольшего и среднего значений функции y = f(x), указанной в варианте задания. Для выполнения задания воспользоваться оператором цикла
FOR.

Код:
 program U;
uses crt;
var p,v,x,y,a,b,h,la,max:real;
    g,d,n:word;
begin
 write('Vvedite chislo razbieniy(n): ');
     read(n);
     a:=1;
     b:=2;
     h:=(b-a)/n;
 la:=0;
 max:=0;
 for d:=0 to n do
    begin
    x:=a+d*h;
    writeln('x=',x:4:2);

        p:=exp(3*ln(x))/((x+1)*(x+2));
        v:=arctan((1-x)/sqrt(1-(1-x)*(1-x))/exp((1/3)*ln(1-ln(x))));
        y:=p+v;
    writeln('y=',y:4:2);
    la:=la+y;
    writeln('la=',la:4:2);
    if y>max then
      begin
      max:=y;
      writeln('max=',max:4:2);
       end;
       end;
    la:=la/n;
    writeln('srednee arif= ',la:7:5);
    writeln('max= ',max:7:5);
     readln;
     readln;

end.
Выдает ошибку деление на 0. Подскажите, что исправить?
Изображения
Тип файла: jpg Без имени-2.jpg (26.1 Кб, 76 просмотров)
Stacy31 вне форума Ответить с цитированием
Старый 25.11.2014, 18:07   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

В формулах что-то наворочено.
Зачем городить такую жуть, как exp(3*ln(x)) , что нельзя написать простоx*x*x ? В крайнем случае, есть функция Power для всяких степеней.
И там почему-то арктангенс вместо арксинуса.
type_Oleg вне форума Ответить с цитированием
Старый 25.11.2014, 18:25   #3
Stacy31
Новичок
Джуниор
 
Регистрация: 25.11.2014
Сообщений: 5
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
В формулах что-то наворочено...
И там почему-то арктангенс вместо арксинуса.
В Pascal же арксинус числа равен arcsin X = Arctan(X/Sqrt(l - X*X));
Вот поэтому там арктангенс. Или это не правильно?
Stacy31 вне форума Ответить с цитированием
Старый 25.11.2014, 18:50   #4
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

В Pascal есть и функция ArcSin в модуле Math
Поэтому можно так
Код:
// ...
uses crt, Math;
// и т д. 
 y:=x*x*x/(x+1)*(x+2)+ArcSin(1-x)/Power(1-Ln(x),1/3);
// и т .д.
А переменные p, v выбросить
type_Oleg вне форума Ответить с цитированием
Старый 25.11.2014, 18:57   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
program Project1;

var p,v,x,y,a,b,h,la,max:real;
    g,d,n:word;

    function asin(x:real):real;
    var d:real;
    begin
      d:=sqrt(1-x*x);
      if d<>0 then
       asin:=arctan(x/d)
      else
       asin:=0;
    end;

begin
 write('Vvedite chislo razbieniy(n): ');
     n:=10;
     a:=1;
     b:=2;
     h:=(b-a)/n;
 la:=0;
 max:=0;
 for d:=0 to n do
    begin
    x:=a+d*h;
    writeln('x=':5,x:6:2);

        p:=exp(3*ln(x))/((x+1)*(x+2));
        v:=asin(1-x)/exp((1/3)*ln(1-ln(x)));
        y:=p+v;
    write('y=':5,y:6:2);
    la:=la+y;
    writeln('la=':10,la:4:2);
    if y>max then
      begin
      max:=y;
      writeln('max=',max:4:2);
       end;
       end;
    la:=la/n;
    writeln('srednee arif= ',la:7:5);
    writeln('max= ',max:7:5);
     readln;


end.
Годится?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.11.2014, 19:57   #6
Stacy31
Новичок
Джуниор
 
Регистрация: 25.11.2014
Сообщений: 5
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
В Pascal есть и функция ArcSin в модуле Math
Поэтому можно так
Код:
// ...
uses crt, Math;
// и т д. 
 y:=x*x*x/(x+1)*(x+2)+ArcSin(1-x)/Power(1-Ln(x),1/3);
// и т .д.
А переменные p, v выбросить
Спасибо большое. Все получилось! Урашечки!)))))))
Stacy31 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операторы цикла и БД (Pascal) zigzac-zigzac Помощь студентам 0 18.05.2014 16:17
Операторы цикла (Pascal) DenisMPT Помощь студентам 3 22.05.2012 21:38
Операторы цикла (Pascal) DenisMPT Помощь студентам 0 22.05.2012 20:49
Операторы цикла [PASCAL] Ximer Помощь студентам 3 08.04.2009 20:24
Операторы цикла (Pascal) Ximer Помощь студентам 4 19.03.2009 19:56