Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Ошибка на pascal

Илья Вечерук Ученик (245), на голосовании 3 дня назад
program Lab10_6_7;

const
k: real = 1.38e-23; // Постоянная Больцмана в Дж/К

var
T, m, v: real;

begin

writeln('Введите значение температуры T (в К):');
readln(T);

writeln('Введите значение массы m (в кг):');
readln(m);

v := sqrt((k * T) / m);

writeln('Значение v: ', v, ' м/с');
end.

При вводе в консоль русских символов, но не нажимая enter стираю их и ввожу коректные символы но компилятор выдает ошибку:
Runtime error 106 at $00000000004010E9
$00000000004010E9
$000000000042302C

ИСПОЛЬЗУЮ ONLINE КОМПИЛЯТОРЫ, КАК ИСПРАВИТЬ ЭТУ ОШИБКУ?
Голосование за лучший ответ
Sokol Ученик (141) 1 месяц назад
попробуй в не онлайн компиляторе мне обычно помогает
Илья ВечерукУченик (245) 1 месяц назад
Препод в универе задушил сказав, что я должен исправить эту ошибку именно в online компиляторе.
Андрей Высший разум (465320) 1 месяц назад
Это ошибка НЕ твоего кода и даже НЕ компилятора языка Pascal, а эмулятора консоли, используемого в онлайн IDE.

Кириллическая буква в кодировке UTF-8 записывается комбинацией двух байтов. И даже если визуально после нажатия BS буква на экране стёрлась, это совсем не означает, что из буфера ввода удалились оба байта буквы. Может быть так, что стёрся только один байт, а второй байт остался в буфере ввода.

Возможный способ решения на уровне ввода данных: стереть всю строку, при этом нажав на клавишу BS большее кол-во раз, чем введено символов (или просто зажать BS на 2-3 секунды). И после этого заново начать вводить строку.

Если же преподаватель хочет, чтобы твой код обрабатывал неправильный ввод, то надо вводить не число, а строку и проверять, что строка имеет допустимый формат. Если строка допустима, преобразовывать её в число. А если недопустима, заново запрашивать ввод.
Илья ВечерукУченик (245) 1 месяц назад
Действительно, все оказалось так.
Похожие вопросы