Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Кол-во слов в предложении( ASM) / 6 сообщений из 6, страница 1 из 1
09.05.2005, 12:51
    #33055014
Kamerad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кол-во слов в предложении( ASM)
Подскажите, пожалуйста, как написать программу на Assembler'е (под DOS)? которая бы подсчитывала количество слов в предложении( при условии, что между словами может быть несколько пробелов)
...
Рейтинг: 0 / 0
09.05.2005, 20:26
    #33055276
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кол-во слов в предложении( ASM)
Упрощаем алгоритм до безобразия:
а) удалить повторяющиеся пробелы
б) дописать в конец пробел, если там такового нету
в) посчитать кол-во пробелов
P.S. Правда, есть еще тонкие моменты, типа того, что тире может выделяться с двух сторон пробелами, но словом, по большому счету, не является ... Короче, уточните определение "слова".
...
Рейтинг: 0 / 0
10.05.2005, 08:39
    #33055453
Kamerad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кол-во слов в предложении( ASM)
Спасибо за предложение об упрощении алгоритма. Словом в данном случае является группа букв (или одна буква), отделенная от других слов при помощи пробелов (знаки препинания не учитываются). Хотелось бы увидеть примерный код программы, т.к. в Assembler'е я новичок.
...
Рейтинг: 0 / 0
10.05.2005, 10:22
    #33055488
XM
XM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кол-во слов в предложении( ASM)
Грубый код на C:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[]){
        int count= 0 ;
        int inword= 0 ;
        char * st=argv[ 1 ];
        while(*st){
                if(*st == ' '){
                        inword= 0 ;
                }else if( 0 ==inword){
                        ++count;
                        inword= 1 ;
                }
                st++;
        }
        printf("Word count:%d in %s\n", count, argv[ 1 ]);
        return  0 ;
}
Примерный код на ASM
Код: plaintext
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.
; на входе в процедуру DS:SI - указатель на строку (zero-ended)
; на выходе AX = кол-во слов в строке
word_count:
; сохранение регистров
        push    si
        push    cx
        push    dx
        push    bx

; инициализация
        xor     cx,cx ; счетчик слов
        xor     dx,dx ; признак in_word
; цикл подсчета
start_loop:
        cmp     [si], 0 
        je      end_loop
        cmp     [si],  32 
        jne     else_block
        mov     dx, 0 
        jmp     end_if
else_block:
        cmp     dx, 0 
        jne     end_if
        inc     cx
        mov     dx, 1 
end_if:
        inc     si
        jmp     start_loop
end_loop:
        mov     ax,cx
; восстановление состояния регистров
        pop     bx
        pop     dx
        pop     cx
        pop     si
; возврат
        retn
...
Рейтинг: 0 / 0
11.05.2005, 11:57
    #33057029
CruelGenius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кол-во слов в предложении( ASM)
KameradСпасибо за предложение об упрощении алгоритма. Словом в данном случае является группа букв (или одна буква), отделенная от других слов при помощи пробелов (знаки препинания не учитываются). Хотелось бы увидеть примерный код программы, т.к. в Assembler'е я новичок.

Вы студент что ли ?

2 ХМ
А_вы_знаете_что_настоящий_программист_не_пользуется_пробелами?

:-))))))))))))))
...
Рейтинг: 0 / 0
11.05.2005, 14:27
    #33057522
Kamerad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кол-во слов в предложении( ASM)
CruelGenuis Вы студент что ли ?

Ну не пенсионер же :-)

2 XM
Огромный thanXXX за код.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Кол-во слов в предложении( ASM) / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]