IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Помогите разобраться с переменными в 2-х процедурах.
Jack K.
сообщение 10.05.2007 21:26
Сообщение #1





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Всем доброго времени суток! Вот возникла проблемка... Немогу связать 2 процедуры для подсчета arctg(x) через ряд Тейлора... проблема в локальных/глобальных переменных или еще передачу по ссылке или по значению где нить напутал 100%... я в тупике. Пжжалста помогите, кто нить!!! mega_chok.gif
Вот так вот я ее написал:

Program finish;
uses CRT;
Var x,xmin,n,j,xmax,f,dx,eps,q,c,k,m:real;

procedure input(var a:real);
begin
          read(a);
end;

procedure arctg(x:real;var f:real);


begin
          c:=1;
          n:=0;
          f:=0;
      repeat
          j:=-(2*n-1)/((2*n-1)*x*x);
          c:=c*j;
          f:=f+c;
          until abs(f)<eps;
end;

procedure tab(xmin,xmax,q,x:real;var c:real);

begin
           k:=0;
            x:=xmin;
          writeln ('x           po Teyloru           chislo chlenov        arctan(x)  ');
          while x<=xmax do begin

          arctg(x,f);
          m:=arctan(x);
          k:=k+1;
          x:=x+dx;
          writeln(x:2:2,'         ', c:4:4{zn-e arctg(x)},'                  ', k:4:1,'              ', m:4:4) ;
          end;
         end;
 Begin

 clrscr;
   writeln('programma vichislyaet znachenie funkcii arctg(x) s pomoshu ryada Teylora');

   write('vvedite xmin:');
   input(xmin);
   write('vvedite xmax:');
   input(xmax);
   write('vvedite step:');
   input(dx);
   write('vvedite tochnost:');
   input(eps);

   tab (xmin,xmax,q,x,c);
   readkey;
END.



Сообщение отредактировано: Jack K. - 10.05.2007 21:31
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Jack K.
сообщение 18.06.2007 21:00
Сообщение #2





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Цитата(Jack K. @ 10.05.2007 22:26) *

Всем доброго времени суток! Вот возникла проблемка... Немогу связать 2 процедуры для подсчета arctg(x) через ряд Тейлора... проблема в локальных/глобальных переменных или еще передачу по ссылке или по значению где нить напутал 100%... я в тупике. Пжжалста помогите, кто нить!!! mega_chok.gif
Вот так вот я ее написал:

Program finish;
uses CRT;
Var x,xmin,n,j,xmax,f,dx,eps,q,c,k,m:real;

procedure input(var a:real);
begin
          read(a);
end;

procedure arctg(x:real;var f:real);
begin
          c:=1;
          n:=0;
          f:=0;
      repeat
          j:=-(2*n-1)/((2*n+1)*x*x);
          c:=c*j;
          f:=f+c;
          until abs(f)<eps;
end;

procedure tab(xmin,xmax,q,x:real;var c:real);

begin
           k:=0;
            x:=xmin;
          writeln ('x           po Teyloru           chislo chlenov        arctan(x)  ');
          while x<=xmax do begin

          arctg(x,f);
          m:=arctan(x);
          k:=k+1;
          x:=x+dx;
          writeln(x:2:2,'         ', c:4:4{zn-e arctg(x)},'                  ', k:4:1,'              ', m:4:4) ;
          end;
         end;
 Begin

 clrscr;
   writeln('programma vichislyaet znachenie funkcii arctg(x) s pomoshu ryada Teylora');

   write('vvedite xmin:');
   input(xmin);
   write('vvedite xmax:');
   input(xmax);
   write('vvedite step:');
   input(dx);
   write('vvedite tochnost:');
   input(eps);

   tab (xmin,xmax,q,x,c);
   readkey;
END.



з.ы. подправил j в первой процедуре... там "-" на "+" исправил.. аааа, очень надо!! завтра сдавать...

Сообщение отредактировано: Jack K. - 18.06.2007 21:05
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 18.06.2007 21:33
Сообщение #3


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


формулу разложения дай...


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Jack K.
сообщение 18.06.2007 21:36
Сообщение #4





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Цитата(мисс_граффити @ 18.06.2007 22:33) *

формулу разложения дай...


Вотъ


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 18.06.2007 22:05
Сообщение #5


Гость






Замени свою процедуру arctg вот на это:
procedure arctg(x:real;var f:real);
var
  j: real;
  sign, n: integer;
begin
  sign := -1;
  n := 0;
  f := Pi/2;
  j := x;
  repeat
    j := j / (x*x);
    c := j / (2*n + 1);
    f := f + sign * c;
    sign := - sign;
    inc(n);
  until abs(c) < eps;
end;



А в процедуре Tab печатай не С, а F:
writeln(x:2:2,'         ', F:4:4{zn-e arctg(x)},'                  ', k:4:1,'              ', m:4:4) ;


Сообщение отредактировано: volvo - 18.06.2007 22:07
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 18.06.2007 22:17
Сообщение #6


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


...а еще половину глобальных переменных можно убрать.
у меня, в общем, так получилось:
Program finish;
uses CRT;
Var xmin,xmax,dx,eps:real;

procedure input(var a:real);
  begin
  readln(a);
  end;

procedure arctg(x:real;var f:real;var n: integer);
  var c,j: real;
  begin
  n:=0;
  c:=-x;
  f:=pi/2;
  repeat
    j:=1/((2*n+1)*c);
    c:=-c*sqr(x);
    n:=n+1;
    f:=f+j;
  until abs(j)<eps;
  end;

procedure tab(xmin,xmax,dx:real);
  var x,f: real;
  k: integer;
  begin
  x:=xmin;
  writeln ('x           po Teyloru           chislo chlenov        arctan(x)  ');
  while x<=xmax do
    begin
    arctg(x,f,k);
    writeln(x:2:2,'         ', f:4:4{zn-e arctg(x)},'                  ', k:4,'              ', arctan(x): 4 : 4) ;
    x:=x+dx;
    end;
  end;

 Begin

 clrscr;
   writeln('programma vichislyaet znachenie funkcii arctg(x) s pomoshu ryada Teylora');

   write('vvedite xmin:');
   input(xmin);
   write('vvedite xmax:');
   input(xmax);
   write('vvedite step:');
   input(dx);
   write('vvedite tochnost:');
   input(eps);

   tab (xmin,xmax,dx);
   readkey;
END.


Сообщение отредактировано: мисс_граффити - 18.06.2007 22:18


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Jack K.
сообщение 18.06.2007 22:40
Сообщение #7





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


мисс_граффити ,volvo ОГРОМЕННОЕ ВАМ СПА-СИ-БО!!! good.gif и "+" соответственно ))

т.е. я так понял, что у меня была с рекурентной формулой беда?

Сообщение отредактировано: Jack K. - 18.06.2007 22:42
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 18.06.2007 22:59
Сообщение #8


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


И с формулой, и выводил не совсем то.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Jack K.
сообщение 18.06.2007 23:08
Сообщение #9





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


blink.gif уже 30 минут ищу кнопочку чтобы + поставить wacko.gif почему то рядом с вашим числом плюсов, картинки с изображением + и - не активны... наверно я еще оч мало на этом форуме.. недостаточно прав.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 18.06.2007 23:38
Сообщение #10


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


да, мало сообщений.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Michael_Rybak
сообщение 18.06.2007 23:54
Сообщение #11


Michael_Rybak
*****

Группа: Модераторы
Сообщений: 1 046
Пол: Мужской
Реальное имя: Michael_Rybak

Репутация: -  32  +


Цитата
уже 30 минут ищу кнопочку чтобы + поставить
почему то рядом с вашим числом плюсов, картинки с изображением + и - не активны... наверно я еще оч мало на этом форуме.. недостаточно прав.


Увеличил обоим.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Jack K.
сообщение 19.06.2007 14:24
Сообщение #12





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


сегодня сдал!!! это была последня прога с прошлого семестра на зачет, штук 15 я сдал в январе-феврале, а с этой запарился))

Выкладываю итоговую версию задачи smile.gif (вдруг кому пригодится)
Задание было таким:
Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от xmin до xmax с шагом dx с точностью e.
Каждая строка таблицы должна содержать значение аргумента, значение функции и количество просуммированных членов ряда. Операции ввода исходных данных, вычисления функции с помощью ряда Тейлора и табулирования функции реализовать в виде отдельных подпрограмм (процедур и функций).

  Program finish;
uses CRT;
Var c,x,xmin,xmax,dx,eps,k,m,f:real;

procedure input(var a:real);
begin
          read(a);
end;

procedure arctg(x:real;var f:real);
var
  j: real;
  sign, n: integer;
begin
  n := 1;
  c:=-1/x;
  f := Pi/2+c;

  repeat
    c :=c*(-(2*n-1)/((2*n + 1)*(x*x)));
    f := f + c;
    inc(n);
  until abs(c) < eps;
end;

procedure tab(xmax,x:real;var c:real);
var k,m:real;
begin
           k:=0;
            x:=xmin;
          writeln ('x           po Teyloru           chislo chlenov        arctan(x)  ');
          while x<=xmax do begin
          arctg(x,f);
          m:=arctan(x);
          k:=k+1;
          writeln(x:2:2,'         ', f:6:6{zn-e arctg(x)},'                  ', k:4:1,'              ', m:6:6) ;
          x:=x+dx;
          end;
         end;
 Begin

 clrscr;
   writeln('programma vichislyaet znachenie funkcii arctg(x) s pomoshu ryada Teylora');

   write('vvedite xmin:');
   input(xmin);
   write('vvedite xmax:');
   input(xmax);
   write('vvedite step:');
   input(dx);
   write('vvedite tochnost:');
   input(eps);

   tab (xmax,x,c);

   readkey;
END.   


p.s. Michael_Rybak, спсиб за плюсы smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 19.06.2007 15:52
Сообщение #13


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


странную вещь ты сотворил....
зачем - я не поняла. я ж вроде выложила полную работающую программку, без лишних глобальных переменных... без НЕИСПОЛЬЗУЮЩИХСЯ переменных (а у тебя и такие есть).
ну взял бы подпрограмму arctg у volvo ... но брать описание переменных в его версии, а все остальное - в моей... оригинально.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 29.07.2025 10:28
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"