Вывести N-й член из слитной записи чисел - Free Pascal
Формулировка задачи:
Вывести N-й член из слитной последовательности записи чисел. N и числа в последовательности задаются с клавиатуры. Буду очень благодарен тем,кто хотя бы намекнет как это делать .
Решение задачи: «Вывести N-й член из слитной записи чисел»
textual
Листинг программы
uses crt,classes;
type
Digit=class
private
dgt : 0..9;
public
constructor Create(c:ansichar);
end;
var
Data:TList;
c:char;
n:dword;
constructor digit.Create(c:ansichar);
begin
dgt:=ord(c)-ord('0');
end;
begin
data:=tlist.create();
Writeln('Введи последовательность (останов по нажатию любой НЕ ЦИФРЫ):');
while true do
begin
c:=readkey;
if c in ['0'..'9'] then data.add(digit.create(c))
else break;
write(c);
end;
Writeln;
Write('Какую цифру вынуть? ');
Readln(n);
if n<data.Capacity then writeln(digit(data[n-1]).dgt)
else writeln('Нет такого номера');
readln;
data.Free;
end.
Объяснение кода листинга программы
- Объявление переменных и типов данных:
- Digit - тип данных, представляющий цифру с помощью класса;
- Data - переменная типа TList, представляющая список цифр;
- C - переменная типа char, используемая для чтения ввода пользователя;
- N - переменная типа dword, используемая для хранения выбранного пользователем номера.
- Создание конструктора для класса Digit:
- Конструктор класса Digit, принимающий в качестве параметра символ и устанавливающий соответствующее значение переменной dgt.
- Основной цикл программы:
- Бесконечный цикл, который продолжается до тех пор, пока пользователь не введет любой символ, кроме цифры от 0 до 9;
- В каждой итерации цикла программа запрашивает у пользователя ввод, проверяет его и добавляет новый объект Digit в список Data;
- После окончания цикла программа запрашивает у пользователя номер, который он хочет извлечь из списка.
- Проверка диапазона номера и вывод результата:
- Если номер находится в пределах допустимого диапазона (меньше или равно Capacity списка), программа извлекает соответствующий объект Digit и выводит его значение;
- В противном случае программа выводит сообщение о том, что такого номера не существует.
- Освобождение памяти:
- В конце программы программа освобождает память, занятую списком Data.