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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2012, 19:55   #1
Emilg18
Новичок
Джуниор
 
Регистрация: 18.11.2011
Сообщений: 2
По умолчанию пишет ошибка invalid procedure or function reference

Помогите пожалуйста пишет ошибка что-то с Summa не нравится никак не могу понять как ему передать параметры в конце очень прошу выручите как будет правильно незнаю выручите вот в этой строчке ошибка Tab (Summa[x,n,k],-2,3.5,0.5);

Код:
program z_10;
uses crt;

procedure z10_1; 
const k=20;
type mas=array[1..k] of integer;


procedure massiv_1(var a:mas;c:char);
var i:byte;
begin
writeln('Massiv ',c);
for i:=1 to k do
begin
a[i]:=-50+random(100);
write(a[i]:4);
end;
writeln;
end;

procedure massiv_2(a:mas; var b,c:mas;var m,n:byte);
var i:byte;
begin
m:=0;
n:=0;
for i:=1 to k do
if a[i]>0 then
begin
m:=m+1;
b[m]:=a[i];
end
else if a[i]<0 then
begin
n:=n+1;
c[n]:=a[i];
end;
if m=0 then writeln('Poligitelnyi elementov net')
else
begin
writeln('Massiv pologitelnix elementov');
for i:=1 to m do
write(b[i]:4);
writeln;
end;
if n=0 then writeln('Otrizatelnyu elementov net')
else
begin
writeln('Massiv otricatelnix elementov');
for i:=1 to n do
write(c:4);
end;
end;
var x,y,z:mas;
m,n:byte;
begin
clrscr;
randomize;
massiv_1(x,'X');
massiv_2(x,y,z,m,n);
readln;
end;


procedure z10_2;
const nmax=10; {maximalnyi razmer matric}
type mtr=array[1..nmax,1..nmax] of integer;{tip matric}

procedure Razmer(var m,n,k:integer);{procedura vvoda razmerov}
begin
repeat
write('Kol. strok 1 matrizi=');
readln(m);
until m in [1..nmax];
repeat
write('Kol. stolbzov 1 matrizi=');
readln(n);
until n in [1..nmax];
repeat
write('Kol. stolbzov 2 matrizi=');
readln(k);
until k in [1..nmax];
end;

procedure Vvod(var a:mtr;var x,y:integer;c:char);{procedura vvoda isxodnix matric}
var i,j:integer;
begin
writeln('Matrica ',c);
for i:=1 to x do
begin
for j:=1 to y do
begin
a[i,j]:=random(5)+1;
write(a[i,j]:4);
end;
writeln;
end;
end;

procedure Umn(a,b:mtr;m,n,k:integer;var c:mtr); {procedura ymnogeniaя}
var i,j,p:integer;
begin
for p:=1 to m do
for j:=1 to k do
begin
c[p,j]:=0;
for i:=1 to n do
c[p,j]:=c[p,j]+a[p,i]*b[i,j];
end;
writeln('Matrica C=A*B');
for i:=1 to m do
begin
for j:=1 to k do
write(c[i,j]:4);
writeln;
end;
end;
var a,b,c:mtr;
n,m,k:integer;
begin
clrscr;
Razmer(m,n,k);
Vvod(a,m,n,'A');
Vvod(b,n,k,'B');
Umn(a,b,m,n,k,c);
readln
end;

procedure z10_3;
const nmax=10;
type mtr=array[1..nmax,1..nmax] of real;
{luche vechestvennoe,proizvedenie moget bit bolshim}

procedure Vvod(var a:mtr;var n:integer);
var i,j:integer;
begin
repeat
write('Razmer matrizi=');
readln(n);
until n in [1..nmax];
writeln('Matrica');
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=-5+10*random;
write(a[i,j]:6:2);
end;
writeln;
end;
end;

function Prz(a:mtr;n:integer):real;{moget poluchitcy bolshe Longint}
var i,j:integer;
p:real;
begin
p:=1;
for i:=2 to n do
for j:=1 to i-1 do
p:=p*a[i,j];
Prz:=p;
end;
var a:mtr;
n:integer;
begin
clrscr;
randomize;
Vvod(a,n);
write('P=',Prz(a,n):0:2);{vivedem kak celoe}
readln
end;

procedure z10_4;
type func=function(x:real;n,k:integer):real;

{$F+}
function Summa(x:real;n,k:integer):real;
var i:integer;
s,t,q:real;
begin
s:=0;
t:=1;
if k=2 then q:=x else q:=x*x;
for i:=1 to n do
begin
t:=t*q;
s:=s+t/(k*i);
end;
Summa:=s;
end;
{$F-}

procedure Tab(f:func;xn,xk,h:real);
var x,z:real;
begin
x:=xn;
while x<=xk do
begin
z:=x*f(x,8,2)/2+(x*x+1)*f(x,6,4)/3;
writeln('x=',x:4:1,' z=',z:9:2);
x:=x+h;
end;
end;
begin
clrscr;
Tab (Summa,-2,3.5,0.5);
end;

begin clrscr;
z10_1;
z10_2;
z10_3;
z10_4;
end.

Последний раз редактировалось Stilet; 10.05.2012 в 21:13.
Emilg18 вне форума Ответить с цитированием
Старый 11.05.2012, 08:26   #2
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Скажи, какой у тебя компилятор. Параметры-функции устроены по-разному в разных реализациях.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 13.05.2012, 17:20   #3
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Одна ошибка - переменная c описана как массив, а при выводе в цикле, индекс пропущен:
Код:
begin
writeln('Massiv otricatelnix elementov');
for i:=1 to n do
write(c:4);
end;
Вторая - при вызове процедуры не указаны фактические параметры функции, которая выступает аргументом:
Код:
begin
clrscr;
Tab (Summa,-2,3.5,0.5);
end;
а ее описание: function Summa(x:real;n,k:integer):real;

Как-то так ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
function, procedure (выручите) Woxx Помощь студентам 5 20.10.2010 13:14
invalid procedure call or argument igorrt Microsoft Office Access 1 03.03.2009 16:35
Procedure,function,Stringgrid (#004) Очередной вопрос начинающего. Albert2008 Компоненты Delphi 4 01.08.2008 21:30
[Linker error] undefined reference to `function name` kermit Помощь студентам 4 11.06.2008 09:19
function procedure Toxa Microsoft Office Access 1 28.11.2007 18:32