Последние несколько строк вашего кода необходимо исправить, как показано ниже, чтобы скомпилировать, а затем вам нужно проверить, что код выполняет то, что вы хотите. Затем программа должна скомпилироваться, и, если вы запустите ее в среде, подобной Lazarus, IDE for Free Pascal, она появится в окне консоли, как прокомментировал @TomBrunberg. В основном это были две проблемы:
- Первым трем
else
с предшествует точка с запятой (;
). Это синтаксическая ошибка. Каждый else
является частью if ... then ...else
блока. Единственная причина, когда точка с запятой разрешена, это когда она находится внутри составного оператора, например, блока begin ... end
, как в
begin
DoSomething;
end
else
write('Cantidad de personas con Sobrepeso: ...........', v + 1)
- Другая проблема заключалась в том, что у вас было
(v <= 30 AND v >= 90)
Проблема синтаксиса в том, что в Pascal, and
имеет более высокий приоритет оператора, чем <=
, поэтому компилятор пытается и не может оценить 30 and v
. Это терпит неудачу, потому что результат должен иметь тип Boolean, который это не может быть. Чтобы избежать этой проблемы, вам нужно закрыть круглые скобки, например:
(v <= 30) and (v >= 90)
Затем выражения с обеих сторон and
оба вычисляются как логические значения, так что компилятор может затем удачно объединить с and
. Однако , как указал @Tom в комментарии, объединенное выражение никогда не может быть оценено как True, потому что v
не может быть меньше или равно 30 и больше или равно 90: возможно, вы означало ИЛИ?
Исправленный код
if (v <= 90) then
write('Cantidad de personas con Sobrepeso: ...........', v + 1)
else if (v <= 30) then
write('Cantidad de personas con Bajo Peso: ...........', v + 1)
else if (v <= 30) AND (v >= 90) then
write('Cantidad de Personas con Peso normal: ...........', v + 1)
else
write('null');
readln;
* В конце readln
программа заставляет программу ждать, пока вы нажмете Enter , чтобы она осталась на экране достаточно долго, чтобы вы могли увидеть его - без readln
окно консоли просто закрылось бы и исчезло бы sh.