|
#1
|
|||
|
|||
ошибка в функций
Задание 4: Создать процедуру, вычисляющую количество заданных элементов(чисел) в одномерном массиве.
Задание 5: Создать функцию, вычисляющую количество заданных элементов (чисел)в одномерном массиве. задание 4 и 5 я решил сделать сразу вместе, через процедуру получилось сделать а вот через функцию никак, выдает ошибку Код:
procedure chisla (var n:integer; a:array of integer); begin n:=length(a); end; procedure TForm1.Button1Click(Sender: TObject); var i,n,x:Integer; a:array of integer; begin setlength(a,0); for i:=0 to StringGrid1.ColCount-1 do try n:=strtoint(StringGrid1.Cells[i,0]); setlength(a,length(a)+1); a[high(a)]:=n; except end; chisla(x,a); label1.Caption:=inttostr(x); end; function chisla2(n:integer):integer; var i,l,x:Integer; a:array of integer; begin setlength(a,0); for i:=0 to 100 do try l:=a[i]; setlength(a,length(a)+1); a[high(a)]:=l; except end; n:=a[high(a)]; result:=n end; procedure TForm1.Button2Click(Sender: TObject); begin Label1.Caption:=inttostr(chisla2(n)); end; end. вот сама лаба: Новая папка (2).rar |
#2
|
|||
|
|||
во первых n надо объявить
Код:
procedure TForm1.Button2Click(Sender: TObject); var n:integer; begin Label1.Caption:=inttostr(chisla2(n)); end; потом, begin setlength(a,0); for i:=0 to 100 do try l:=a[i]; setlength(a,length(a)+1); вы пытаетесь переменной l присвоить значение несуществующего номера массива (длинну массива сделали 0) Последний раз редактировалось Admin, 30.05.2011 в 22:42. |