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

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

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

Автор: Psychologist 14.03.2008 0:47

Доброго времени суток.
Скажите пожалуйста, почему вылетает ошибка "Error 26: Type mismatch" при запуске программы:

Program work2;
Var
mas1 : array [1..10] of integer;
i : integer;
n : integer;
S : integer;
rez : Integer;
Begin
For i:=1 to 10 do Readln (mas1[i]);
For i:=1 to 10 do Begin
if mas1[i] mod 2 = 0 then n:=n+1;
end;

For i:=1 to 10 do Begin
Writeln (mas1[i]);
if mas1[i] mod 2 = 0 then S:=S+mas1[i];
end;

rez:=S/n;
Writeln (rez);
end.

Выделяется ; в строке "rez:=S/n;"

Автор: volvo 14.03.2008 1:00

Цитата
почему вылетает ошибка "Error 26: Type mismatch" при запуске программы:
Потому, что результат операции деления - всегда вещественный, а Rez - целочисленный. Автоматического преобразования Integer <- Real в языке нет, надо делать это руками:
{ или }
Rez := Trunc(s/n);
{ или }
Rez := s div n;
{ или (лучше всего) }
Rez: Real;

...

Автор: Psychologist 14.03.2008 1:27

volvo: Спасибо!

Автор: andriano 14.03.2008 3:16

Второй вариант, думаю, лучше.
А первый я бы записал так:
Rez := round(s/n);
Мало ли, вдруг в результате деления получится что-то вроде 3.99999999999.