|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.06.2010, 12:08 | #1 |
Регистрация: 16.06.2010
Сообщений: 4
|
!!Нужно вписать еще одну ошибку в текст программы!!(в последнем сообщении вопрос)
Привет!
есть программа, смысл такой- отредактировать заданное предложение, удаляя из него все слова с нечетными номерами и переворачивая слова с четными. все отлично работает (вот архив с ней http://ifolder.ru/18184277) но! требуется еще сделать так, что если я ввожу пробелы вместо текста, то мне выдавалась ошибка типа "Error! Space string!" а не просто выдавалась пустая строка Result (как сейчас и происходит) вот текст программы dosseg .model small .stack 100 .data txt1 db 13,10,13,10,'Input text:',13,10,'$' txt2 db 13,10,13,10,'Result text:',13,10,'$' err1 db 13,10,13,10,'ERROR! Empty string!',13,10,'$' maxl equ 50 pbuf db maxl+1 pbuf2 db ? pbuf3 db maxl+1 dup (?) cnt db 0 ;НАЧАЛО ПРОГРАММЫ .code mov ax,@data mov ds,ax m1: mov dx,offset txt1 call tprn mov ah,0ah mov dx,offset pbuf int 21h cmp byte ptr pbuf2,0 jne m2 m11: mov dx,offset err1 call tprn jmp m1 m2: mov dx,offset txt2 call tprn mov si,offset pbuf3 mov ch,0 mov cl,pbuf2 ;НАХОДИМ ПЕРВЫЙ СИМВОЛ СЛОВА m3: cmp byte ptr [si],' ' jne m4 call sprint inc si loop m3 m4: cmp cx,0 je exit mov di,si ;НАХОДИМ КОНЕЦ СЛОВА m7: cmp byte ptr [si],' ' je m5 cmp cx,1 jne m6 inc si ;ПРОВЕРЯЕМ НОМЕР СЛОВА m5: inc cnt test cnt,1 jnz m3 ;ВЫВОДИМ ПЕРЕВЕРНУТОЕ СЛОВО push si push cx m8: dec si call sprint cmp si,di jne m8 pop cx pop si m6: inc si loop m7 cmp cx,0 je exit loop m3 exit: mov ah,4ch int 21h ;РАЗДЕЛ ПОДПРОГРАММ ;ПОДПРОГРАММА ПЕЧАТИ СИМВОЛА sprint proc near mov ah,2 mov dl,[si] int 21h ret sprint endp ;ПОДПРОГРАММА ПЕЧАТИ ТЕКСТОВОЙ СТРОКИ tprn proc near mov ah,9h int 21h ret tprn endp end ;КОНЕЦ ПРОГРАММЫ буду безумна благодарна за помощь, заранее спасибо! Последний раз редактировалось nici1991; 16.06.2010 в 23:10. |
16.06.2010, 13:36 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
попробуйте...
(Только измененный код (с начала программы), дальше код я не трогал) Код:
|
16.06.2010, 13:49 | #3 |
Регистрация: 16.06.2010
Сообщений: 4
|
это я вводила уже, но там в самой программе нужны какие-то дополнения...
вот для примера для 1й ошибки в "начало программы" есть mov dx,offset err1 call tprn jmp m1 |
16.06.2010, 14:41 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
так я же дополнил программу?!
Что то непонятно? Или не разобрались, как и куда вставлять?! на всякий случай прилагаю полный текст. Последний раз редактировалось Serge_Bliznykov; 16.06.2010 в 14:47. |
16.06.2010, 15:39 | #5 |
Регистрация: 16.06.2010
Сообщений: 4
|
А! все, спасибо!!)) просто не увидела кусочек!))
|
16.06.2010, 22:16 | #6 |
Регистрация: 16.06.2010
Сообщений: 4
|
Простите еще раз за вопрос, но моя программщица не унимается с этой программой...ей надо сделать еще одну ошибку по тому поводу, что если в тексте только одно слово, и следовательно результат тоже пустой, должно выводится "Error! Only one word in string"
я ввожу в константы err3 db 13,10,13,10,'ERROR!Only one word in string',13,10,'$' так же где-то в середине пишу, для вывода ошибки.. mov dx,offset err3 call tprn jmp m1 но, не могли бы подсказать код, для расспознавания того, что в строке одно слово.. |
17.06.2010, 04:06 | #7 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
потом выводим текст "Result text:" и начинаем выводить ВСЕ найденные пробелы, а найденные слова проверяем на чётность, нечётность и выводим чётные в обратном порядке. и вот при анализе слов мы попадаем на метку EXIT вот тут уже можно чётко знать, сколько было слов (они в счётчике cnt). И можно было бы выдать ошибку. Но проблема в том, что на экране уже выведены слова "Result text:" (ну и найденные пробелы тоже выведены, просто их не видно, пока не выведено хоть одно слово! ) Так вот, чтобы этого не было, получается, сначала надо прогнать полность весь код анализа строки (за исключением вывода на экран), а уже потом, в зависимости от того, сколько слов в строке решать, выводить результаты или выдавать сообщение об ошибке... |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
текст из нескольких ячеек в одну | Tirendus | Microsoft Office Excel | 10 | 20.01.2016 16:45 |
Нужно проверить одну программку под WM | Mclaren | Общие вопросы .NET | 3 | 25.05.2010 22:16 |
текст по строкам внести в одну ячейку | user7789 | Microsoft Office Excel | 14 | 05.08.2009 11:31 |
Нужно передалать одну строчку в коде (С++) | Olya90 | Помощь студентам | 4 | 29.06.2009 21:57 |
Выдаёт ошибку: acos DOMAIN error,полсе нажатия окей,ещё одну ошибку pow OWERFLAW ERROR | prikolist | Общие вопросы C/C++ | 4 | 10.04.2009 20:27 |