3 / 3 / 2
Регистрация: 19.03.2011
Сообщений: 72
1

Вывод подстрок (не очень сложно)

10.06.2011, 22:45. Показов 1172. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
как вывести все подстроки заданной строки?
типа есть строка "aaa bbb ccc ddd"
нужно вывести
aaa
aaa bbb
aaa bbb ccc
aaa bbb ccc ddd
bbb
bbb ccc
bbb ccc ddd
ccc
ccc ddd
ddd
у меня не вращается мозг как к этому приступить - допустим пробел можно найти repe scasb(scasw), записать его положение, потом вывести все с начала строки до этого пробела, но как к следующему пробелу перейти? сделать сравнение на количество совпадений, или как то проще можно? помогите пожалуйста! подскажите в какую сторону нужно думать, а то начать не получается...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.06.2011, 22:45
Ответы с готовыми решениями:

Очень сложно
Нужно с помошью VBA узнать к каокой групе доступа относиться моя учетная запись на комьютере(все пк...

Очень сложно
Не могу никак понять как это сделать... http://upload.akusherstvo.ru/image1011333.jpg

задачи, очень сложно
Помогите решить 5 задач, в интернете не чего нет :((

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

7
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,906
11.06.2011, 11:50 2
Я бы организовал массив указателей (индексов), в который заносятся начала токенов. Для данного случая было бы что-то типа 0,4,8,12
найти можно с помощью того же rep scasb. В cx загнать длину строки, и в цикле пока сх!=0 каждое срабатывание rep scasb будет давать новый индекс (указатель)
Затем делается двойной цикл
внешний по i=0 до i<кол-ва токенов
внутренний по j=i до j<кол-ва токенов
и выводится фраза начиная с i-го токена до j-того
Грубо, но как-то так
0
3 / 3 / 2
Регистрация: 19.03.2011
Сообщений: 72
11.06.2011, 12:17  [ТС] 3
alexcoder, я без сомнения дебил, но посвятите пожалуйста - как находится не первый пробел? хотя бы чтоб занести в массив
0
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,906
11.06.2011, 12:25 4
Код не проверял, скорей всего есть ошибки!!!!!!!:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
lea di,string
lea bx,mas
mov [bx],offset string
mov cx,stringlen
mov al,' '
lp: test cx,cx
jz ex
add bx,2
rep scasb
mov [bx],di
jmp lp
ex:
0
3 / 3 / 2
Регистрация: 19.03.2011
Сообщений: 72
11.06.2011, 12:57  [ТС] 5
alexcoder, позволь спрошу, что делают эти строки:
mov [bx],offset string (почему в квадратных скобочках и уточнение - offset типа указатель на строку?)
test cx,cx (что есть ф-ция test?)
0
16 / 16 / 1
Регистрация: 11.06.2011
Сообщений: 35
11.06.2011, 13:09 6
Команда:
TEST приемник, источник
Назначение:
Логическое сравнение
Процессор:
8086

Вычисляет результат действия побитового «логического И» над приемником (регистр или переменная) и источником (число, регистр или переменная; источник и приемник не могут быть переменными одновременно) и устанавливает флаги SF, ZF и PF в соответствии с полученным результатом, не сохраняя результат (флаги OF и CF обнуляются, значение AF не определено). TEST, так же как и СМР, используется в основном в сочетании с командами условного перехода (Jcc), условной пересылки данных (CMOVcc) и условной установки байт (SETcc).
(C) Зубков
Команда:
LEA приемник, источник
Назначение:
Вычисление эффективного адреса
Процессор:
8086

Вычисляет эффективный адрес источника (переменная) и помещает его в приемник (регистр). С помощью LEA можно вычислить адрес переменной, которая описана сложным методом адресации, например по базе с индексированием. Если адрес 32-битный, а регистр-приемник 16-битный, старшая половина вычисленного адреса теряется, если наоборот, приемник 32-битный, а адресация 16-битная, то вычисленное смещение дополняется нулями.
(C) Зубков
Offset почти тоже, что и LEA,Tasm заменяет LEA на MOV...OFFSET.
MOV...OFFSET короче LEA, поэтому в режиме SMART tasm заменяет LEA на MOV
для тех случаев, когда это возможно:

lea di,Array
mov di,offset Array

Но такая замена возможна не всегда:

lea di,Array[si+bx.FieldName]

Логика работы LEA в данном случае эквивалентна такому фрагменту:

mov di,offset Array
add di,si
add di,bx
add di,FieldName

Результат этого фрагмента не может быть вычислен на этапе компиляции
из-за неизвестных величин, а следовательно, LEA в данном случае не может
быть заменена командой MOV...OFFSET
(С) Один из первых сайтов, выданных гуглом
1
3 / 3 / 2
Регистрация: 19.03.2011
Сообщений: 72
11.06.2011, 13:15  [ТС] 7
Квент, спасибо. Значит не умею вопросы поисковику правильно задавать, т.к. не нашел (хотя искал по яндексу, но пох)
0
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
14.06.2011, 20:18 8
Вот рабочий код.
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
.model small
.stack 20h
.data
 
string db 'aaa bbbbb eeeeee ff ddd jjjjjjjjjjj',0
len=sizeof string-1
buff db len dup(?)
 
.code
.286
start:
mov ax,@data
mov es,ax
mov ds,ax
 
mov si,offset string
mov cx,len
 
@@1:
push si
mov di,offset buff
xor bp,bp
 
@1:
lodsb 
cmp al,20h
je @2
test al,al
je @2
stosb
jmp @1
@2:
test al,al
jne @4
mov bp,1
@4:
mov ax,240ah
stosw
mov dx,offset buff
mov ah,9
int 21h
mov byte ptr [di-2],20h
dec di
test bp,bp
je @1
 
exit:
pop di
mov al,20h
repnz scasb
mov si,di
test cx,cx
je @q
jmp @@1
 
@q:
xor ax,ax
int 16h
 
mov ah,4ch
int 21h
 
end start
0
14.06.2011, 20:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2011, 20:18
Помогаю со студенческими работами здесь

With recursive update postgres очень сложно
У меня есть запрос, который выводит пользователей у которых дата регистрации позже даты их первого...

Нахождение чисел в матрице. Очень сложно
#include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &quot;conio.h&quot; #include &quot;math.h&quot; #include...

Mikrotik раздача инета все очень сложно)
Доброго времени суток. Такая задача: с микротика подключенного по беспроводной сети к интернету...

Линк на страницу HTML, при работе с if endif (всё очень сложно)
Код всей страницы: &lt;?php /** * This template is used in the Loop to display posts with the...


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

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

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