Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задача на табулирование

Автор: Василяй 14.06.2007 4:49

Помогите найти ошибку в этой задаче! Задание такое:
Даны натуральное число 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.



Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: мисс_граффити 14.06.2007 5:17

у меня получилось вот так:

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). оно же не вводится нигде...

Автор: Василяй 14.06.2007 5:28

Спасибо что помогли!

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

ak:=ak*a

я так думаю что это а^k?

Автор: мисс_граффити 14.06.2007 14:31

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