Проверка диапазона вводимых данных (целые числа) - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Не буду приводить программу, суть проблемы такова: Я хочу учесть абсолютно все варианты ввода, но не могу организовать нормальную проверку диапазона вводимых чисел и арифметического переполнения. Отключая соответствующие директивы компилятора, я автоматически подвожу себя к тому, что после неверного ввода числа будут искажены, а меня это, разумеется, не устраивает. Я бы попробовал ввод, скажем, в строку, но учесть все варианты ввода довольно трудно, и к тому же в условии сказано что, скажем, а,б,в - заданные целые числа (integer). Преподаватель требует предусмотрения абсолютно всего. Но здесь это просто невозможно! Пожалуйста, помогите! Очень срочно!

Решение задачи: «Проверка диапазона вводимых данных (целые числа)»

textual
Листинг программы
program checkint;uses crt;
var i:longint;
    s:string;
    f:boolean;
    w:byte;
begin clrscr;
  repeat
    readln(s);
    val(s,i,w);
   if w=0 then
     if(i<-32768)or(i>32767) then
       f:=false
     else f:=true;
   until f=true;
   writeln(i);
end.

Объяснение кода листинга программы

В данном коде происходит проверка введенных данных на допустимость.

  1. Строка readln(s); считывает введенную пользователем строку.
  2. Строка val(s,i,w); преобразует эту строку в целое число и сохраняет его в переменной i.
  3. Строка if w=0 then проверяет, является ли результат последнего вычисления (i) нулем.
  4. Если i равно нулю, то выполняется блок кода внутри if, который проверяет, находится ли значение i в допустимом диапазоне (от -32768 до 32767).
  5. Если значение i находится в допустимом диапазоне, то устанавливается значение переменной f в false, иначе - в true.
  6. Код until f=true; повторяет предыдущие шаги до тех пор, пока значение f не станет true.
  7. Последняя строка writeln(i); выводит значение i на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.455 из 5
Похожие ответы