0 / 0 / 0
Регистрация: 14.06.2016
Сообщений: 4
1

Строки: найти слово с максимальным количеством букв "а"

18.06.2016, 16:01. Показов 1024. Ответов 3
Метки нет (Все метки)

Сделал задание на нахождение слова с максимальным количеством букв а, есть похожее задание на нахождение и удаление слов перевертышей, даже код нашел, не знаю, как переделать, помогите пожалуйста

Это код на нахождение и удаление слова с максимальным количеством букв а
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
include "emu8086.inc"
data segment
    mas db 30 dup(?),32
    smes4 dw ?
    adress dw ?
    razmernost dw 31
    pkey db "Programma zavershena. Nazmite klavishy."
ends
 
stack segment
    dw   128  dup(0)
ends
 
code segment
start:
; set segment registers:
    mov ax, data
    mov ds, ax
    mov es, ax
    
    call pthis
    Db  'Vvedite stroky: ', 0
    
    mov di,offset mas
    mov dx,30
    call GET_STRING 
    
    mov cx,razmernost
    mov si,offset mas
    mov di,si
    xor dx,dx
    xor bx,bx
    
 l1:lodsb
    cmp al,97
    jne l2
    inc dx
 l2:cmp al,32  
    jne l4
    cmp dx,bx
    jle l3
    mov bx,dx
    mov adress,di
    mov smes4,si
    sub smes4,di
 l3:mov di,si
    xor dx,dx
 l4:loop l1   
    
 
    
dec adress
 
 
mov di,offset mas
add di,adress
mov si,di
add si,smes4
mov cx,razmernost
sub cx,adress
sub cx,smes4
cld
rep movsb
 
mov si,razmernost
sub si,smes4
sub si,2
mov mas[si],0  
 
 
call   pthis
Db  13, 10, 'Stroka posle ydaleniya slova s max kolichestvom a:  ', 0 
mov si,offset mas
call PRINT_STRING   
 
   
    mov ah, 1
    int 21h
    
    mov ax, 4c00h ; exit to operating system.
    int 21h    
ends   
DEFINE_PRINT_STRING
DEFINE_GET_STRING
DEFINE_PTHIS
end start ; set entry point and stop the assembler.





Это вроде как код на нахождение слов перевертышей

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
push ebx;          // сохраняю регистры
  push esi;
  push edi;
  mov edi, eax;      // edi - начало строки
  xor eax, eax;      // Result := False
  test edi,edi;      // проверка на пустую строку
  je @exit;
  mov esi,[edi - 4]; // esi - длина строки
  mov ecx,esi;
  shr ecx,1;         // Вычисляю количество итераций
  test ecx, ecx; 
  je @exit;          // выхожу если счетчик цикла = 0
@loop:
  mov edx, edi;
  sub edx, ecx;             // [edi+esi-ecx]
  mov bl, byte [edx+esi];   // загружаю байт справа
  cmp bl, byte [edi+ecx-1]; // сравниваю с байтом слева
  jnz @exit;         // Выхожу из цикла если они не равны
  dec ecx;           // Уменьшаю счетчик
  jnz @loop;         // При нулевом счетчике выход из цикла
  mov eax, True;     // Result := True
@exit:
  pop edi;           // восстанавливаю регистры
  pop esi;
  pop ebx;
помогите пожалуйста соединить эти 2 кода, основное задание гласит-найти в тексте слова перевертыши и удалить их
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.06.2016, 16:01
Ответы с готовыми решениями:

Расставить символы по алфавиту. Удалить из строки слова в которых больше 2 букв "а"
Здравствуйте,помогите пожалуйста с решением данной задачи) 1)Дана последовательность латинских...

Обменять слова с максимальным и минимальным количеством букв «а»
Привет! Выручайте! Необходимо обменять слова с максимальным и минимальным количеством букв "а"....

Заменить во вводимом тексте каждое слово 'man' словом 'woman'
Здравствуйте. Поможете разобраться с ниже приведенной задачей: Заменить во вводимом тексте...

Просмотр битовой строки и замена всех имеющиеся последовательностей "111" на "000"
Здравствуйте! Нашёл по своей теме программу, но она что то не работает. Что нужно изменить? Заранее...

3
Эксперт Hardware
Эксперт Hardware
5406 / 1947 / 357
Регистрация: 29.07.2014
Сообщений: 2,863
Записей в блоге: 4
18.06.2016, 16:34 2
Цитата Сообщение от Hayama Посмотреть сообщение
найти в тексте слова перевертыши и удалить их
Перевёртыши - это такие что-ли: 12345 --> 54321
0
0 / 0 / 0
Регистрация: 14.06.2016
Сообщений: 4
18.06.2016, 16:59  [ТС] 3
нет, это как 12321
0
Эксперт Hardware
Эксперт Hardware
5406 / 1947 / 357
Регистрация: 29.07.2014
Сообщений: 2,863
Записей в блоге: 4
18.06.2016, 17:46 4
Цитата Сообщение от Hayama Посмотреть сообщение
не знаю, как переделать, помогите пожалуйста
Переделывать - дело не благодарное. Проще написАть заново..
Нужно вычислить длину слова, и сравнивать первый с последним символом.., второй с пред/последним и т.д. Если символы совпадают - в топку это слово!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.06.2016, 17:46
Помогаю со студенческими работами здесь

Ввод и вывод строки с заменой символа "a" на "A"
Добрый день, в ассемблере чайник полный Рабочий код, который заменяет в ГОТОВОЙ строке символ а...

Найти букву "m" в строке "pridmet assembler"
2.Дана строка. Найти букву "m" в строке "pridmet assembler" . Букву и номер буквы вывести на экран

Выходит ошибка Необработанное исключение в "0x0007102f" в "Lab08.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00078000". Как исправить
.586 .model flat, stdcall option casemap :none ; case sensitive ; Раздел подключения библиотек...

Рассматривая массив из 8 пятиразрядных слов, найти "исключающее или" всех 8 слов для выражения "10101"
У меня дан массив из 5 байт. Рассматривая его как массив из 8 пятиразрядных слов, найти...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru