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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2008, 12:42   #1
Proskurin
Пользователь
 
Регистрация: 17.04.2008
Сообщений: 16
По умолчанию Команды обработки строк!

Люди я с ассемблером не дружу воопще никак :-( да и получилось так, что препод болел в общем ппц мне по нему... Вот хочу Вас попросить решить задачу...Буду благодарен по гроб жизни:
--------------------------------------------------------------------------
Даны символы s1,s2,... Известно, что символ s1 отличен от восклицательного знака и что среди s2,s3... есть по крайней мере один восклицательный знак. Пусть s1,...,sn-символы последовательности, предшествующие первому восклицательному знаку (n заранее неизвестно).

Выяснить, входит ли в последовательность s1,...sn буква ю

--------------------------------------------------------------------------
от ассемблера я в ужасе
Proskurin вне форума Ответить с цитированием
Старый 29.04.2008, 12:52   #2
Gauss
Форумчанин
 
Аватар для Gauss
 
Регистрация: 26.11.2007
Сообщений: 235
По умолчанию

И я почти такой же задачей занимаюсь)) Только у меня найти не букву "ю" предшествующую первому воскл. знаку, а найти последнюю гласную в слове, до есть среди строки до первого пробела) и на дельфи делаю.
По моему, как и меня тут посаветовали, заранее надо ввиде массива определить буквы и потом перебирать текст до встречи с воскл. знаком с проверкой вхождения буквы "ю" в этот текст. Ассемблер я незнаю( . Свою задачу стараюсь делать на дельфи.
Gauss вне форума Ответить с цитированием
Старый 29.04.2008, 12:57   #3
Proskurin
Пользователь
 
Регистрация: 17.04.2008
Сообщений: 16
По умолчанию

Ага спасибо))))я вот тоже незнаю ассемблер на паскале я б сделал ну на дельфях бы сделал наверное в приципе то...но блин ассемблер енто ппц(( у нас вся группа страдает но некоторые подмазались красивыми глазами она их как бы пропускает на екзамен а я в числе лысых остался( вроде как бы ей и логические команды сдал побитовые сдвиги сдал а ей вот именно ента задача нужна сижу и думаю "Вот засада" :-(
Proskurin вне форума Ответить с цитированием
Старый 29.04.2008, 19:54   #4
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Если в плоской модели памяти, то как-то так (на MASM32)
Вложения
Тип файла: rar proga1.rar (2.5 Кб, 12 просмотров)
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 30.04.2008, 09:44   #5
Proskurin
Пользователь
 
Регистрация: 17.04.2008
Сообщений: 16
По умолчанию :-) thanks

Спасибо, правда тама теперь разбираться и разбираться но все же енто гораздо лучше чем ничего) спасибо попробую сдать енто преподу)))
Эх ... а все равно дельфи и паскаль рулит-с)))
Proskurin вне форума Ответить с цитированием
Старый 04.05.2008, 17:11   #6
Proskurin
Пользователь
 
Регистрация: 17.04.2008
Сообщений: 16
Вопрос другой вариант нужен этой же темы:

В общем спасибо за исходник но все же енто реально не мой уровень...Поентому прошу вас давайте доделаем чуточку вместе. Т.е. задача остается та же но немножко проще её надо сделать...Думаю примерно таким воть образом:
---------------------------------------------------------------------
...
C db ?
cycle:
(надо ввести С) ; я так и не смог разобраться с командами ввода с клавы если можете помогите...
cmp C,'!' ; восклицательный знак обозначает конец строки
je not_iu ; если не равен Ю
cmp C,'ю' ; Ю ищем в множестве
jne cycle
вывод "Ю есть"
ret
not_iu: вывод "Ю нет"
ret
-----------------------------------------------------------------------
воть тякие воть пироги надо теперь воть довести енту тему до ума... енто уже к вам ввиде просьбы шлю...
Proskurin вне форума Ответить с цитированием
Старый 04.05.2008, 22:08   #7
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Я так понимаю, что задача ввода данных в этой программе не самая главная, поэтому предлагаю для получения строки символов использовать консоль WIN32 - функция WIN API ReadConsoleA, отсюда сразу вытекает, что модель памяти для нашей программы - flat.

The ReadConsole function reads character input from the console input buffer and removes it from the buffer.

BOOL ReadConsole(

HANDLE hConsoleInput, // handle of a console input buffer
LPVOID lpBuffer, // address of buffer to receive data
DWORD nNumberOfCharsToRead, // number of characters to read
LPDWORD lpNumberOfCharsRead, // address of number of characters read
LPVOID lpReserved // reserved
);


Parameters
hConsoleInput-
Identifies the console input buffer. The handle must have GENERIC_READ access.
lpBuffer-
Points to a buffer that receives the data read from the console input buffer.
nNumberOfCharsToRead-
Specifies the number of characters to read. Because the function can read either 2-byte Unicode or 1-byte ANSI characters, the size of the buffer pointed to by the lpBuffer parameter should be at least NumberOfCharsToRead * sizeof(TCHAR).

lpNumberOfCharsRead -
Points to a 32-bit variable that receives the number of characters actually read.

lpReserved -
Reserved; must be NULL.

Return Values -
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.

Ну а дальше в принципе так как вы сами и написали.
Вложения
Тип файла: rar proga1.rar (2.4 Кб, 9 просмотров)
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 05.05.2008, 11:22   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Proskurin, если тебе подойдет оконная программа то вот пример на МАСМ
Код:
	  	   mov ebx, offset we
	    .while byte ptr [ebx]!='!'
	      .if byte ptr [ebx]=='h';
	         invoke GetForegroundWindow
	         invoke MessageBox,eax,addr re,0,0
	      .endif
	      inc ebx
	   .endw
Здесь we это адрес на введенную строку.
Насчет ввода можно использовать обычный Edit
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.05.2008, 07:40   #9
Proskurin
Пользователь
 
Регистрация: 17.04.2008
Сообщений: 16
По умолчанию

гык)))) Спасибо спасибо... задачу я все таки решил вроде как))) Ваши варианты хотя бы из за любопытства обязательно просматрю! Ноо вопще вчера торчал весь день в универе и сделал все таки свой вариант единственная трабла тама енто у меня с прерыванием. Т.е. тама как только мы вводим ! программа выходит а при вводе буквы Ю она пишет что символ Ю найден и опять же производит выход из проги. В общем я исходник выложу если что то можь посмотрим и доделаем её до конца))) я просто уже все сдал, и препод вроде как сказал нормально рейтинг выставил. Но просто над будь её чуть чуть подкаректировать!...!...!...
Proskurin вне форума Ответить с цитированием
Старый 06.05.2008, 07:52   #10
Proskurin
Пользователь
 
Регистрация: 17.04.2008
Сообщений: 16
По умолчанию

И ещё один вопрос у меня по поводу варианта Ulexа, вот часть проги твоей написанной:
cicle:
mov dl, byte ptr [eax]
cmp dl, 0 ;# - дошёл до конца строки символы 'ю' и '!' не найдены
je rezult1_out
cmp dl, '!' ;# - нашёл '!' раньше чем 'ю'
je rezult3_out
cmp dl, 'о' ;# - нашёл 'ю' раньше чем '!'
je rezult2_out
inc eax
jmp cicle

почему здесь мы ищем букву Ю но в команде "cmp dl, о" пишем о,
хотелось бы понять где имменно код определяет букву Ю, находит.
Или тута dl как то играет роль здесь?
Proskurin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DOS... Условные команды и проверка Xeon332 Помощь студентам 2 12.05.2008 21:20
Excel max 256 строк VS user надо 300 строк Exo Microsoft Office Excel 3 10.01.2008 17:14
Команды Dos Briz Помощь студентам 4 27.10.2007 16:59
Подскажите что обозначают команды Luska Помощь студентам 4 22.05.2007 21:04
Подскажите команды! Hump[FREE] Общие вопросы Delphi 2 27.02.2007 16:03