Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Kaldaray
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 4
1

Сортировка букв в слове

31.10.2017, 15:39. Просмотров 149. Ответов 1
Метки нет (Все метки)

Вопрос такой. Как сделать так, чтобы знаки препинания оставались на том же месте
C
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
#include<iostream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
using namespace std;
 
char strr1[500], strr2[200], strr3[500], strr4[200];
char pr1 = ' ';
int pp, pp1, pp2, pp7, pp8, pp9, p10;
int vv0, v_v4;
char zap = ',';
char t;
int dlin[10], dlin1, dlin2[10], dlin3[10];
int main()
{
    setlocale(LC_ALL, ".1251");
    cout << "Введите строку из 6 слов:\n";
    fgets(strr1, sizeof(strr1), stdin);
    pp = strlen(strr1);
        _asm
    {
        lea esi, strr1
        mov ecx, 0
 
        mov bl, [esi]
 
        cmp bl, ' '
        je c_0_04
 
        cmp bl, '.'
        je c_0_04
 
        cmp bl, ','
        je c_0_04
 
        jmp c__01
 
        c_0_04 :
 
        ; пропускаем все пробелы и разделители
 
            mov bl, [esi]
 
            cmp bl, ' '
            je c_0__04
 
            cmp bl, '.'
            je c_0__04
 
            cmp bl, ','
            je c_0__04
 
            jmp c__01
 
            c_0__04 :
        inc p10
            inc esi
            jmp c_0_04
 
            ; считаем количество букв в каждом слове
 
            c__01 :
 
        mov bl, [esi]
        cmp bl, 10
            je c_0_3
 
 
            cmp bl, ' '
            je с_0_1
 
            cmp bl, '.'
            je с_0_1
 
            cmp bl, ','
            je с_0_1
            */
 
            mov pp9, ecx
            ; заносим в массив dlin2 количество букв в каждом слове
            mov ecx, pp7
            add[dlin2 + ecx], 1
 
            mov ecx, pp9
 
            ; заносим в массив dlin количество символов от первой буквы до первой буквы след.слова
 
            add[dlin + ecx], 1
 
            inc esi
            jmp c__01
 
            с_0_1 :
 
        add pp7, 04h
 
            c_00_2 :
 
        mov bl, [esi]
 
            cmp bl, 10
            je c_0_3
 
            
            cmp bl, ' '
            je c_00_3
 
            cmp bl, '.'
            je c_00_3
 
            cmp bl, ','
            je c_00_3
 
            add ecx, 04h
            jmp c__01
 
 
            c_00_3 :
        add[dlin + ecx], 1
            inc esi
            jmp c_00_2
 
 
            c_0_3 :
 
        ; ------------------------------------ -
 
            lea esi, strr1
            add esi, p10
            ; сортируем буквы в слове методом пузырька
            c_v_c_04 :
        mov ecx, pp2
            mov eax, [dlin2 + ecx]
            mov pp, eax
            mov ecx, pp
 
            vv_04 :
        mov pp1, 0
 
            vv_0_05 :
            mov edx, pp1
 
            mov bl, [esi + edx]
            mov al, [esi + edx + 1]
 
 
            cmp al, ' '
            je vk_03
 
            cmp al, 10
            je vk_03
 
            cmp bl, al
            jna vk_04
 
 
            mov bl, [esi + edx + 1]
            mov al, [esi + edx]
            mov[esi + edx], bl
            mov[esi + edx + 1], al
            jmp vk_04
 
            vk_03 :
        mov pp1, ecx
 
            vk_04 :
        cmp pp1, ecx
            je vv_05
 
            inc pp1
            jmp vv_0_05
 
            vv_05 :
 
        loop vv_04
 
            mov ecx, pp2
            mov eax, [dlin + ecx]
            add esi, eax
 
            add pp2, 04h
 
            mov ecx, pp2
            mov eax, [dlin + ecx]
            cmp eax, 0
            je vv_06
 
            jmp c_v_c_04
 
            vv_06 :
 
        xor edx, edx
 
    }
 
    cout << "Полученная строка:\n";
 
    for (int i(0); i< sizeof(strr1); i++)
    {
        if (strr1[i] == '/0')
            break;
        cout << strr1[i];
    }
 
    _getch();
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2017, 15:39
Ответы с готовыми решениями:

Подсчитать количество букв в каждом слове
написал что смог. не вижу где может быть ошибка, но даже на экран не выводит....

Выдать на экран количество букв в первом слове строки
Завтра сдавать....:cry: Может кто то помочь?! Ввести строку символов,...

Сколько букв в слове в верхнем регистре в Assembler
Здравствуйте,помогите пожалуйста с программой. Программа должна высчитывать...

Поиск количества букв "А" в самом длинном слове
Помогите написать прогу которая подсчитует количество букв &quot;А&quot; в самом длинном...

Подсчитать количество букв "C" в самом длинном слове
помогите исправить программу для моей задачи, пробовал писать, выбивает ошибку...

1
ФедосеевПавел
Модератор
3854 / 2175 / 894
Регистрация: 01.02.2015
Сообщений: 7,248
31.10.2017, 19:11 2
А как звучит исходная постановка задачи?

Добавлено через 2 минуты
Если "Сортировка букв в слове" - то выделить очередное слово и отсортировать подмассив, потом искать следующее слово.

Добавлено через 1 час 47 минут
Посмотрите, как можно разделять строку на слова при множестве символов-разделителей
http://www.cyberforum.ru/post10462363.html
Это, конечно, вариант для DOS и 16-разрядный, но идею IsDelimChar можно подчерпнуть.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2017, 19:11

Ввод ASCII-кодов начальной и конечной букв, вывод букв, расположенных между введёнными
Написать exe-программу, которая выведет запрос о коде начальной и конечной букв...

Подсчитать в строке число букв А и В, если букв А больше, чем В, то удалить в строке все символы В
Помогите пожалуйста! Нужно подсчитать в строке число букв А и В, если букв А...

Подсчитать в строке число букв А и В, если букв А больше, чем В, то удалить в строке все символы В
Здравствуйте, помогите пожалуйста решить задачу с помощью процедур &quot;Подсчитать...


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

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

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