Dr.Yevhenius
|
|
« Ответ #30 : 21-11-2008 19:32 » |
|
Для S0 не предусмотрены состояния "," и ".". Для состояния S3 будет забрано только одну цифру, а все остальные проигнорируются.
И вообще не понятно, что будет делать данный автомат - как будут изменятся переменные: куда считываешь число до запятой и когда прекращаешь это делать и т. д. ... Это всё нужно показывать, мы на СР вообще так делали.
Кстати, должен быть ещё один тип сигнала - "Other" - все остальные символы.
|
|
« Последнее редактирование: 15-12-2008 18:06 от Алексей1153++ »
|
Записан
|
|
|
|
Ludmila
|
|
« Ответ #31 : 21-11-2008 19:41 » |
|
да до всех символов дойти надо мне хотяб так пока
|
|
|
Записан
|
|
|
|
Dr.Yevhenius
|
|
« Ответ #32 : 21-11-2008 19:46 » |
|
да до всех символов дойти надо мне хотяб так пока
Все символы как раз обрабатывать и не надо, а игнорировать, это просто надо предусмотреть для каждого состояния и не более.
|
|
|
Записан
|
|
|
|
Ludmila
|
|
« Ответ #33 : 21-11-2008 19:59 » |
|
как вообще тогда перевести дробное двоичное число в десятичное? Обычным способом? Но чего получится?
|
|
|
Записан
|
|
|
|
Dr.Yevhenius
|
|
« Ответ #34 : 21-11-2008 20:05 » |
|
Возьмём для начала состояние S0 (начальное). Если сигнал "." - прекратить работу автомата (перейти, например, к состоянию 1); если "0" - отсекаем ноль; если "1" - то в соответствии - число перед запятой или после - переходим к состоянию 2 или 3; если "Other" (остальные символы) - нечего не делать; если "," - перейти, например, к состоянию 3... И так для каждого состояния описываешь все варианты. А при выходе обработать данные.
Кстати, как добавить рисунок в сообщение? А, всё, нашёл.
|
|
« Последнее редактирование: 21-11-2008 20:10 от Inkognito »
|
Записан
|
|
|
|
Ludmila
|
|
« Ответ #35 : 21-11-2008 20:09 » |
|
а как тогда на выходе обработать данные?
|
|
|
Записан
|
|
|
|
Dr.Yevhenius
|
|
« Ответ #36 : 21-11-2008 20:13 » |
|
Я сделал бы функцию превращения двоичного числа в десятичное - 1111 в 15.
|
|
|
Записан
|
|
|
|
Ludmila
|
|
« Ответ #37 : 21-11-2008 20:22 » |
|
?а если число 10,1 то как по обычному 10,1=1*2^1+0*2^0+1*2^(-1) так?
|
|
|
Записан
|
|
|
|
Ludmila
|
|
« Ответ #38 : 21-11-2008 20:25 » |
|
как? какая функция?
|
|
|
Записан
|
|
|
|
Dr.Yevhenius
|
|
« Ответ #39 : 21-11-2008 20:26 » |
|
Хотя 10,1 вероятней всего неверный способ, но я сделал бы так: 10 = 2, 1 = 1, а тогда результат равен 2,1.
|
|
|
Записан
|
|
|
|
Ludmila
|
|
« Ответ #40 : 21-11-2008 20:28 » |
|
это как так? на по всем правилам перевода 10,1=2,5?
|
|
|
Записан
|
|
|
|
Dr.Yevhenius
|
|
« Ответ #41 : 21-11-2008 20:35 » |
|
как? какая функция?
Такой пример: пользователь вводит свою строку, она же - строка сигналов. В цикле ты поочереди считываешь сигнал. Когда доходишь до сигнала "." - ты должна прервать цикл (остановить автомат). Но перед тем как закончить работу цикла, ты преобразовываешь двоичное число в десятичное с помощью функции, которую описываешь в коде программы отдельно. Я не понимаю вопроса...
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Online
Сообщений: 13
|
|
« Ответ #42 : 21-11-2008 20:35 » |
|
1*21+0*20+1*2-1 = 2 + 0 + 0.5 = 2.5 , всё верно девушка говорит
|
|
|
Записан
|
|
|
|
Ludmila
|
|
« Ответ #43 : 21-11-2008 20:38 » |
|
Хотя 10,1 вероятней всего неверный способ, но я сделал бы так: 10 = 2, 1 = 1, а тогда результат равен 2,1.
да да Алексей1153 правильно говорит как у тебя 2,1 получилась?
|
|
|
Записан
|
|
|
|
Dr.Yevhenius
|
|
« Ответ #44 : 21-11-2008 20:39 » |
|
1*21+0*20+1*2-1 = 2 + 0 + 0.5 = 2.5 , всё верно девушка говорит
Вообще-то да, согласен, не понял, извините...
|
|
|
Записан
|
|
|
|
Ludmila
|
|
« Ответ #45 : 21-11-2008 20:42 » |
|
ну так кто знает как на выходе обработать данные?
|
|
|
Записан
|
|
|
|
Dr.Yevhenius
|
|
« Ответ #46 : 21-11-2008 20:45 » |
|
Хотя с другой стороны вот сравнения: 1) моим способом: 10,1 - 2,1 10,10 - 2,2 10,11 - 2,3 2) вашим способом: 10,1 - 2,5 10,10 - 2,5 10,11 - 2,75.
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Online
Сообщений: 13
|
|
« Ответ #47 : 21-11-2008 20:46 » |
|
наверное, надо накапливать результат в переменной
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Online
Сообщений: 13
|
|
« Ответ #48 : 21-11-2008 20:47 » |
|
Хотя с другой стороны вот сравнения: 1) моим способом: 10,1 - 2,1 10,10 - 2,2 10,11 - 2,3 2) вашим способом: 10,1 - 2,5 10,10 - 2,5 10,11 - 2,75.
2 - верно )
|
|
|
Записан
|
|
|
|
Ludmila
|
|
« Ответ #49 : 21-11-2008 20:48 » |
|
( я тоже за (2)
|
|
|
Записан
|
|
|
|
Dr.Yevhenius
|
|
« Ответ #50 : 21-11-2008 20:54 » |
|
Я в Инете нашёл вот такое представление числа с запятой: aaaabbbb, и тогда получаем число через экспоненту и мантиссу в виде: aaaa*2^bbbb.
|
|
« Последнее редактирование: 21-11-2008 21:05 от Inkognito »
|
Записан
|
|
|
|
Ludmila
|
|
« Ответ #51 : 21-11-2008 20:55 » |
|
вот предыдущий мой пример: 1001 w=1;<-------| | | | w*2=2;<-----| | | w*2=4;<-------| | w*2+1=9.<------| Это ж вроде верно
|
|
« Последнее редактирование: 21-11-2008 21:00 от Ludmila »
|
Записан
|
|
|
|
Dr.Yevhenius
|
|
« Ответ #52 : 21-11-2008 20:59 » |
|
10012 = 910 это верно
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Online
Сообщений: 13
|
|
« Ответ #53 : 21-11-2008 20:59 » |
|
Inkognito, это вообще то не метод, а правило
|
|
|
Записан
|
|
|
|
Ludmila
|
|
« Ответ #54 : 21-11-2008 21:01 » |
|
а вот дробную часть далше как превратить
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Online
Сообщений: 13
|
|
« Ответ #55 : 21-11-2008 21:02 » |
|
первое число после запятой умножается на основание в -1 степени, второе - в -2 степени и так далее
|
|
|
Записан
|
|
|
|
Ludmila
|
|
« Ответ #56 : 21-11-2008 21:11 » |
|
|
|
|
Записан
|
|
|
|
Dr.Yevhenius
|
|
« Ответ #57 : 21-11-2008 21:14 » |
|
|
|
« Последнее редактирование: 15-12-2008 18:10 от Алексей1153++ »
|
Записан
|
|
|
|
Ludmila
|
|
« Ответ #58 : 21-11-2008 21:19 » |
|
0 1 2 3 - это состояния значит?
|
|
|
Записан
|
|
|
|
Dr.Yevhenius
|
|
« Ответ #59 : 21-11-2008 21:21 » |
|
Да, состояния
|
|
|
Записан
|
|
|
|
|