Олимпиадная информатика - 2010

Разбор и решение задач муниципального уровня 2010-11 года

Задача «Счет по-татарски»

Арифметические выражения по-татарски произносятся не так, как по-русски. Сначала произносятся аргументы, а затем произносится операция. Т.е. А+В по-татарски будет «Аны Вга кушу» или «А В +».

Написать программу вычисления арифметического выражения, написанного на татарском языке.

Входные данные

Во входном файле INPUT.TXT записано арифметическое выражение длиной не более 100 символов, где числа и операции разделены пробелом.

Выходные данные

В выходной файл OUTPUT.TXT выведите значение вычисленного выражения с точностью до сотых долей. При делении если знаменатель равен 0, то выдать сообщение «деление на 0». Гарантируется, что результат и все промежуточные вычисления по модулю не превышают 1015 (ДЕСЯТЬ В ПЯТНАДЦАТОЙ СТЕПЕНИ).

Примеры

INPUT.TXT 1

OUTPUT.TXT 1.00

INPUT.TXT
2 4 + 4.0 /
OUTPUT.TXT 1.50

INPUT.TXT
6 20 4 2 – 2 1 * - / +
OUTPUT.TXT
Деление на 0

посмотреть текст программы здесь

Разбор задачи №8 "Счет по-татарски"
предложено Песковым Аркадием Геннадьевичем, МОУ «Сюкеевская средняя общеобразовательная школа»

Камско-Устьинского муниципального района РТ

Задача, как и №1, на применение стека. Только там записывали в стек количество открывающихся скобок, здесь записываем числа. Запрашиваем строку. Продвигаемся по строке до пробела, если далее цифра, то выделяем из строки число и запоминаем его, как очередной элемент массива. Если же после пробела знак действия, то выполняем его для предпоследнего и последнего элементов массива.

Результат заносим в ПРЕПОСЛЕДНИЙ элемент массива и номер текущего элемента уменьшаем на 1.

Если приходится делить на 0, то выдаём соответствующее сообщение и останавливаем работу программы.

Если деление на ноль не встретилось и строка закончилась, то в массиве останется один элемент, конечный результат выполнения всех действий выражения – его и выводим.

Для общности алгоритма нужно добавить 1 пробел в конце или начале строки.

Выделять числа из строковой переменной можно с помощью процедуры VAL, обработанные части строки можно отбрасывать или заменять пробелы какими-то заведомо не встречающимися в строке символами (буквами на пример).

Hosted by uCoz