Найти сумму цифр числа, записанного прописью - Pascal
Формулировка задачи:
Всем доброго времени суток! Помогите, пожалуйста, с задачей. Дана строка, в которой записано целое число, например: триста двадцать один. Найти сумму цифр этого числа. В приведенном примере это 6.
Проблема в том, что вроде понимаю как делать, но написать код ума не хватает. Заранее спасибо за помощь.
Решение задачи: «Найти сумму цифр числа, записанного прописью»
textual
Листинг программы
const ts:array[1..9]of string=('один','два','три','четыр','пят','шест','сем','восем','девя');
var x:string;
i,s:integer;
begin
s:=0;
x:='девятьсот одиннадцать';
if pos('девяносто',x)<>0 then begin delete(x,pos('девяносто',x),9);inc(s,9) end;
for i:=9 downto 1 do
while pos(ts[i],x)<>0 do begin delete(x,pos(ts[i],x),length(ts[i]));s:=s+i end;
if pos('надцать',x)<>0 then begin delete(x,pos('надцать',x),7);inc(s) end;
if pos('сто',x)<>0 then begin delete(x,pos('сто',x),3);inc(s) end;
if pos('две',x)<>0 then begin delete(x,pos('две',x),3);inc(s,2) end;
if pos('десять',x)<>0 then begin delete(x,pos('десять',x),6);inc(s) end;
if pos('сорок',x)<>0 then begin delete(x,pos('сорок',x),5);inc(s,4) end;
writeln('сумма цифр: ',s)
end.
Объяснение кода листинга программы
- Объявление и инициализация массива строк
tsс прописью от 1 до 9 (‘один’,’два’,’три’,’четыр’,’пят’,’шест’,’сем’,’восем’,’девя’). - Объявление переменной
xкак строковой. - Объявление переменных
iиsкак целочисленных. - Инициализация переменной
sсо значением 0. - Присвоение переменной
xзначениядевятьсот одиннадцать. - Проверка наличия подстроки
девяностов строкеxс помощью функцииposи, если она найдена, удаление ее из строки и увеличение переменнойsна 9. - Использование цикла
forдля итерации по массиву строкtsв обратном порядке от 9 до 1. - Внутри цикла использование функции
posдля поиска подстроки из массиваtsв строкеxи, если она найдена, удаление ее из строкиxи прибавление соответствующего числового значения к переменнойs. - Проверка наличия подстроки
надцатьв строкеxс помощью функцииposи, если она найдена, удаление ее из строки и увеличение переменнойsна 1. - Проверка наличия подстроки
сто,две,десятьисорокв строкеxс помощью функцииposи, если они найдены, их удаление из строки и увеличение переменнойsсоответственно на 3, 2, 1 и 4. - Вывод на экран строки с сообщением
сумма цифр:и значением переменнойs. В результате код находит сумму цифр числа, записанного прописью в переменнойx.