Отправляет email-рассылки с помощью сервиса Sendsay

[prg] Free Pascal. не компилируется программа.

Здравствуйте, господа подписчики.

Вот небольшой исходник на паскале. Поскольку сам далёк от этого языка, то укажите
на ошибку.

program prg;
var n, s, n1, n2, n3: real;
BEGIN
write ('vvedite pyatiznachnoe chislo');
read (n);
n1 := n mod 10000 mod 1000 div 100;
n2 := n mod 10000 mod 1000 mod 100 div 10;
n3 := n mod 10000 mod 1000 mod 100 mod 10;
s := n div 10000 + n mod 10000 div 1000 + n1 + n2 + n3 ;
write ('rezultat slojeniya raven', s);
end.
Исходник пытался скомпилировать через bat-файл Free Pascal командой fpc.exe prg.pas.
Путём поисков наобум удалось найти строку преткновения - похоже компилятору не
нравится начало вычислений:
n1 := n mod 10000 mod 1000 div 100;
И как я уже писал в предыдущем письме по паскалю, особенно интересует просмотр
ошибок при компиляции. Ни в Турбо паскале, ни во Фри паскале, отыскать ничего
похожего на ошибки компиляции пока не удалось.

Ответить   Tue, 23 Apr 2013 07:02:45 +0400 (#2731222)

 

Ответы:

Приветствую всех.

Верно. Однако ему не нравятся и все последующие строки.
Ошибка в том, что вы пытаетесь применить целочисленную операцию к числам с плавающей
точкой.
Замените тип переменных с Real на Integer.
Чтобы получить список ошибок компиляции FreePascal , можно использовать в bat-файле
такие строки:

fpc.exe hello.pas >errlog.txt
if %ERRORLEVEL% NEQ 0 start errlog.txt

В случае ошибки компиляции автоматически откроется редактор по умолчанию с загруженным
отчетом.
Также обратите внимание, что ваша программа после вывода результатов вычисления
сразу же закроет свое консольное окно, так что вы можете и не успеть с этими
результатами ознакомиться.

Успехов. Анатолий.

Ответить   "i_chay" Tue, 23 Apr 2013 07:27:54 +0300 (#2731228)

 

Здравствуйте, Игорь! верно здесь написали: нужно тип поменять на integer и в
конце программы перед end. Допишите, к примеру: readln; двоеточие и круглые
скобки не нужны. Этот оператор, если он пуст обеспечивает остановку
программы до нажатия на enter. Этакий пустой ввод. Можно так же задержать
программу, подключив модуль отчистки экрана crt, инструкция: uses crt после
загаловка программы program, дальше объявить переменную типа char и перед
end присвоить ей значение функции readkey. C:=readkey; тогда программа у вас
закроется после нажатия любой клавиши на клавиатуре. С уважением Леонид.

Ответить   Tue, 23 Apr 2013 18:24:32 +0600 (#2731700)