Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.08.05;
Скачать: CL | DM;

Вниз

Все делает правильно но в конце кидает "invalid pointer oper.."   Найти похожие ветки 

 
Ezorcist   (2007-07-07 15:29) [0]

Программа простая и решает задачу подсчета среднего балла для студентов,
на форме кнопка, два поля memo (mem и log) в mem такие данные:
1,1,1
2,2,2
3,3,3
4,4,4
5,5,5


Обработчик onclick кнопки:

procedure TForm1.Button1Click(Sender: TObject);

var i,l,g:integer; c:char; s:string;
a : array of array [1..3] of integer;

   sb : array [1..3] of real;
   counter :array [1..5] of integer;

begin
l:=mem.Lines.Count -1;

setlength(a,l);

sb[1]:=0;
sb[2]:=0;
sb[3]:=0;

for i:= 1 to 5 do counter[i]:=0;

for i:= 0 to l do begin
   s:=mem.Lines.Strings[i];
   for g:= 1 to 3 do begin
     c:=s[1+2*(g-1)];
     a[i][g] :=strtoint(c);
     sb[g]:=sb[g]+a[i][g];
     inc(counter[a[i][g]]);
   end;
end;

sb[1]:=sb[1]/mem.Lines.Count;
sb[2]:=sb[2]/mem.Lines.Count;
sb[3]:=sb[3]/mem.Lines.Count;

log.Lines.Add("Средний балл по предмету №1 = "+floattostr(sb[1]));
log.Lines.Add("Средний балл по предмету №2 = "+floattostr(sb[2]));
log.Lines.Add("Средний балл по предмету №3 = "+floattostr(sb[2]));

log.Lines.Add("Средний балл по всем предметам = "+floattostr((sb[1]+sb[2]+sb[3])/3));

end;


программа выдает верный результат, но на последней строке ошибка "invalid pointer operation" а при завершении программы - EAV а за ней "error 216 at ..."


 
antonn ©   (2007-07-07 15:31) [1]


> setlength(a,l);

а без этого?


 
Однокамушкин   (2007-07-07 15:37) [2]

Вы выделили для массива a памяти на l элементов, а цикл у вас от 0 до l - это уже получается l+1 элемент... К какой памяти вы обащаетесь на последней итерации цикла - а фиг его знает...


 
Юрий Зотов ©   (2007-07-07 15:40) [3]

l := mem.Lines.Count - 1; // На 1 меньше нужного.
setlength(a,l);
...
for i:= 0 to l do // На 1 больше максимума
begin
 ...
 a[i][g] :=strtoint(c);

В индексации - полная неразбериха. Отсюда и 216.


 
Ezorcist   (2007-07-07 22:47) [4]

Спасибо теперь все работает! :-) Не заметил...

А почему ошибка не возникала сразу в момент обращения к несуществующему элементу массива?


 
Юрий Зотов ©   (2007-07-07 22:52) [5]

> Ezorcist   (07.07.07 22:47) [4]

По умолчанию эта проверка выключена.



Страницы: 1 вся ветка

Текущий архив: 2007.08.05;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.022 c
9-1156047825
cxvxc
2006-08-20 08:23
2007.08.05
дайте 3д модель


3-1177038704
Ken
2007-04-20 07:11
2007.08.05
Подключение к удалённой базе данных


15-1183565551
Илья Иванович
2007-07-04 20:12
2007.08.05
Визуализация экономического метода


15-1184102234
Суслик
2007-07-11 01:17
2007.08.05
VirtualPC


4-1171893224
Brc
2007-02-19 16:53
2007.08.05
Select file