8 / 6 / 0
Регистрация: 22.10.2014
Сообщений: 37
1

Удаление повторяющихся слов в строке

22.10.2014, 21:32. Показов 2940. Ответов 20
Метки нет (Все метки)

Помогите с написанием программы на ассемблере, которая в строке удаляет повторяющиеся слова и выводит отредактированную строку в консоль
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2014, 21:32
Ответы с готовыми решениями:

Удаление слов в символьной строке
Помогите, пожалуйста найти ошибку в коде!!! Задача такова((TASM): Написать программу, которая в...

Определение и удаление количества повторяющихся слов в строке (Delphi, form)
Здравствуйте, нужно срочно написать программу (в виде формы) Задача состоит в следующем: В строке...

Удаление повторяющихся слов
На вход - предложение. Необходимо удалить повторяющиеся слова. В программе нельзя использовать...

Удаление повторяющихся слов
Задание: из текста, который вводит пользователь, нужно удалить повторяющиеся слова. Пример: просто...

20
Клюг
7670 / 3185 / 382
Регистрация: 03.05.2011
Сообщений: 8,381
22.10.2014, 23:40 2
А ОСь/транслятор какие?
0
8 / 6 / 0
Регистрация: 22.10.2014
Сообщений: 37
22.10.2014, 23:43  [ТС] 3
windows8/emu8086
0
Клюг
7670 / 3185 / 382
Регистрация: 03.05.2011
Сообщений: 8,381
22.10.2014, 23:51 4
А ОСь/транслятор какие?
Цитата Сообщение от Sn0wf1llin Посмотреть сообщение
emu8086
Эээ, нет, под эмо8086 пишите сами. Под win/console(msvcrt.dll), dos(clib) или BSD/Linux(libc.so) это пишется довольно тривиально, но изобретать аналоги библиотечных ф-ций, написанных >40 лет назад — увольте.
0
8 / 6 / 0
Регистрация: 22.10.2014
Сообщений: 37
22.10.2014, 23:53  [ТС] 5
ok, тогда хотя бы можете под win/console написать? я разберусь, пойму принцип и переделаю так как мне надо
0
Клюг
7670 / 3185 / 382
Регистрация: 03.05.2011
Сообщений: 8,381
23.10.2014, 00:13 6
А зачем? http://msdn.microsoft.com/ru-r... a80kz.aspx , там же ищете strtok, strcat, strpbrk и пишите.
0
8 / 6 / 0
Регистрация: 22.10.2014
Сообщений: 37
23.10.2014, 00:18  [ТС] 7
вы не могли бы подсказать мне алгоритм решения? я пока не совсем представляю, как мне организовать сравнение слов на ассемблере
0
Клюг
7670 / 3185 / 382
Регистрация: 03.05.2011
Сообщений: 8,381
23.10.2014, 00:39 8
Сначала о другом - исходники ф-ций работы со строками(и не только) на асме можно найти здесь, на любом из зеркал: http://www.filewatcher.com/m/f... 142-0.html

Копируете исходную строку по strcpy - strtok изменяет исходную строку;
Разделяете строку на слова по strtok;
Ищете полученное слово в исходной строке ДВАЖДЫ по strstr - если оно встретилось только один раз, то копируете его в выходной буфер по strcat, не забыв добавить пробел.
Это самый простой вариант.
0
8 / 6 / 0
Регистрация: 22.10.2014
Сообщений: 37
23.10.2014, 00:42  [ТС] 9
сейчас буду пробовать, спасибо что помогли
0
8 / 6 / 0
Регистрация: 22.10.2014
Сообщений: 37
24.10.2014, 09:44  [ТС] 10
то нужно подключать для strtok? (установил Radasm пробую на нем, не получается - пишет "Неверный синтаксис" и указывает на strtok)
0
Клюг
7670 / 3185 / 382
Регистрация: 03.05.2011
Сообщений: 8,381
24.10.2014, 09:52 11
Если дя винконсоли, то
Assembler
1
2
    include \masm32\include\msvcrt.inc
    includelib  \masm32\lib\msvcrt.lib
0
8 / 6 / 0
Регистрация: 22.10.2014
Сообщений: 37
24.10.2014, 09:53  [ТС] 12
подключено. может синтаксис неправильный? помогите пожалуйста разобраться!! как должно быть написано?
0
Клюг
7670 / 3185 / 382
Регистрация: 03.05.2011
Сообщений: 8,381
24.10.2014, 09:59 13
Цитата Сообщение от Sn0wf1llin Посмотреть сообщение
как должно быть написано?
Оно там зовётся crt_strtok , все ф-ции из msvcrt.dll идут с таким префиксом. Почему - малопонятно.
0
8 / 6 / 0
Регистрация: 22.10.2014
Сообщений: 37
24.10.2014, 10:01  [ТС] 14
аа спасибо! заработало, ошибку больше не выдает!
а как дальше?
я просто под радасм не кодил никогда
0
Клюг
7670 / 3185 / 382
Регистрация: 03.05.2011
Сообщений: 8,381
24.10.2014, 10:07 15
Цитата Сообщение от Sn0wf1llin Посмотреть сообщение
под радасм не кодил никогда
Я — тоже. Не люблю писать проги в графмоде, запускаю masm из-под FAR'a.
0
8 / 6 / 0
Регистрация: 22.10.2014
Сообщений: 37
24.10.2014, 13:42  [ТС] 16
Что мне делать дальше после того как invoke crt_strstr, Addr word, addr str
??
Если слово найдено то что с чем сравнивать?
0
Клюг
7670 / 3185 / 382
Регистрация: 03.05.2011
Сообщений: 8,381
24.10.2014, 13:57 17
К EAX, который вернул crt_strstr, прибавить crt_strlen(ADDR word) и вызвать crt_strstr снова. Если EAX != 0, то слово повторяется.
0
8 / 6 / 0
Регистрация: 22.10.2014
Сообщений: 37
24.10.2014, 14:02  [ТС] 18
В eax же уже количество слов-результат crt_strtok!
0
Клюг
7670 / 3185 / 382
Регистрация: 03.05.2011
Сообщений: 8,381
24.10.2014, 14:46 19
Ну дык храните его в другом регистре. Кстати, при вызове любой ф-ции ECX и EDX загаживаются, ну и естественно EAX.
0
8 / 6 / 0
Регистрация: 22.10.2014
Сообщений: 37
28.10.2014, 09:05  [ТС] 20
Должно пока искать и считать пробелы, чтобы потом строку разделить на слова

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
.model small
.data     
str        db 'The quick quick brown dog dog    jumps over the lazy fox fox',13,10,'$'
len = $ - str
str2       db len (?)
previous   db 'Your string was: $'  
newstring  db 'New string is: $'
 
.code  
 
out_str macro string
    mov ah, 09h
    lea dx, string
    int 21h
endm
num_char macro message 
   local m1,elem,num,err_mes,find,num_exit
     jmp m1 
     elem      db "String contains "
     num       db 2 dup (0) 
               db " symbols ",10,13,'$' 
     err_mes   db "Error! ",10,13,'$' 
m1:
     push es 
     push cx 
     push ax 
     push di 
     push ds 
     pop es 
     mov al, ' '
     cld 
     lea di, message
     push di
     mov cx, len
repne scasb
     je find
     push ds
     push cs
     pop ds 
     out_str err_mes 
     pop ds 
     jmp num_exit     
find: 
     pop ax 
     sub di,ax 
     xchg di,ax 
     add al, 5
     aam 
     or ax, 3030h 
     mov cs:num,ah 
     mov cs:num+1,al 
     push ds
     push cs 
     pop ds 
     out_str elem 
     pop ds 
num_exit: 
     push di 
     push ax 
     push cx 
     push es 
endm 
 
copy macro string1, string2, length1
    lea si, string1
    lea di, string2
    mov cx, length1
rep movsb
endm
 
start: 
    mov ax, @data
    mov ds, ax 
    mov es, ax 
 
    out_str previous
    out_str str
    copy str, str2, len
    num_char str2
    jmp exit
     
           
 
exit:
    mov ax, 4c00h  
    mov al, 01h
    int 21h
 
end start
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2014, 09:05

Удаление повторяющихся слов
Ребята, пишу первое регулярное выражение. Нужно удалить повторяющиеся слова в строке без учета...

Поиск повторяющихся слов и их удаление
Задача: для заданного текста определить 1)сколько раз каждое слово встречается в тексте ...

Удаление повторяющихся слов из строки
Имею строку String^ str = "аааи фффс фффс";, которую читаю из файла... StreamReader ^ sr =...

Удаление повторяющихся слов из файла
Здравствуйте. Задача состоит в том, чтобы в полученном текстовом файле выполнить поиск...

Удаление повторяющихся слов из стоки на C
Здравствуйте. Помогите пожалуйста реализовать задачу: Дана строка. Группа символов разделленая...

Строки. Удаление повторяющихся слов
Добрый вечер, всё никак не получается удалить одинаковые слова, помогите пожалуйста. uses crt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.