Где я тут ошибся в кодировке - 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.
Объяснение кода листинга программы
- В начале программы объявляются переменные stroka, strokares, s, s2, i, j, sm типа text и integer.
- Строки 'stroka.txt' и 'strokares.txt' присваиваются переменной stroka и strokares соответственно.
- Строка s инициализируется значением s, а переменная i и j инициализируются значениями 1.
- Цикл while начинается. Условие цикла - не EOF(stroka).
- Внутри цикла считывается строка s с помощью функции readln(stroka, s).
- Переменная sm инициализируется значением 0.
- Цикл while начинается снова. Условие цикла - i <= length(s) и s[i] в ['0'..'9'].
- Внутри цикла создается временная переменная s2, которая инициализируется пустой строкой.
- Переменная j инициализируется значением i.
- Цикл while начинается снова. Условие цикла - j <= length(s) и s[j] в ['0'..'9'].
- Внутри цикла переменная s2 увеличивается на значение s[j] с помощью оператора +=.
- Переменная j увеличивается на 1 с помощью оператора :=.
- Переменная sm увеличивается на значение strtoint(s2) с помощью оператора :=.
- Переменная i увеличивается на length(s2) с помощью оператора :=.
- Выводится значение переменной sm с помощью функции write(strokares, sm).
- Цикл while заканчивается.
- Закрываются файлы stroka и strokares с помощью функций close(stroka) и close(strokares).
- Выводится сообщение 'Файл stroka.txt обработан и результат записан в файл strokares.txt' с помощью функции write.
- Программа завершается.