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