Компьютерная сеть состоит из связанных между собой двусторонними каналами связи N компьютеров, номера которых от 1 до N. Эта сеть предназначена для распространения сообщения от центрального компьютера всем остальным. Компьютер, получивший сообщение, владеет им и может распространять его дальше по сети. Запрещается передавать сообщение на один и тот же компьютер дважды. Время передачи сообщения по каналу связи занимает одну секунду, при этом передающий и принимающий компьютеры заняты на все время передачи данного сообщения. На рисунке приведен возможный вариант такой сети.
В начальный момент времени центральный компьютер может передавать сообщение одному из непосредственно связанных с ним компьютеров, т.е. соседу. После окончания передачи, этим сообщением будут владеть оба компьютера. Каждый из них может передать сообщение одному из своих соседей и так далее, пока все компьютеры не будут владеть сообщением.
Для сети, показанной на рисунке, возможный порядок распространения сообщения от центрального компьютера с номером 6 приведен в примере.
Секунда 1: 6->4 Секунда 2: 4->3 6->7 Секунда 3: 3->1 4->5 Секунда 4: 3->2
Написать программу, которая:
7 2 3 1 3 1 4 2 6 5 3 4 7 4 6 6
Дан автобусный билет с номером, состоящим из N цифр. Расставить между цифрами знаки арифметических операций ('+', '-', '/', '*') и скобки таким образом, чтобы значение полученного выражение было равно 100. Можно образовывать многозначные числа из стоящих рядом цифр.
Выражение должно быть корректным с точки зрения арифметики. Допустимы лишние скобки, не нарушающие корректности выражения.
Требуется написать программу, решающую эту задачу.
Знаки операций означают:
Используется стандантный приоритет операций, т.е. выражение 6*5/7+5-1/3
интерпретируется как ((((6*5)/7)+5)-(1/3))
Число цифр N в номере билета не больше 6.
При возникновении затруднений в решении задачи допустимо частное решение, использующее не все знаки арифметических действий и/или скобки.
Программа вводит номер с клавиатуры с приглашением
Номер:Программа выводт полученное выражение как это показано ниже:
0+(19+1)*5+0=100Если для введенного номера решение найти не удается, программа должна печатать:
123456=?
Предполагается, что все вводимые данные корректны
Система оценки
Существуют 2 основные формы информационных описаний - текстовая и графическая
Текстовым представлением оператора присваивания будем считать запись вида
<Имя переменной>:=<Формула>Здесь
<Формула>
состоит из целых десятичных
констант, имен переменных, имен произвольных функций одного
аргумента, а также знаков арифметических операций ('+', '-', '*', '/')
и круглых скобок. Ограничимся случаем, когда имена функций,
переменных и константы - только односимвольные.
Графическим представлением оператора присваивания будем считать схему, состоящую из элементов вида:
и соединяющих их линий. Количество "входов" у элемента равно
количеству аргументов соответствующей операции или функции,
<Имя>
- знак арифметической операции
или имя функции.
Оператору присваивания "a:=S((b+c)*(d+e))"
можно сопоставить такую
схему:
Разработать диалоговую программную среду для преобразования вводимых с клавиатуры текстовых представлений операторов присваивания в графические, отображаемые на экране монитора.
Считать, что схема, соответствующая вводимому оператору, при разумном выводе заведомо помещается на экран дисплея.
Конкретные обозначения элементов, их расположение и ориентация всей схемы могут быть и другими.
Допускается разработка программы, работающей лишь для частного вида операторов присваивания, в которых отсутствуют функции.
Программа должна выдавать на экран сообщение о том, решает она задачу в общем случае или при указанных в примечании ограничениях.
Интерфейс по возможности должен обеспечивать: