Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Перевод чисел / 25 сообщений из 25, страница 1 из 1
11.05.2014, 22:24
    #38638171
Creimi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод чисел
Помогите с выполнением. Тема машина Тьюринга. Задание:Составить программу для преобразования десятичных чисел {0,1,2,3,4,5,6,7,8,9} в унарную запись
...
Рейтинг: 0 / 0
11.05.2014, 22:28
    #38638174
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод чисел
Creimi, у тебя вопрос по С++ или ты не знаешь алгоритм как это делать?
...
Рейтинг: 0 / 0
11.05.2014, 22:31
    #38638176
Creimi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод чисел
mayton,

не знаю как в c++ это задание сделать
...
Рейтинг: 0 / 0
11.05.2014, 23:03
    #38638188
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод чисел
Тема машина Тьюринга.

При чём тут машина Тьюринга, объясни пожалуйста.

Составить программу для преобразования десятичных чисел {0,1,2,3,4,5,6,7,8,9} в унарную запись

Что за унарная запись такая ?
...
Рейтинг: 0 / 0
11.05.2014, 23:40
    #38638196
Creimi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод чисел
MasterZiv,
вот такое задание в лабнике
...
Рейтинг: 0 / 0
11.05.2014, 23:52
    #38638206
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод чисел
MasterZiv, унарный код, это когда число подряд идущих единичек
обозначает цифру. Например

{1,2,3} в унарной форме можно записать цепочками битов 10110111

Как обозначить ноль - хрен его знает. Или договорться об минусовании единички
из всех унарных чисел.
...
Рейтинг: 0 / 0
12.05.2014, 03:09
    #38638259
SashaMercury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод чисел
Сначала вам нужно показать что вы сделали сами
...
Рейтинг: 0 / 0
12.05.2014, 05:06
    #38638267
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод чисел
maytonMasterZiv, унарный код, это когда число подряд идущих единичек
обозначает цифру. Например

{1,2,3} в унарной форме можно записать цепочками битов 10110111

Как обозначить ноль - хрен его знает. Или договорться об минусовании единички
из всех унарных чисел.Вообще-то, цепочка битов 10110111 это бинарный код.
Бинарный, от слова "би" - два, то есть два знака "0" и "1". А унарный от слова "уни" - единица, то есть один знак.
Как записать число при помощи одного единственного знака... ну есть вариант... один...
Только к нашему форуму это все равно не относится.
...
Рейтинг: 0 / 0
12.05.2014, 09:53
    #38638354
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод чисел
White Owl, тем не менее у автора нет вариантов. "Счётные палочки" и "зарубки" не являются базисом
или инструментом в С++.
...
Рейтинг: 0 / 0
12.05.2014, 11:11
    #38638466
CVT
CVT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод чисел
унарная система - это наверное ближе к алгоритмам Маркова, чем к машине Тьюринга
Ну и самое интересное - вопрос все-таки по алгоритму перевода или по реализации на С++?
...
Рейтинг: 0 / 0
12.05.2014, 12:28
    #38638589
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод чисел
Наверное он ничего не знает. Вообще правильное ТЗ - это уже на 50%
решённая задача. Например:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Input:
1,2,3

Output:
10110111

Other requrements: implementation should be "Turing Machine"
...
Рейтинг: 0 / 0
12.05.2014, 17:56
    #38639057
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод чисел
Возникла странная мысль: Если мы возьмем CFG, и прогоним ее через Яка, полученный исходник можно рассматривать как навороченную машину Тьюринга или нельзя?
...
Рейтинг: 0 / 0
12.05.2014, 19:03
    #38639113
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод чисел
Хм... Не знаю что такое КФГ.
Граф потока управления?

Хм... Як на выходе выдаёт конечный автомат. А Машина Тьюринга (МТ) работает
с лентой куда чево-то пишет. Вобщем нам нужен не Як и не Бизон. А какой-нибудь
Тьяк. Ну вобщем мы сейчас и делаем частный случай этого тьяка.
...
Рейтинг: 0 / 0
12.05.2014, 20:05
    #38639161
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод чисел
maytonХм... Не знаю что такое КФГ.
Граф потока управления? Comoooon! Что идет на вход яку?

maytonХм... Як на выходе выдаёт конечный автомат. А Машина Тьюринга (МТ) работает с лентой куда чево-то пишет.Ну правильно. Як выдает автомат который читает из одного потока (который создает лексер) и пишет в другой поток. Алфавиты при этом могут не совпадать.
А теперь представим это как один общий алфавит (сумма входного и выходного) и две ленты (входная и выходная). И так как любой набор из множества лент может быть представлен как одна лента которую читают/пишут в двух разных, удаленных друг от друга местах, то в итоге мы получаем классическую МТ.

Итого, Creimi достаточно сочинить подходящую к его условиям CFG, отдать его яку и обосновать что полученный исходник и есть искомая машина Тьюринга. Причем последнее я только что сделал :)
...
Рейтинг: 0 / 0
12.05.2014, 20:10
    #38639164
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод чисел
White Owlобосновать что полученный исходник и есть искомая машина Тьюринга . Причем последнее я только что сделал :)
Препод не одобрит.
...
Рейтинг: 0 / 0
12.05.2014, 21:35
    #38639214
Вася Уткин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод чисел
Всё ещё гадаете? Унарная система счисления

0, 1, 2, 5 = ,1, 11, 11111

http://ideone.com/DTUvS4
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
#include <iostream>
#include <string>

std::string dec_to_unary(const int src) {
	std::string str;
	for(int i = 0; i < src; ++i)
		str += "1";
	return str;
}

int main(void) {
	
	int c_arr[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
	const int c_arr_size = sizeof(c_arr)/sizeof(int);
	
	for(size_t i = 0; i < c_arr_size; ++i)
		std::cout << dec_to_unary(c_arr[i]) << ((i+1 < c_arr_size)?",":"\n");

	return 0;
}
...
Рейтинг: 0 / 0
13.05.2014, 00:17
    #38639301
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод чисел
Пасиб Васёк. Прям не знали чоб делать без тебя. Однак этот жлобский олгоритм
мы и так нарисуем. Ты нам рисуй ленточку, управляющее устройство и правила
перехода, мать их так.
...
Рейтинг: 0 / 0
13.05.2014, 01:07
    #38639317
Вася Уткин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод чисел
maytonПасиб Васёк. Прям не знали чоб делать без тебя. Однак этот жлобский олгоритм
мы и так нарисуем. Ты нам рисуй ленточку, управляющее устройство и правила
перехода, мать их так.
Нет никаких ленточек и управляющих свойств в C++, как и нулей 0 в унарной системе - не надо выдумывать
А если в терминах машины Тьюринга, то тема переносится в раздел "Программирование".
...
Рейтинг: 0 / 0
13.05.2014, 08:51
    #38639378
BagaBaga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод чисел
Васёк,
а ты нафига запятую в свою "унарную" систему ввёл? Унарная, так унарная - только с одним символом. А рисовать в бинарной вместо нуля можно что угодно - хоть ноль, хоть запятую, хоть уточку. Как и вместо единицы.
...
Рейтинг: 0 / 0
13.05.2014, 10:04
    #38639450
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод чисел
BagaBaga, в теории передачи сигналов унарный код - суть надстройка над двоичным. Как Base64.
Если-бы мы использовали только единицы - то не смогли бы различать группы. Поэтому в С++ имплементации можно
использовать два символа. "1" и "," или любые другие но лишь бы две штуки.

А в алгоритме Васька функцию dec_to_unary можно заинлайнить. Фаза "формирования строки" для алгоритма не нужна.
...
Рейтинг: 0 / 0
13.05.2014, 17:00
    #38640029
clihlt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод чисел
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
++++++++++++++++++++++++++++++++++++++++++++++++>
+++++++++++++++++++++++++++++++++++++++++++++++++>
+
[>
,------------------------------------------------
[<<.>>-]
<<<.
>>+-]



А на C++ пишем интерпретатор
...
Рейтинг: 0 / 0
13.05.2014, 19:25
    #38640222
Creimi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод чисел
Вася Уткин,

в общем препод сказал, что код правильный, но не по теме машина Тьюринга.
дал пример решения, но как это в c++ реализовать понятия не имею
...
Рейтинг: 0 / 0
13.05.2014, 19:38
    #38640234
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод чисел
Creimi, рисуй граф из 7 вершин. {q0..q6}.
...
Рейтинг: 0 / 0
14.05.2014, 02:01
    #38640455
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод чисел
Creimiдал пример решения, но как это в c++ реализовать понятия не имеюСтрашненькое решение. Во первых текст задачи не совпадает с таблицей. Во вторых - убить того кто так организовал таблицу состояний. Минут пять пытался понять как это чудо читать полагается. Но это все оффтопик...

А чтобы перевести эту (или подобную) табличку на С++, не надо рисовать графы (хотя и можно). Лучше всего начать с того, чтобы своими словами объяснить нам что такое машина Тьюринга в твоем понимании, и как должна работать МТ решающая твою задачу. Вот потом можно и граф нарисовать или табличкой удобной оформить.
А на основе удобного и ясного графа или таблички перевод на С++ будет просто элементарным.
...
Рейтинг: 0 / 0
14.05.2014, 10:00
    #38640580
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод чисел
Creimi, не сиди и не жди что за тебя форум выкатит готовое решение. Пробуй. Ошибайся. Набивай шишки.
Смотри examples. Делай что нибудь.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Перевод чисел / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]