Найти сумму цифр числа, записанного прописью - 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.

Объяснение кода листинга программы

  1. Объявление и инициализация массива строк ts с прописью от 1 до 9 (‘один’,’два’,’три’,’четыр’,’пят’,’шест’,’сем’,’восем’,’девя’).
  2. Объявление переменной x как строковой.
  3. Объявление переменных i и s как целочисленных.
  4. Инициализация переменной s со значением 0.
  5. Присвоение переменной x значения девятьсот одиннадцать.
  6. Проверка наличия подстроки девяносто в строке x с помощью функции pos и, если она найдена, удаление ее из строки и увеличение переменной s на 9.
  7. Использование цикла for для итерации по массиву строк ts в обратном порядке от 9 до 1.
  8. Внутри цикла использование функции pos для поиска подстроки из массива ts в строке x и, если она найдена, удаление ее из строки x и прибавление соответствующего числового значения к переменной s.
  9. Проверка наличия подстроки надцать в строке x с помощью функции pos и, если она найдена, удаление ее из строки и увеличение переменной s на 1.
  10. Проверка наличия подстроки сто, две, десять и сорок в строке x с помощью функции pos и, если они найдены, их удаление из строки и увеличение переменной s соответственно на 3, 2, 1 и 4.
  11. Вывод на экран строки с сообщением сумма цифр: и значением переменной s. В результате код находит сумму цифр числа, записанного прописью в переменной x.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.714 из 5
Похожие ответы