Где я тут ошибся в кодировке - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Добрый день, прошу вас помочь с кодировкой. В программе выделил места где не могу понять как получилось так. В общем проблема, необходимо чтобы программа считывала документ если находить необходимые символы в кодировке Анси, ну цифры в данном случае то она их должна суммировать и записать в файл аутпут. Но тут проблема, если стоят две подряд цифры то эти две должны быть представлены одной цифрой и сплюсовать в результат. как Пример. pdfh45./,4,3k Должно сплюсовать 45+4+3. Прошу вас помочь именно с моментом слияния двух цифр

Решение задачи: «Где я тут ошибся в кодировке»

textual
Листинг программы
program stroka3;
var stroka,strokares:text;
    s,s2:string;
    i,j,sm:integer;
begin
assign(stroka,'stroka.txt');
assign(strokares,'strokares.txt');
reset(stroka);
rewrite(strokares);
while not EOF(stroka) do
 begin
  readln(stroka,s);
  sm:=0;
  i:=1;
  while i<=length(s) do
  if (s[i] in ['0'..'9'])and((i=1)or not(s[i-1] in ['0'..'9'])) then
   begin
    s2:='';
    j:=i;
    while(j<=length(s))and(s[j] in ['0'..'9']) do
     begin
      s2:=s2+s[j];
      j:=j+1
     end;
    sm:=sm+strtoint(s2);
    i:=i+length(s2)
   end
  else i:=i+1;
  writeln(strokares,sm)
 end;
close(stroka);
close(strokares);
write('Файл stroka.txt обработан и результат записан в файл strokares.txt')
end.

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

  1. В начале программы объявляются переменные stroka, strokares, s, s2, i, j, sm типа text и integer.
  2. Строки 'stroka.txt' и 'strokares.txt' присваиваются переменной stroka и strokares соответственно.
  3. Строка s инициализируется значением s, а переменная i и j инициализируются значениями 1.
  4. Цикл while начинается. Условие цикла - не EOF(stroka).
  5. Внутри цикла считывается строка s с помощью функции readln(stroka, s).
  6. Переменная sm инициализируется значением 0.
  7. Цикл while начинается снова. Условие цикла - i <= length(s) и s[i] в ['0'..'9'].
  8. Внутри цикла создается временная переменная s2, которая инициализируется пустой строкой.
  9. Переменная j инициализируется значением i.
  10. Цикл while начинается снова. Условие цикла - j <= length(s) и s[j] в ['0'..'9'].
  11. Внутри цикла переменная s2 увеличивается на значение s[j] с помощью оператора +=.
  12. Переменная j увеличивается на 1 с помощью оператора :=.
  13. Переменная sm увеличивается на значение strtoint(s2) с помощью оператора :=.
  14. Переменная i увеличивается на length(s2) с помощью оператора :=.
  15. Выводится значение переменной sm с помощью функции write(strokares, sm).
  16. Цикл while заканчивается.
  17. Закрываются файлы stroka и strokares с помощью функций close(stroka) и close(strokares).
  18. Выводится сообщение 'Файл stroka.txt обработан и результат записан в файл strokares.txt' с помощью функции write.
  19. Программа завершается.

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

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