Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подскажите, помогите! [D6, D7, XP]


Dominic ©   (2007-06-01 13:31:00) 

Скажите, плиз, кто знает, где ошибка в программе! Должен вычисляться синус при заданной точности вычисления...
procedure TForm1.Button1Click(Sender: TObject);
var
  y:real;// вычисляемое значение y
  t:real;// точность вычисления
  n:integer;// номер члена ряда
  f:integer;   // факториал
  h:integer;
  elem:real;// значение члена ряда
  x:real;
  z:real;
  i:integer;
  begin
    h:=0;
    f:=1;
    y:=0;
    n:=1;
    t:=StrToFloat(Edit2.Text);
    x:=StrToFloat(Edit1.Text);
    elem:=1;// чтобы начать цикл
  while elem>=t do
  begin
    h:=h+1;
    f:=f*(2*h+1);
    elem:=((-1)*n*x*(2*n+1))/f;
       if n MOD 2=0
         then y := y - elem
           else
             y:=y+elem;
             n:=n+1;
  end;
    z:=x+y;
    Memo1.Text:=FloatToStr(z);
end;


MBo   (2007-06-05 06:52:00) [1]

найди 3 отличия


x2 := -x * x;
elem := 1;
h := 1;
y := 1;
while Abs(elem) >= t do begin
  elem := elem * x2 / (h * (h + 1));
  y := y + elem;
  h := h + 2;
end;


Dominic   (2007-06-04 21:26:00) [2]

Хотя бы подскажите где ошибка, я не понимаю:(
procedure TForm1.Button1Click(Sender: TObject);
var
  y:real;// Вычисляемое значение y
  t:real;// Точность вычисления
  n:integer;//Номер члена ряда
  h:integer;
  elem:real;//Значение члена ряда
  x:real;
  z:real;
  g:real;
  x2:real;
  begin
    h:=0;
    y:=0;
    n:=1;
    t:=StrToFloat(Edit2.Text);
    x:=StrToFloat(Edit1.Text);
   for n:=1 to h do
   begin
      h := h * n;
   end;
   x2 := -x * x;
elem := x;
h := 2;
y := 0;
while Abs(elem) > t do begin
  elem := elem * x2 / h ;
  y := y + elem;
  h := h + 2;
      if n MOD 2=0
        then y := y - elem
          else
            y:=y+elem;
            n:=n+1;
  end;
    z:=x+y;
    Memo1.Text:=FloatToStr(z);
end;


Dominic   (2007-06-04 20:26:00) [3]

C for не получается, не знаю как расписать...


Правильный Вася   (2007-06-04 20:04:00) [4]

а по образцу


Dominic   (2007-06-04 19:20:00) [5]

Спасибо за ответ! Но теперь я не могу для косинуса написать такую же программу... Мне нужно, чтобы считался факториал с оператором FOR и всё это участвовало в вычислении cos'а.. Числовой ряд при разложении cos записывается как (-1)^n*(x^2n)/(2n)! Скажите, плиз, кто знает как сделать!


MBo   (2007-06-01 15:56:00) [6]

> Dominic  
Я привел код, который считает синус, аргумент  - x, значение синуса в переменной y


ANB   (2007-06-01 14:22:00) [7]


> Должен вычисляться синус при заданной точности вычисления.
> ..

RoundTo(sin(X), N)
:)


Dominic   (2007-06-01 14:08:00) [8]

неа, всё равно 0 получается:( в формуле синуса ошибка, скорее всего.. А проверка не нужна, вроде..


MBo   (2007-06-01 14:03:00) [9]


 x2 := -x * x;
 elem := x;
 h := 2;
 y := x;
 while Abs(elem) >= t do begin
   elem := elem * x2 / (h * (h + 1));
   y := y + elem;
   h := h + 2;
 end;


Desdechado   (2007-06-01 13:53:00) [10]

real заменить на extended
точность вроде же определяется разницей соседних членов ряда
где же проверка?


Наверх

Титульная страница Поиск, карта сайта Написать письмо