Как узнать позицию символов в слове не используя string и массивы? - Free Pascal
Формулировка задачи:
Как узнать позицию символов в слове не используя string и массивы?
Например, вводим слово:
welcome
Потом вводим букву которую нужно найти:e
После чего, программа выдаст результат:Позиция буквы e: 2; 7;
Как это можно сделать? Помогите пожалуйста, буду очень благодарен. Со string всё просто, но без него - не получается.Решение задачи: «Как узнать позицию символов в слове не используя string и массивы?»
textual
Листинг программы
var
letter : boolean = false;
key : char = #0;
procedure p(lvl : integer = 1);
var ch : char;
begin
ch := readkey;
write(ch);
if ch = #13 then
begin
if not letter then
begin
writeln;
writeln('Буква:');
letter := true;
p(lvl + 1);
end
end
else
begin
if letter then
begin
key := ch;
ch := #0;
readln;
write('Позиции буквы "', key, '" : ')
end
else p(lvl + 1)
end;
if (key <> #0) and (key = ch) then write(lvl:3);
end;
begin
writeln('Слово: ');
p();
end.
Объяснение кода листинга программы
В данном коде используется рекурсивная функция p, которая принимает целочисленный параметр lvl (уровень) и выполняет следующие действия:
- Считывает символ из ввода пользователя с помощью функции readkey и сохраняет его в переменной ch.
- Выводит символ на экран с помощью функции write.
- Если символ равен символу новой строки (#13), то выводит на экран сообщение
Буква:и переходит к следующему символу. - Если символ не равен символу новой строки, то проверяет значение переменной letter.
- Если переменная letter равна false, то выводит на экран сообщение
Буква:, переходит на следующий уровень рекурсии и считывает следующий символ. - Если переменная letter равна true, то сохраняет текущий символ в переменной key и переходит к следующему символу.
- Если символ равен символу новой строки, то выводит на экран сообщение
Позиции буквыи значение переменной key, затем выводит на экран сообщение:и позицию текущего символа в слове. - Если символ не равен символу новой строки, то вызывает функцию p для следующего символа.
- Если значение переменной key не равно текущему символу, то выводит на экран сообщение с номером уровня.
- Вызывает функцию p для следующего символа.
- Выводит слово, для которого выполняется поиск позиции буквы. Используется также функция readln для считывания всего ввода пользователя в одну строку.