Выполнить преобразование записи в число - Turbo Pascal
Формулировка задачи:
Пусть входной поток литер содержит по крайней мере одну цифру. Считая первую из них началом записи числа (целого или вещественного с фиксированной точкой), выполнить преобразование этой записи в число
Решение задачи: «Выполнить преобразование записи в число»
textual
Листинг программы
uses Crt;
var str : string;
lot : set of char;
i : byte;
sim : char;
flag : boolean;
BEGIN
ClrScr;
lot:=['0'..'9'];
sim:='.';
Write('Введите строку: ');
Readln(str);
for i:=1 to length(str) do
if ((str[i] in lot) and (i<>0)) then
begin
delete(str, 1, i-1);
break;
end;
i:= 2;
flag:= false;
While ((str[i] in lot) or ((str[i]=sim) and (flag=false))) do
begin
if (str[i]=sim) then flag:= true;
Inc(i);
end;
if str[i-1]=sim then
delete(str, i-1, (length(str)-(i-2)))
else delete(str, i, (length(str)-(i-1)));
Writeln(str);
END.
Объяснение кода листинга программы
- В начале кода подключается библиотека Crt.
- Объявляются переменные: str - строка, lot - множество символов, i - байт, sim - символ, flag - булево значение.
- Выполняется очистка экрана ClrScr.
- Создается множество символов lot, которое содержит символы от '0' до '9'.
- Создается символ sim, которым будет заменяться последний символ вводимой строки.
- Выводится сообщение 'Введите строку: ' для ввода строки пользователем.
- Считывается введенная строка с помощью функции Readln.
- Запускается цикл for, который будет выполняться до тех пор, пока текущий символ в строке не станет символом '0' или '.' (то есть до тех пор, пока не будет удален последний символ или пока не будет введена строка, заканчивающаяся на '.').
- Внутри цикла проверяется, является ли текущий символ в строке одним из символов множества lot. Если да, то этот символ удаляется из строки, а цикл прерывается.
- Если после удаления последнего символа в строке остается меньше символов, чем было указано в переменной i, то переменная i сбрасывается на 2, а флаг flag устанавливается в значение true.
- Запускается цикл While, который будет выполняться до тех пор, пока текущий символ в строке не станет символом '0' или '.' (то есть до тех пор, пока не будет удален последний символ или пока не будет введена строка, заканчивающаяся на '.').
- Внутри цикла проверяется, является ли текущий символ в строке символом '0'. Если да, то переменная i сбрасывается на 2, а флаг flag устанавливается в значение true.
- Если после удаления последнего символа в строке остается меньше символов, чем было указано в переменной i, то переменная i сбрасывается на 2.
- Если символ '0' был заменен символом '.' и флаг flag равен true, то удаляется последний символ в строке.
- Выводится преобразованная строка.
- Конец программы.