Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Татьяна Стексов
0 / 0 / 0
Регистрация: 24.11.2012
Сообщений: 15
#1

Числовая прямая - C++

24.11.2012, 21:55. Просмотров 1205. Ответов 0
Метки нет (Все метки)

На числовой прямой будем рассматривать только точки с целой координатой (в дальнейшем будем называть их целыми точками). Рассмотрим некоторое количество числовых промежутков, начало и конец которых являются целыми точками (предполагается, что начало и конец промежутка также входят в промежуток). С множествами чисел разрешается выполнять операции объединения, пересечения и разности:
Множество точек A+B содержит целые точки, которые принадлежат множеству A или множеству B (операция объединения).
Множество точек A*B содержит целые точки, которые принадлежат одновременно и множеству A, и множеству B (операция пересечения).
Множество точек A-B содержит целые точки, которые принадлежат множеству A, но не принадлежат множеству B (операция разности множеств).

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

Требуется определить множество точек (набор непересекающихся промежутков), являющееся значением заданного выражения для данных промежутков.

Вход: файл input.txt, содержащий несколько строк с описанием промежутков в следующем формате:
имя начало конец
После описания промежутков (не более 26) в последней строке файла input.txt следует выражение, содержащие имена промежутков (только из описанного выше набора), знаки операций над промежутками (+, – и *) и круглые скобки. Прочих символов (в том числе пробелов и других разделителей) выражение не содержит.

Ограничения:в описании каждого отрезка: имя – заглавная буква латинского алфавита (имя промежутка), начало и конец – целые числа от -2000000000 до 2000000000 (соответственно, начало и конец промежутка); длина выражения не превосходит 250.

Выход: файл output.txt, содержащий одну или несколько строк – перечисление непересекающихся промежутков, из которых состоит результирующее множество точек (результат применения заданного выражения к предложенному набору промежутков). В каждой строке приводится два целых числа – начало и конец промежутка, разделенные пробелом. Промежутки перечисляются в порядке расположения на числовой прямой слева направо (то есть в порядке возрастания координат левых концов).

Дополнительные ограничения: расстояние между соседними промежутками в выходном файле (разность между правым концом одного промежутка и левым концом другого) должно быть строго больше 1. Иначе говоря, смежные промежутки (те, между которыми нет целых точек) «сливаются» в один.

input.txt output.txt
A 1 5
B 3 7
A-B 1 2

Пример 2: input.txt output.txt
D -5 10
K -4 5
R -7 2
D-K*R -5 -5
3 10

Пример 3: input.txt output.txt
W -10 -5
X 0 10
Y -7 5
Z 7 12
(W+X)*(Y+Z) -7 -5
0 5
7 10
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2012, 21:55     Числовая прямая
Посмотрите здесь:

C++ Числовая последовательность на C++
Числовая последовательность. C++
C++ Числовая прямая, разбитая на отрезки
НОД и числовая последовательность C++
Числовая последовательность C++
C++ числовая прямая. Какому из отрезков принадлежит данная точка x?
числовая последовательность C++
C++ Числовая последовательность 2n!
Числовая последовательность C++
Числовая прямая разбита на отрезки точками A1 - An. Какому из отрезков принадлежит заданная точка X? C++
Дана числовая последовательность целых чисел, содержащая N элементов C++
C++ Выяснить является ли данная числовая последовательность упорядоченной по убыванию

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 13:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru