Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2010, 01:29   #1
kvi232
Новичок
Джуниор
 
Регистрация: 23.11.2010
Сообщений: 1
По умолчанию Написать програму на С++

МП – машина Поста
Абстрактная МП представляет собой бесконечную ленту, разделенную на одинаковые клетки, каждая из которых может быть либо пустой, либо заполненной меткой. Вдоль ленты может перемещаться головка.
Команды МП состоят из 3 параметров: n K m (n – номер текущей команды, К – команда, m – номер следующей команды). Обозначим действия латинскими буквами
Существует всего 6 видов команд МП (примеры):
Формат Действие
1 L 2 Команда №1: переместить головку на 1 клетку влево и перейти к команде 2
5 R 37 Команда №5: переместить головку на 1 клетку влево и перейти к команде 37
2 M 3 Команда №2: поставить метку в текущую клетку и перейти к команде 3
11 С 3 Команда №11: стереть метку из текущей клетку и перейти к команде 3
6 3 1 Команда 6: Если в клетке метка отсутствует, перейти к команде 3, иначе – к команде 1
4 S 4 Команда 4: Остановить машину (stop)
Не нужно путать номера ячеек ленты (их просто нет) с номерами команд программы МП
Примеры программ МП приведены в книге.

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

Состояние определяется следующим образом:
В первой строке – фрагмент бесконечной ленты, который и содержит информацию. Наличие метки – 1, отсутствие – «.» (точка). Фрагмент может начинаться с любого количества меток (первого числа) или пустот. Пустая лента отображается одной точкой.
В следующей строке «*» отмечено стартовое положение головки.
В следующих строках – программа в командах МП (каждая строка – одна команда).

Выходные данные:
Текстовый файл содержит по 2 строки, отображающие состояние МП после выполнения очередной команды (содержание ленты и положение головки). Если программа МП завершилась корректно, вывести в последней строке «ОК», при аварийном завершении – «CRUSH». Параллельно результаты должны выводиться на экран, чтобы отследить зацикливание некорректной программы.

Пример: На ленте записаны 2 числа через 1 пробел. Головка находится левее 1-го числа. Программа прибавляет 1 ко 2-му числу таким образом, чтобы не перемещать головку до конца 2-го числа.
Входные данные:
...111.1.
*
1 R 2
2 1 3
3 L 4
4 M 5
5 R 6
6 5 7
7 M 8
8 L 9
9 C 10
10 S 10
Выходные данные:
Step 0
...111.1.
*
step 1
...111.1.
*
step 2
...111.1.
*
step 3
...111.1.
*
step 4
..1111.1.
*
step 5
..1111.1.
*
step 6
..1111.1.
*
step 7
..1111.1.
*
step 8
..1111.1.
*
step 9
..111111.
*
step 10
..111111.
*
step 11
..111.11.
*
STOP
kvi232 вне форума Ответить с цитированием
Старый 23.11.2010, 10:49   #2
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Вот на Паскале.
Перепиши.
Вложения
Тип файла: rar post.rar (3.8 Кб, 10 просмотров)
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
написать програму на С++ Krumyura Общие вопросы C/C++ 11 03.03.2010 21:56
Помогите написать програму TheVenny Помощь студентам 3 05.11.2008 19:52