Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Lirika_

В каждой группе следующих подряд одинаковых символов оставить только один.

23.05.2011, 15:34. Показов 1270. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Внимание, конец програмы утерян! Очень прошу, помогите ее дописать, она почти готова! Горит зачет!
Строка вводится с клавиатуры, метод обработки в шапке темы
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
include io.asm
.model SMALL
.stack 256
 
.data
 
mass db 100 dup (?)     ; для исходной строки
 
forprint db 100 dup (?) ; будет использоваться для исправленной строки - массив
 
 
 
a db 0
e dw 0
symb db 0
 
 
.code
Entry:
mov ax, @data
mov ds, ax
 
mov si, 0
 
 
M1:
inch mass[si]        ;вводим символ в массив
cmp mass[si], '0'    ;сравнение кода символа с кодом '0'
je M2
inc si
jmp M1
 
M2:
dec si                ;теперь si - номер последнего введенного элемента (перед '0')
mov bx,si             ;в bx длина текста. Регистр bx отводиться для количества элементов массива
mov e, si             ;запомнили номер последнего элемента
mov ah,mass[si]
mov a, ah             ;последний элемент текста занесен в а
 
 
 
 
 
 
                      ; Проверка условий на ввод исходного текста.
    mov al,mass[0]    ; смотрим, является ли первый символ цифрой
    cmp al,30h     
    jl N2
    cmp al,39h
    jle N4            ;нужно проверитьпоследний символ      
    jmp N2
N4:
    mov al, a         ; проверим последний элемент массива
    cmp al,30h
    jl N2
    cmp al,39h     
    jle N10           ;в случае выполнения перепрыгиваем на N10       
    jmp N2 
    
N10: cmp a,mass[0]
     je N2
     jmp N1 
    
                      ;Условие выполнено => заменяем цифру на букву. (ненулевую цифру)
N1:
    mov si,0
L3:
    cmp si,bx
    jg N3
    mov al,mass[si]
    cmp al,31h
    jl O2
    cmp al,39h
    jg O2
    add al,31h         ;суммирование, тк отличаются на 30 символов
 
 
O2:                    ;помещам в новый массив forprint исправленные элементы
    mov forprint[si],al
    inc si
    jmp L3
    
    
 
    
                        ;Условие не выполнено => в каждой группе следующих подряд одинаковых символов оставить только один
N2:                     ;выполняем преобразование 2
mov si, 0               ;счетчик si служит для прокрутки текста
mov di, 0               ;счетчик di - для записи в строку вывода
mov ah, mass[si]
mov symb, ah            ;"предыдущий" символ, с которым будем сравнивать последующие
mov forprint[si],ah 
 
inc si
inc di
 
cycle2:
mov ah, mass[si]
cmp symb, ah            ;сравниваем текущий символ с "предыдущим" 
je m21              
mov ah, mass[si]        ;если они различны
mov symb, ah            ;меняем "предыдущий"
mov forprint[di], ah    ;записываем текущий в строку вывода
inc si
inc di
cmp si,e
jg m12
jmp cycle2
 
M21:                    ;если они совпадают
inc si                  ;увеличиваем счетчик, пока "предыдущий" и текущий символы не станут различаться
jmp cycle2
 
M12:
mov e, di               ;номер последнего элелемента в зависимости от выполнения условия может различаться
m11:                 
mov si,0            
 
 
 
cycle3:                 ;распечатываем
outch forprint[si]
inc si              
cmp si,e
jng cycle3
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.05.2011, 15:34
Ответы с готовыми решениями:

Из каждой группы подряд идущих одинаковых элементов оставить только один
Составить программу, которая в списке L из каждой группы подряд идущих одинаковых элементов оставляет только один. С объяснениями что как...

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

Из каждой группы подряд идущих одинаковых слов в списке оставить только одно
Составить программу, которая формирует список с двумя связями, добавляет в него не менее 20 слов на русском языке. Из каждой группы подряд...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.05.2011, 15:34
Помогаю со студенческими работами здесь

Из каждой группы подряд идущих элементов оставить только один
Дан список строк. Написать подпрограмму, которая из каждой группы подряд идущих элементов оставляет только один. заранее спасибо кто...

Из каждой группы подряд идущих элементов оставить только один
Дан список строк. Написать подпрограмму, которая из каждой группы подряд идущих элементов оставляет только один.

Оставить в каждом слове текста с каждой последовательности идущих подряд одинаковых букв только одну букву
Здравствуйте! Задание:Оставить в каждом слове текста с каждой последовательности идущих подряд одинаковых букв только одну букву. ...

В списке L из каждой группы идущих подряд равных элементов оставить только один
опишите программу которая в списке L из каждой группы идущих подряд равных элементов оставляет только один

В списке L с каждой группы подряд равных элементов оставить только один элемент
Опишите программу , которая в списке L с каждой группы подряд равных элементов оставляет только один элемент.


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Программный отбор элементов справочника Номенклатура по группе 1С
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор под наименованию группы (на. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор элементов справочника Сотрудники по перечислениям 1С
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru