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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2010, 02:38   #1
)Free(
Новичок
Джуниор
 
Регистрация: 07.12.2010
Сообщений: 2
Вопрос Функция. Паскаль.

Написать программу используя функцию.
s1=summa(((abs(x[i]))^i)/i!)
s2=summa(((abs(x[i]-s1))^i)/i!)
s3=summa(((abs(x[i]-s2))^i)/i!)
Нужно вывести на экран s1,s2,s3.

Не понимаю где у меня ошибка
Изображения
Тип файла: jpg Снимок.jpg (31.8 Кб, 137 просмотров)
Тип файла: jpg Снимок2.jpg (32.0 Кб, 131 просмотров)
)Free( вне форума Ответить с цитированием
Старый 07.12.2010, 08:23   #2
Serebro
FORTRAN programmer
Форумчанин
 
Регистрация: 08.12.2009
Сообщений: 153
По умолчанию

Нужно было привести код программы в виде текста, а не в виде двух картинок.

во внутреннем цикле не используется параметр цикла j.

Последний раз редактировалось Serebro; 07.12.2010 в 08:34.
Serebro вне форума Ответить с цитированием
Старый 07.12.2010, 08:44   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Шож все так сложно?
Предлагаю еще сильнее усложнить:
Код:
const n=3;  
var x:array[1..n] of integer;
 function summa(ss:double):double;
 var i,fac:integer;s,as1:double;
 begin
  as1:=abs(x[1]-ss);fac:=1;
  s:=as1;
  for i:=2 to n do begin
   as1:=as1*abs(x[i]-ss);
   fac:=fac*i;
   s:=s+as1/fac;
  end;
  Result:=s;
 end;
var s1,s2,s3:Double;i:integer;
begin         randomize;
 for i:=1 to n do begin
  x[i]:=1+random(50);write(x[i]:5);
 end;    writeln;
 s1:=summa(0); s2:=summa(s1); s3:=summa(s2);
 write(s1:5:2,' ',s2:5:2,' ',s3:5:2);readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.12.2010, 09:47   #4
Serebro
FORTRAN programmer
Форумчанин
 
Регистрация: 08.12.2009
Сообщений: 153
По умолчанию

Код:
 function summa(ss:double):double;
 var i,fac:integer;s,as1:double;
 begin
  as1:=abs(x[1]-ss);fac:=1;
  s:=as1;
  for i:=2 to n do begin
   as1:=as1*abs(x[i]-ss);
   fac:=fac*i;
   s:=s+as1/fac;
  end;
  Result:=s;
 end;
Получится
Код:
abs(x[1]-ss)
abs(x[1]-ss)*abs(x[2]-ss)
...
abs(x[1]-ss)*abs(x[2]-ss)*...abs(x[n]-ss)
а нужно:
Код:
abs(x[1]-ss)
abs(x[2]-ss)*abs(x[2]-ss)
....
abs(x[n]-ss)*abs(x[n]-ss)*...abs(x[n]-ss)
Serebro вне форума Ответить с цитированием
Старый 07.12.2010, 21:26   #5
)Free(
Новичок
Джуниор
 
Регистрация: 07.12.2010
Сообщений: 2
Печаль

Serebro, я если честно не очень понял...-по-моему, даже используя ваш код программа неправильно считает самое первое значение, то есть s1. а что уж тогда говорить о s2 и s3...
)Free( вне форума Ответить с цитированием
Старый 08.12.2010, 13:32   #6
Serebro
FORTRAN programmer
Форумчанин
 
Регистрация: 08.12.2009
Сообщений: 153
По умолчанию

Код:
 function summa(ss:double):double;
 var i,j,factorial:integer;s,Result:double;
 begin

   Result:=0;
  for i:=1 to n do 
   begin
     s:=1;
     factorial:=1;
     for j:=1 to i do 
           begin 
             s:=s*abs(x[j]-ss);
             factorial:=factorial*j;
           end;
   Result:=Result+s/factorial;
   end;

summa:=Result;

 end;

Последний раз редактировалось Serebro; 08.12.2010 в 13:37.
Serebro вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекурсивная функция для нахождения, паскаль ~Mi@mi~ Помощь студентам 3 13.10.2010 19:38
Функция вычисления факториала (Паскаль)) Doublefaced Помощь студентам 12 01.10.2009 23:34
(паскаль) Обработка кв. матрицы. Программа есть. Не корректно работает функция SUM.. aslanbek999 Помощь студентам 3 02.06.2009 19:51
Паскаль,функция и множество pavlentus Помощь студентам 4 20.04.2009 20:39