1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
| blackhard |
8.04.2008 20:26
Сообщение
#1
|
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: 0 |
Задание было такое:написать интерпритатор логических инструкций например(and x,y)где x y регистры.С этим я без особых проблем справился.Затруднения возникли в 2х местах.1)инструкции должны считываться из файле.в
файле разрешены однострочные комментарии(выделяются символом #) и многострочные(выделяются {})с чтением могострочных комментариев и возникла проблема тк коментарий внутри может содержать символы { }например{xxxxxxx}aaaaa}более менее рабочий вариант if(c=='{') incomment=1;
но } проигнорироваать не удается и она при дальнейшем чтении приписывается к команде идущей после коментария }in x почему не гнорируется я понимаю но как исправить не знаю помогите. и 2) инструкция in x используется для ввода с клавиатуры число в регистр х в 7ой системе та вот если я ввиду слишком большое число как понять что произойдет переполнение регистра в 32бита?
int inx(void)вот ф.я для in x. Прикрепляю полностью всю программу Прикрепленные файлы
Rar_archive.rar ( 2.45 килобайт )
Кол-во скачиваний: 168 |
| klem4 |
8.04.2008 20:51
Сообщение
#2
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Цитата тк коментарий внутри может содержать символы { } так сказано в задании ? Добавлено через 2 мин. честно говоря бред получается, вот смотри: { тут начинается комментарий1 а тут по идее заканчивается} and x,y # операция {а тут комментарий №2} Если многострочные комментарии могут сожедрать символы '{' и '}' , весь выделенный текст можно считать комментарием. Сообщение отредактировано: klem4 - 8.04.2008 20:54 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
| volvo |
8.04.2008 21:01
Сообщение
#3
|
|
Гость |
Цитата более менее рабочий вариант Вот просто рабочий вариант:... Добавлено через 1 мин. Цитата Если многострочные комментарии могут сожедрать символы '{' и '}' , весь выделенный текст можно считать комментарием. Нельзя - там неправильная вложенность... |
| blackhard |
9.04.2008 21:02
Сообщение
#4
|
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: 0 |
С комментариями вроде разобрался,а вот по поводу переполнения как определить что вводимое число слишком большое?При вводе число помещается в строку соответственно число может быть любой длинны,а вот потом оно переводится в чиловой тип.так как мне перед переводом определить что число слишком большое?
|
| andriano |
10.04.2008 7:09
Сообщение
#5
|
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
Минимум два варианта:
1. Определить в процессе перевода. 2. Сначала перевести в число заведомо избыточной разрядности, пранализировать, после чего привести к нужной разрядности. |
| blackhard |
10.04.2008 9:27
Сообщение
#6
|
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: 0 |
Минимум два варианта: 1. Определить в процессе перевода. 2. Сначала перевести в число заведомо избыточной разрядности, пранализировать, после чего привести к нужной разрядности. А можно так?:поскольку у меня регистр 32бита это будет число типа long так можноли взять предельное значение этого типа перегнать его в строку и эту строку сравнивать со строкой которую я ввожу с клавиатуры?если введенная строка больше то произойдет переполнение выйдет ли из этого ченить? |
| andriano |
10.04.2008 20:59
Сообщение
#7
|
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
Зависит от того, какой ты напишешь алгоритм сравнения строк.
PS. Но я бы использовал тип extended. А строки длиннее 19 символов - рубил на корню. |
![]() ![]() |
|
Текстовая версия | 8.12.2025 14:16 |