Программирование с использованием строковых переменных - PascalABC.NET

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

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

Ввести с клавиатуры строку чисел. Проверить, является ли введенная строка целым числом.

Решение задачи: «Программирование с использованием строковых переменных»

textual
Листинг программы
const
  Alphabet = '0123456789'; // Алфавит: 0, 1, ..., 9
 
procedure Res(Status : Boolean);
begin
  if Status then
    WriteLn('Введённое число является целым числом.')
  else
    WriteLn('Введённое число НЕ является целым числом.');
  Halt;
end;
  
begin
  var S := ReadLnString('Введите строку как целое число:');
  
  // Учиним все возможные проверки:
  
  if S.Length = 0 then // Пустая строка
    Res(False);
    
  if (S.Length = 1) and (Alphabet.IndexOf(S) > -1) then // Однозначное число
    Res(True);
  
  var i := 1;
  if (S[1] = '-') or (S[1] = '+') then // Первый символ - знак числа
    i := 2;
    
  if S[i] = Alphabet[1] then // Строка начинается с нулевого символа
    Res(False);
    
  repeat
    i += 1;
    if Alphabet.IndexOf(S[i]) < 0 then // Встечен «левый» символ
      Res(False);
  until i = S.Length;
  
  Res(True);
end.

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

  1. Объявлены константы:
    • Alphabet = '0123456789'; // Алфавит: 0, 1, ..., 9
  2. Объявлена процедура Res(Status : Boolean):
    • Если Status, то выводится сообщение 'Введённое число является целым числом.', иначе выводится сообщение 'Введённое число НЕ является целым числом.';
    • Вызов Halt; запрещает выполнение любого кода после неё.
  3. Ввод строки от пользователя с помощью ReadLnString('Введите строку как целое число:');
  4. Проверки на пустую строку и на однозначное число:
    • Если длина строки равна 0, то вызывается Res(False);
    • Если длина строки равна 1 и первый символ является цифрой, то вызывается Res(True);
  5. Инициализируется переменная i = 1;
    • Если второй символ строки равен '-' или '+', то i = 2;
    • Если первый символ строки равен 0, то Res(False);
  6. Цикл проверки каждого символа строки на принадлежность к алфавиту:
    • Пока i меньше длины строки,
      • Если символ не является цифрой, то вызывается Res(False);
      • i увеличивается на 1;
  7. После цикла вызывается Res(True);
  8. В конце программы вызывается Halt;

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

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