Страница 1 из 2
Добавлено: 06 апр 2004, 00:47
Eugie
Для начала: имена типов, переменных, полей должны быть в латинице:
TSexRange = (m,f);
THeightRange = 140..200;
Date=Record
sex: TSexRange;
height: THeightRange;
End;
Во-вторых, массив Grupe, наверное, все-таки нужно инициализировать
А дальше так:
Код: Выделить всё
ave_height, num_girls: Integer;
i: Imea;
begin
ave_height := 0;
num_girls := 0;
for i := Low(imea) to High(Imea) do
with Grupe[i] do
if sex = f then begin
Inc(ave_height, height);
Inc(num_girls);
end;
ave_height := ave_height div num_girls;
end.
Добавлено: 06 апр 2004, 15:06
Naeel Maqsudov
Проверьте, правильно ли Вы инициализируете массив, т.е. заполняете его тестовыми данными. Если в этом массиве не окажется ни одной женщины, то оператор
ave_height := ave_height div num_girls;
приведет к ошибке "Деление на ноль/Division by zero", что скорее всего и происходит.
Попробуйте также переписать этот оператор так
Код: Выделить всё
if num_girls>0
then ave_height := ave_height div num_girls
else ave_height := -1;
Результат -1 в качестве среднего роста будет означать, что средний рост рассчитать нельзя.
Добавлено: 06 апр 2004, 16:40
Eugie
Сорри, при вставке var потерялся
Надо объявлять переменные так:
Код: Выделить всё
var
ave_height, num_girls: Integer;
i: Imea;
Добавлено: 07 апр 2004, 16:42
Eugie
Перед объявлением типов нужно вставить слово
type, например:
Код: Выделить всё
type
Imea=(anea,mariya,irina,petea,vanea,sereja,iura,igori,lena);
TSexRange = (m,f);
THeightRange = 140..200;
Date=Record
sex: TSexRange;
height: THeightRange;
End;
Первая программа на Паскале, да?
На будущее: если вопрос касается ошибок в процессе компиляции, всегда приводи точное сообщение компилятора.
Добавлено: 08 апр 2004, 04:07
Naeel Maqsudov
vitalik, используйте теги
code при оформлении текста программ в письмах.
Код: Выделить всё
program p1;
type
Imea=(anea,mariya,irina,petea,vanea,sereja,iura,igori,lena);
TSexRange = (m,f);
THeightRange = 140..200;
Date=Record
sex: TSexRange;
height: THeightRange;
end;
TGrupe = Array[Imea]of date;
var
ave_height, num_girls: Integer;
i: Imea;
Grupe: TGrupe;
begin
{начало ИНИЦИАЛИЗАЦИИ}
randomize;
for i := Low(imea) to High(Imea) do
with Grupe[i] do begin
if random(2)=0 then sex:=m else sex:=f;
height:=random(60)+140;
end;
{конец ИНИЦИАЛИЗАЦИИ}
ave_height := 0;
num_girls := 0;
for i := Low(imea) to High(Imea) do
with Grupe[i] do
if sex = f then begin
Inc(ave_height, height);
Inc(num_girls);
end;
if num_girls>0 then begin
ave_height := ave_height div num_girls;
writeln('Средний рост = ', ave_height)
end else
writeln('Нет ниодной женщины.');
readln;
end.
Без ИНИЦИАЛИЗАЦИИ будет деление на ноль.
Тут для инициалицации берутся случайный пол и случайный рост.