Помощь - Поиск - Пользователи - Календарь
Полная версия: Сумма чётных чисел в массиве.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Psychologist
Доброго времени суток.
Скажите пожалуйста, почему вылетает ошибка "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
Цитата
почему вылетает ошибка "Error 26: Type mismatch" при запуске программы:
Потому, что результат операции деления - всегда вещественный, а Rez - целочисленный. Автоматического преобразования Integer <- Real в языке нет, надо делать это руками:
{ или }
Rez := Trunc(s/n);
{ или }
Rez := s div n;
{ или (лучше всего) }
Rez: Real;

...
Psychologist
volvo: Спасибо!
andriano
Второй вариант, думаю, лучше.
А первый я бы записал так:
Rez := round(s/n);
Мало ли, вдруг в результате деления получится что-то вроде 3.99999999999.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.