С Новым годом! Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/26: Рейтинг темы: голосов - 26, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 9

В предложении добавить между словами по одному пробелу

20.10.2010, 01:35. Показов 5116. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
задание следующее: дано предложение. добавить между словами по одному пробелу.
помогите набросать программку,пожалуйста
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.10.2010, 01:35
Ответы с готовыми решениями:

Сжать текст, оставив между словами по одному пробелу
Дан текст 30 символов. Сжать текст, оставив между словами по одному пробелу.

Сжать текст, оставив между словами по одному пробелу
Дан текст 30 символов. Сжать текст, оставив между словами по одному пробелу.

Оставить между словами лишь по одному пробелу, удалив лишние. Макроопределения
Ребят, помогите исправить код. Задана строка слов. Словом считается последовательность символов, разделённая пробелами. В исходной...

3
22 / 22 / 0
Регистрация: 12.07.2010
Сообщений: 42
20.10.2010, 06:59
Просматриваешь по символу свою строку и находишь позицию, где смежные символы "слово {неслово} слово", затем вызываешь процедуру добавления символа в строку (или если копировать результат в новую, то добавляешь пробел между найденными символами "неслово-слово")
{} - повторение 1 и более раз
0
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 9
20.10.2010, 12:00  [ТС]
Цитата Сообщение от kidiam Посмотреть сообщение
затем вызываешь процедуру добавления символа в строку
вот с этим как раз проблемы. придется всю оставшуюся строку сдвигать. как это сделать?
0
20 / 19 / 1
Регистрация: 16.10.2010
Сообщений: 74
21.10.2010, 01:01
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
.386
.model flat,stdcall
option casemap:none
 
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
include    \masm32\include\masm32.inc
includelib \masm32\lib\masm32.lib
include \masm32\macros\macros.asm
 
.data
   vvedite     db      "ўўҐ¤ЁвҐ ⥪бв:",0 
    vivod     db      "१г«мв в:",0 
        probel db " ",0 ;какой символ заменяем
        zamena db "  ",0 ;на что заменяем
        slov dd 15 ;слов в предложении
 .data?  
      stdin DWORD ?
      stdout DWORD ?
      cRead DWORD ?
      cWrite DWORD ? 
     
      buff db 155 dup(?) ; буфер под исходную строку
        buff2 db "   ",10,13    ;под конечный результат 
.code
  start:
       invoke GetStdHandle,STD_OUTPUT_HANDLE
        mov stdout,eax
       invoke GetStdHandle,STD_INPUT_HANDLE
       mov stdin,eax
                invoke WriteConsole,stdout,addr  vvedite , sizeof  vvedite  , addr  cWrite,0        
                invoke ReadConsole ,stdin,addr  buff ,256,ADDR cRead,NULL   ;ввод первой строки
                invoke szRep,addr buff,addr buff2,addr probel,addr zamena ; смотри masmlib.chm в masm32\help
        invoke WriteConsole,stdout,addr vivod, sizeof  vivod, addr  cWrite,0 
        mov eax,slov
        add cRead,eax
        invoke WriteConsole,stdout,addr  buff2 , cRead, addr  cWrite,0 
        invoke Sleep,4000   
invoke ExitProcess,0  ; завершение работы программы
end start
Добавлено через 4 часа 15 минут
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
.386
.model flat,stdcall
option casemap:none
 
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
include    \masm32\include\masm32.inc
includelib \masm32\lib\masm32.lib
include \masm32\macros\macros.asm
 
.data
   vvedite     db      "ўўҐ¤ЁвҐ ⥪бв:",0 
    vivod     db      "ўлў®¤ бва®ЄЁ:",0 
    flag dd 0
 .data?  
      stdin DWORD ?
      stdout DWORD ?
      cRead DWORD ?
      cWrite DWORD ? 
     
      buff db 155 dup(?) ; буфер под исходную строку
        buff2 db 155 dup(?) ;под конечный результат 
.code
  start:
       invoke GetStdHandle,STD_OUTPUT_HANDLE
        mov stdout,eax
       invoke GetStdHandle,STD_INPUT_HANDLE
       mov stdin,eax
                invoke WriteConsole,stdout,addr  vvedite , sizeof  vvedite  , addr  cWrite,0        
                invoke ReadConsole ,stdin,addr  buff ,256,ADDR cRead,NULL   ;ввод первой строки
xor ebx,ebx    ;счетчик символов в buff2   
lea esi,buff ;в esi  - номер очередного бита строки       
new_byte:
        cmp word ptr [esi],0a0dh ;проверка на конец строки
        jz end_string
        cmp byte ptr [esi],' '
            jz count ;нашли пробел, добавим в выходную строку два пробела
        mov al,byte ptr [esi]
        mov byte ptr buff2[ebx],al
        inc esi
        inc ebx
        jmp new_byte ;проверка следующего бита
    
count: 
        mov al,byte ptr [esi]
        mov byte ptr buff2[ebx],al
        inc ebx
        mov byte ptr buff2[ebx],al
        inc esi
            inc ebx
        jmp new_byte ;проверка следующего бита
end_string:
 
        invoke WriteConsole,stdout,addr vivod, sizeof  vivod, addr  cWrite,0 
        invoke WriteConsole,stdout,addr  buff2 , sizeof buff2, addr  cWrite,0 
        invoke Sleep,4000   
invoke ExitProcess,0  
end start
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.10.2010, 01:01
Помогаю со студенческими работами здесь

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

Между словами в тексте оставить по одному пробелу
Помогите решить задачу: Ввести латинский текст заданной длины. Преобразовать текст по следующему правилу: между словами оставить по...

Оставить в строке по одному пробелу между словами в качестве разделителя
Программа на C++ алгоритм, помогите пожалуйста В строке — русское предложение, слова которого разделены одним или несколькими пробелами....

Программа, задача которой удалить в строке по одному пробелу между словами
я не знаю, что это и не знаю, как это делать, даже идей нет:(( помогите, пожалуйста! заранее спасибо:)

Буквы ю, ъ, ф, э в строке удвоить, а между словами оставить только по одному пробелу
Пользователь заполняет символьную строку русскими буквами. Буквы ю, ъ, ф, э в ней нужно удвоить, а между словами оставить только по одному...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru