Найти сумму цифр числа, записанного прописью - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д