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

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

Войти
Регистрация
Восстановить пароль
 
kvi232
Сообщений: n/a
#1

Модель машины Поста - C++

21.11.2010, 16:37. Просмотров 1004. Ответов 0
Метки нет (Все метки)

МП – машина Поста
Абстрактная МП представляет собой бесконечную ленту, разделенную на одинаковые клетки, каждая из которых может быть либо пустой, либо заполненной меткой. Вдоль ленты может перемещаться головка.
Команды МП состоят из 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2010, 16:37     Модель машины Поста
Посмотрите здесь:

Машина Поста (да пофиг) - C++
#include <iostream> #include <fstream> #include <istream> #include <stdlib.h> #include <string> using namespace std; ...

Написание виртуальной машины - C++
Доброго времени суток! Стоит задача: написать простенькую виртуальную машину, эмулирующую работу компьютера. Ограничений на язык...

Исходники виртуальной машины - C++
Здравствуйте! ни у кого случаем нет исходников какой либо виртуальной машины? очень нужно.. хотя бы самый простой.. чтобы около 50 команд

Эмулятор трёхадресной машины. - C++
В общем, имеется задача "Эмулятор трёхадресной машины". Каждая инструкция имеет следующий формат: код инструкции (1 байт), операнд 1...

считать код машины Тьюринга - C++
необходимо считать код машины тьюринга Даны строки вида: qo1;a=qo2;b;r необходимо считать в массив структур в первое поле - до...

для ардуино маленькой машины - C++
Здравствуйте! Помогите найти исходники для любого дрона, нужны просто готовые исходники на C++ с пояснениями кода, не нахожу в гугле ничего...

Поиск машины по марке в массиве - C++
Нужно сделать поиск по марке машины в массиве. main.cpp #include <iostream> #include <stdio.h> #include "Auto.h" #include...

Определение типа номера машины - C++
Есть четыре разные по формату номерные знаки. 1) Y019KM (Буква, три цифры, две буквы) 2) AB179 (Две буквы, три цифры) 3) OH2645 (Две...

Добавить два числа с помощью Машины Тьюринга. - C++
Нужно написать программу, которая добавляет два числа(примерно так:x+y) с помощью Машины Тьюринга. Помогите если можете!! Заранее...

Проверить делится ли число нацело с помощью машины тьюринга - C++
Подскажите, пожалуйста, в чем ошибка. Мне эту задачу нужно сдать на экзамене. Нужно проверить, делиться ли одно число нацело на...

Идея собирать узлы в кластеры во время простоя машины - C++
Я тут поимел такую идею, смысл которой в следующем: Во время простоя машины (по существу после того как машина залочена) обычно это...

Как код с++ скопировать с виртуальной машины (ubuntu) на основную (windows)? - C++
Как код программы на с++ скопировать с виртуальной машины (ubuntu 14.04.1) на основную (windows 7)? Вопрос не совсем в тему раздела, но...


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

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

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