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