Вычислить результат каждого сложения и подставить его в строку вместо знака вопроса - Free Pascal
Формулировка задачи:
Требования к выполнению задания:
нельзя использовать циклы;
нельзя использовать оператор IF;
из всего множества подпрограмм языка Паскаль надо
использовать только функции и процедуры для работы со
строками.
при выполнении работы использовать средства отладки Free
Pascal.
Задание:
Заданная строка состоит из последовательности следующихконструкций:
a1 + b1 = ?; a2 + b2 = ?;..., где ai и bi – целые числа. Вычислить результат каждого сложения и подставить его в строку вместо знака вопроса.
Решение задачи: «Вычислить результат каждого сложения и подставить его в строку вместо знака вопроса»
textual
Листинг программы
program Jesuit; label Ethernal, Finish; var s: string; Result, TempStr: string; i: integer; a, b: integer; ValResult: integer; begin s := '1 + 2 = ?; 11 + 22 = ?; 111 + 222 = ?; -111 + 222 = ?'; writeln(s); Result := ''; Ethernal: case length(s) of 0: goto Finish; end; Result := Result + copy(s, 1, pos('?', s) - 1); i := pos(' ', s); val(copy(s, 1, i - 1), a, ValResult); Delete(s, 1, i + 2); i := pos(' ', s); val(copy(s, 1, i - 1), b, ValResult); Delete(s, 1, i + 2 + 1); {удаление ' = ?'} a := a + b; Str(a, TempStr); Result := Result + TempStr; {если существует, то копирование и удаление разделителя выражений '; '} Result := Result + copy(s, 1, 2); Delete(s, 1, 2); goto Ethernal; Finish: writeln(Result); end.
Объяснение кода листинга программы
Список действий в коде:
- Создание переменной
s
типа строка со значением1 + 2 = ?; 11 + 22 = ?; 111 + 222 = ?; -111 + 222 = ?
. - Вывод значения переменной
s
в консоль. - Инициализация переменной
Result
как пустой строки. - Проверка длины строки
s
. Если длина равна 0, то переход к меткеFinish
. - Копирование части строки
s
с первого символа до символа '?' в переменнуюResult
. - Определение позиции пробела в строке
s
. - Преобразование и сохранение в переменную
a
значения первых символов до пробела в переменнойs
. - Удаление символов с первого места до места, следующего за пробелом в строке
s
. - Определение позиции пробела в строке
s
. - Преобразование и сохранение в переменную
b
значения символов с первого места до пробела в переменнойs
. - Удаление символов с первого места до места, следующего за пробелом и знаком
= ?
в строкеs
. - Вычисление суммы значений переменных
a
иb
и сохранение результата в переменнойa
. - Преобразование значения переменной
a
в строку и сохранение в переменнойTempStr
. - Добавление значения переменной
TempStr
к переменнойResult
. - Если длина строки
s
больше 2, то копирование и удаление символов;
из строкиs
. - Вывод значения переменной
Result
в консоль. - Вход в цикл
Ethernal
, начиная с шага 4. - Если длина строки
s
равна 0, то переход к меткеFinish
. - Копирование части строки
s
с первого символа до символа '?' в переменнуюResult
. - Определение позиции пробела в строке
s
. - Преобразование и сохранение в переменную
a
значения первых символов до пробела в переменнойs
. - Удаление символов с первого места до места, следующего за пробелом в строке
s
. - Определение позиции пробела в строке
s
. - Преобразование и сохранение в переменную
b
значения символов с первого места до пробела в переменнойs
. - Удаление символов с первого места до места, следующего за пробесом и знаком
= ?
в строкеs
. - Вычисление суммы значений переменных
a
иb
и сохранение результата в переменнойa
. - Преобразование значения переменной
a
в строку и сохранение в переменнойTempStr
. - Добавление значения переменной
TempStr
к переменнойResult
. - Если длина строки
s
больше 2, то копирование и удаление символов;
из строкиs
. - Вывод значения переменной
Result
в консоль. - Вход в цикл
Ethernal
, начиная с шага 4.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д