Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача на табулирование
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Василяй
Помогите найти ошибку в этой задаче! Задание такое:
Даны натуральное число N и вещественное a. Вычислить
N (N над значком суммы)
S=∑ (k!- a^k) Не получается у меня правильно написать формулу YYY.gif (если что рисунок внизу)
k=1 (k=1 под значком суммы)

Реализовать заданное выражение в виде функции.
Произвести табулирование полученной функции по двум переменным.

Var j,a,f,d,n,k,a1,a2,n1,i,e:integer;
 res,y:real;
 function summ(n,a:integer):real;
var
 k,i:integer;
 s:real;
Begin
   s:=0;
   k:=1;
    for k:=1 to n do
     begin
      k:=k*i;
      y:=Exp(k*ln(a));
      s:=s+(k-y);
     end;
    summ:=s;
End;

Begin
       writeln('n=');
        read (n);
       writeln ('a=');
        read(n1);
       writeln('shag n=');
        read(f);
       writeln('shag a=');
        read(a1);
       writeln('kolichestvo n=');
        read(d);
       writeln ('kolichestvo a=');
        read(a2);
         e:=a;
           for k:=1 to d do
             begin
              a:=e;
               for j:=1 to a2 do
                begin
                 res:=summ(n,a);
                 writeln(n,' ',a,' ',res);
                 a:=a+a1;
                end;
               n:=n+f;
             end;
End. 
мисс_граффити
у меня получилось вот так:
program summ;
var N1,N2,N: integer;
a2,a, shag: real;

function sum(const N: integer; const a: real): real;
  var k,fact: integer;
  ak,s: real;
  begin
  ak:=1;
  fact:=1;
  s:=0;
  for k:=1 to N do
    begin
    fact:=fact*k;
    ak:=ak*a;
    s:=s+fact-ak;
    end;
  sum:=s;
  end;

begin
writeln('vvedite N1');
readln(N1);
writeln('vvedite N2');
readln(N2);
writeln('vvedite a1');
readln(a);
writeln('vvedite a2');
readln(a2);
writeln('vvedite shag dlya a');
readln(shag);
while a<=a2 do
  begin
  writeln('a=',a:0:2);
  for N:=N1 to N2 do
    begin
    writeln('  N=',N);
    writeln('    sum=',sum(N,a):0:2);
    end;
  a:=a+shag;
  end;
readln;
end.


по поводу твоих ошибок... что бросается в глаза:
Цитата
Даны натуральное число N и вещественное a

а у тебя оно какое???

k:=k*i;

внутри цикла по k не стоит изменять k. тем более умножать его на неизвестно что (i не определена)

Добавлено через 5 мин.
а, вот еще:
здесь:
         e:=a;

а равно неизвестно чему (скорее всего 0). оно же не вводится нигде...
Василяй
Спасибо что помогли!

но я не совсем понял что ознает вот эта строчка:
ak:=ak*a

я так думаю что это а^k?
мисс_граффити
ну типа того. только ak - это не операция возведения в степень, а имя переменной.
при k=1 ak=a
k=2 ak=a*a
k=3 ak=a*a*a
то есть мы не рассчитываем степень каждый раз, а просто домножаем на а.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.