Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2010, 12:08   #1
nici1991
 
Регистрация: 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.
nici1991 вне форума Ответить с цитированием
Старый 16.06.2010, 13:36   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

попробуйте...
(Только измененный код (с начала программы), дальше код я не трогал)
Код:
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,'$'
err2 db 13,10,13,10,'ERROR! Space 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 m02 

m11: mov dx,offset err1 
call tprn 
jmp m1 


; Проверим на наличие непробелов
m02: mov si,offset pbuf3 
mov ch,0 
mov cl,pbuf2 

m03: cmp byte ptr [si],' ' 
jne m2
inc si 
loop m03

mov dx,offset err2
call tprn 
jmp m1 

m2: mov dx,offset txt2 
call tprn
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.06.2010, 13:49   #3
nici1991
 
Регистрация: 16.06.2010
Сообщений: 4
По умолчанию

это я вводила уже, но там в самой программе нужны какие-то дополнения...
вот для примера для 1й ошибки в "начало программы" есть
mov dx,offset err1
call tprn
jmp m1
nici1991 вне форума Ответить с цитированием
Старый 16.06.2010, 14:41   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

так я же дополнил программу?!
Что то непонятно? Или не разобрались, как и куда вставлять?!

на всякий случай прилагаю полный текст.
Вложения
Тип файла: rar tr2.rar (1.2 Кб, 17 просмотров)

Последний раз редактировалось Serge_Bliznykov; 16.06.2010 в 14:47.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.06.2010, 15:39   #5
nici1991
 
Регистрация: 16.06.2010
Сообщений: 4
По умолчанию

А! все, спасибо!!)) просто не увидела кусочек!))
nici1991 вне форума Ответить с цитированием
Старый 16.06.2010, 22:16   #6
nici1991
 
Регистрация: 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

но, не могли бы подсказать код, для расспознавания того, что в строке одно слово..
nici1991 вне форума Ответить с цитированием
Старый 17.06.2010, 04:06   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
но, не могли бы подсказать код, для расспознавания того, что в строке одно слово..
А вот тут всё не так однозначно... Дело в том, что логика Вашей программы (впрочем, Вы, как автор алгоритма, лучше меня знаете! ) построена так: ввод, потом проверка на пустую строку, потом проверка, добавленная Вашим покорным слугой, на строку, состоящую из одних пробелов,
потом выводим текст "Result text:"
и начинаем выводить ВСЕ найденные пробелы, а найденные слова проверяем на чётность, нечётность и выводим чётные в обратном порядке.

и вот при анализе слов мы попадаем на метку EXIT
вот тут уже можно чётко знать, сколько было слов (они в счётчике cnt). И можно было бы выдать ошибку. Но проблема в том, что на экране уже выведены слова "Result text:" (ну и найденные пробелы тоже выведены, просто их не видно, пока не выведено хоть одно слово! )
Так вот, чтобы этого не было, получается, сначала надо прогнать полность весь код анализа строки (за исключением вывода на экран), а уже потом, в зависимости от того, сколько слов в строке решать, выводить результаты или выдавать сообщение об ошибке...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
текст из нескольких ячеек в одну 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