|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
03.06.2012, 15:01 | #1 |
Пользователь
Регистрация: 03.06.2012
Сообщений: 28
|
Всем привет. есть такое задание: Задана строка символов. Составить программу, выясняющую, имеется ли в ней все буквы из другого заданного слова. Причём порядок наличия символов в проверяемой строке должен быть обратным их порядку во второй строке. Строки задаются с клавиатуры.
я написал прогу на паскале: Код:
вот наброски: Код:
Вход:s1,s2 - адреса нультерминатных строк для совмещения, s3 - адрес строки, где будет результат. Выход: по адресу s3 - нультерминатная соединенная строка. Код:
Последний раз редактировалось Stilet; 03.06.2012 в 20:03. |
04.06.2012, 08:06 | #2 |
Пользователь
Регистрация: 03.06.2012
Сообщений: 28
|
|
04.06.2012, 08:22 | #3 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Я бы поступил следующим образом.
Откомпилировал прогу, а затем дизасемблировал экзешник.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Smitt&Wesson; 04.06.2012 в 08:25. |
04.06.2012, 08:33 | #4 | |
Пользователь
Регистрация: 03.06.2012
Сообщений: 28
|
Цитата:
как вот этот цикл будет выглядеть? For j:=1 to n do begin L2:= Copy(S2,j,1); m:= Pos(L2,S3); If m>0 then Begin L3:= Concat(L3,Copy(S3,m,1)); Delete(S3,1,m) ; end; end; Последний раз редактировалось Stilet; 10.06.2012 в 09:38. |
|
05.06.2012, 16:28 | #5 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
я бы начал с того, что переписал бы исходную программу на паскале, хотя бы так.
Потому что тот ужос, который есть, не то что на ассемблер, а и на обычный язык трудно перевести.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
05.06.2012, 17:39 | #6 |
Пользователь
Регистрация: 03.06.2012
Сообщений: 28
|
спасибо, но прога не совсем правильно работает:
например вводим слово "Привет", затем слово "тт" и он говорит что имеется, хотя там только одна буква т |
05.06.2012, 18:44 | #8 |
Пользователь
Регистрация: 03.06.2012
Сообщений: 28
|
вот сейчас правильно вы хитро сделали, спасибо вам, но мне чего то не понять как на ассемблер перевести это
veniside, можете с переводом помочь? Последний раз редактировалось Stilet; 10.06.2012 в 09:42. |
05.06.2012, 19:16 | #9 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
вот если честно, то лень )
Но, когда мы убрали все эти ужасные Pos(), Concat() и прочие операции с текстом, перевод должен быть достаточно прямолинейным. ReadLn()/WriteLn() я не привожу, а на остальное дельфовый дизассемблер выдал такое: Код:
Update: Есть такой момент, что у меня юникодная Дельфи, т.е. каждый символ занимает 2 байта. У вас наверно 1 символ = 1 байт, так что вместо такого: Код:
Код:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
Последний раз редактировалось veniside; 05.06.2012 в 19:29. |
05.06.2012, 20:22 | #10 |
Пользователь
Регистрация: 03.06.2012
Сообщений: 28
|
Огромное спасибо, теперь осталось разобраться в этом. Мне вот эти цифры
не понятны в командах mov eax,[$0040bb94], обычно же так не пишут, когда переводят |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перевод из паскаля на СИ | Кот Шрёдингера | Помощь студентам | 0 | 02.11.2011 20:07 |
Перевод с Паскаля на С++.... | Solnze2 | Помощь студентам | 0 | 20.05.2011 23:13 |
перевод из паскаля в с++ | dANIL282 | Помощь студентам | 2 | 21.01.2011 00:05 |
Перевод с Паскаля на С | RamilFaz | Общие вопросы C/C++ | 3 | 08.04.2010 14:40 |
Из паскаля в ассемблер | Archiserafim | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 16 | 03.09.2009 22:02 |