Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Глеб Иванов
3 / 2 / 2
Регистрация: 16.03.2015
Сообщений: 168
1

Найти слова, в которых заданный символ встречается наибольшее количество раз

09.04.2017, 09:54. Просмотров 396. Ответов 3
Метки нет (Все метки)

Доброе время суток еще раз
Нужна помощь в написании программы на Асемблере. Буду благодарен за помощь.
Задано символ и текст, слова в котором разделены пробелами и знаками препинания. Разработать программу, которая находит и выводит все слова содержащие заданный символ наибольшее количество раз.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2017, 09:54
Ответы с готовыми решениями:

Найти в тексте слова, в которых некоторый заданный символ встречается наибольшее число раз
1. Дан текст. Найти в нем слова, в которых некоторый заданный символ встречается наибольшее число...

Найти и напечатать все слова строки, в которые заданный символ входит наибольшее количество раз
Задано текст, слова в котором разделены пробелами и разделительными знаками, и символ. Разработать...

Из вводимых строк найти слова, у которых заданный символ встречается дважды - Не работает scanf
#include <stdio.h> #include <conio.h> #include <string.h> #include <ctype.h> #define N 80...

Найти слова, в которых символ в центре слова и в оставшейся части встречается только один раз
Задание: Слово имеет нечетное количество символов, и символ, находящийся в центре слова, в...

Многопоточность: вывести на экран символ, который встречается наибольшее количество раз в каждом из массивов
У меня есть такая задачка: Есть 3 массивы 1 содержит 2 миллиона символов 2 содержит 1000000...

3
Глеб Иванов
3 / 2 / 2
Регистрация: 16.03.2015
Сообщений: 168
14.05.2017, 18:46  [ТС] 2
Здравствуйте форумчане. Нужна ваша помощь - может у кого то есть наброски даной задачи.
Буду очень Вам благодарен за ответ

Задача:
Задано символ и текст, слова в котором разделены пробелами и знаками препинания.
Разработать программу, которая находит и выводит все слова, содержащие заданный символ наибольшее количество раз
0
ФедосеевПавел
Модератор
4247 / 2337 / 939
Регистрация: 01.02.2015
Сообщений: 7,726
21.05.2017, 23:08 3
Можно так, но программа различает регистр букв - буквы 'A' и 'a' разные. Если различать не требуется, то нужно перед обработкой строки привести её к одному регистру.

Информация о всех найденных словах (адрес начала, длина слова, количество искомых символов) сохраняется в стеке. Попутно определяется максимально встреченное количество искомых символов в отдельно взятом слове.
После того, как строка закончилась, начинается извлечение данных из стека. И если очередное слово содержит максимальное количество символов, то оно выводится на экран.
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
LOCALS
 
.model small
 
.stack 1000h
 
.data
        ;строка для исследования
        String                  db      'Mateusz Viste writes: DWOL is '
                                db      'a tiny tool that computes and '
                                db      'sends "Wake-on-LAN" packets. '
                                db      'Wake-on-LAN (WOL) is an Ethernet '
                                db      'standard that allows a computer to '
                                db      'be turned on by a network message.', '$'
        Len                     dw      $-String
        ;искомый символ
        Char                    db      'e'
 
        ;символы разделители слов
        DelimChars              db      '.,!?;:"() ', "'"
        LenDelimChars           dw      $-DelimChars
        ;переменные
        CrLf                    db      0Dh, 0Ah, '$'   ;перевод троки
        MaxChars                dw      ?               ;максимальное количество искомых символов в слове
        CountWords              dw      ?       ;общее количество слов
.code
 
main    proc
        mov     ax,     @data
        mov     ds,     ax
 
        lea     si,     String
        mov     cx,     Len
        mov     CountWords,     0
        mov     MaxChars,       1       ;значение не нулевое для того, чтобы
                                        ;при отсутствии символа в строке слова не выводились
        ;пропускаем все разделители
@@WhileDelimiter:
        mov     al,     [si]
        call    IsDelimChar
        cmp     ah,     0
        je      @@NewWord
        inc     si
        loop    @@WhileDelimiter
 
        jcxz    @@Finish        ;если строка закончилась - выйти
        ;найдено новое слово
@@NewWord:
        mov     dx,     0       ;длина очередного слова пока равна 0
        inc     CountWords      ;увеличиваем счётчик слов на 1
        mov     di,     0       ;количество искомых символов в очередном слове
        push    si              ;сохраняем в стеке адрес начала слова
        ;пропускаем все буквы слова до разделителя
@@WhileWord:
        mov     al,     [si]
        call    IsDelimChar
        cmp     ah,     0
        jne     @@Break
        cmp     al,     Char
        jne     @@NextChar
        inc     di
@@NextChar:
        inc     dx              ;увеличиваем длину слова
        inc     si              ;переходим к следующему символу
        loop    @@WhileWord
@@Break:
        push    dx              ;сохраняем в стеке длину слова
        push    di              ;сохраняем в стеке количество искомых символов в слове
        cmp     di,     MaxChars
        jbe     @@Next
        mov     MaxChars,       di
@@Next:
        jcxz    @@Finish
        jmp     @@WhileDelimiter
 
@@Finish:
 
        ;вывод результатов
        ;общее количество слов в строке
 
        mov     cx,     CountWords
@@ShowWords:
        pop     ax
        pop     si
        pop     dx
 
        cmp     ax,     MaxChars
        jne     @@SkipShow
        call    ShowWord
@@SkipShow:
        loop    @@ShowWords
 
 
        mov     ax,     4C00h
        int     21h
main    endp
 
;Определяет, принадлежит ли символ в al разделителям слов
;на входе
; al - символ
;на выходе
; ah -  0 (не разделитель), 1 (разделитель)
IsDelimChar     proc
        mov     ah,     0
        pushf
        push    si
        push    di
        push    cx
        push    es
 
        push    ds
        pop     es
        lea     di,     DelimChars
        mov     cx,     LenDelimChars
        cld
        repne   scasb
        jcxz    @@Skip
        jnz     @@Skip
        mov     ah,     1
@@Skip:
        pop     es
        pop     cx
        pop     di
        pop     si
        popf
        ret
IsDelimChar     endp
 
ShowWord        proc
        push    ax
        push    cx
        mov     ah,     40h
        mov     bx,     1
        mov     cx,     si
        mov     dx,     dx
        int     21h
        mov     al,     ' '
        int     29h
        pop     cx
        pop     ax
        ret
ShowWord        endp
 
end     main
1
Глеб Иванов
3 / 2 / 2
Регистрация: 16.03.2015
Сообщений: 168
22.05.2017, 14:10  [ТС] 4
Очень Вам благодарен.
Очень сильно выручаете, т.к. на носу дедлайн =(
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2017, 14:10

Найти в тексте слово, в котором заданный символ встретится наибольшее число раз
Условие задачи::help: в заданном тексте определить слово, в котором заданный символ встретится...

В заданном массиве строк найти все слова, в которых 2 раза встречается символ и вывести эти слова
не могу сообразить как написать цикл, в котором он выделяет слова, и потом выделяет из этих слов...

Найти слова в которые заданный символ входит не менее двух раз
Очень срочно нужен код пожалуйста! Сижу на ГОСах! помогите Дан текст! Найти слова в которые...


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

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

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