|
0 / 0 / 0
Регистрация: 25.11.2019
Сообщений: 3
|
|
TASM Переставить в строке слова, поменяв местами первое слово с последним, второе с предпоследним25.11.2019, 14:44. Показов 9028. Ответов 10
По пути обучения встретился с данным заданием, не могу придумать принцип решения, может у кого возникнут идеи?
Ввести с клавиатуры строку, содержащую несколько слов, разделенных пробелом. Переставить в ней слова, поменяв местами первое слово с последним, второе с предпоследним и т.д. Вывести результаты на экран.
0
|
|
| 25.11.2019, 14:44 | |
|
Ответы с готовыми решениями:
10
Переставить слова, поменяв местами первое слово с последним, второе с предпоследним Переставить символы в строке, поменяв местами первый символ с последним, второй с предпоследним и т.д. Переставить все слова в исходном тексте так, чтобы первое слово стало последним, второе-предпоследним и т.д. |
|
Модератор
|
|
| 25.11.2019, 15:10 | |
|
Принцип, думаю, простой. Без реализации уже встречал его описание.
1. Реверс всей строки - поменять местами все символы. 2. Выделять в строке слова и выполнять реверс каждого слова. Можно и сложнее: 1. Выделять в строке слова 2. Для каждого слова выполнять циклическое вращение подстроки (от начала слова до конца строки) на величину длины слова Можете отработать алгоритм на любом языке программирования. Потом построчно переводить его на ассемблер - там будет почти "строка на языке" - "строка на ассемблере". Объём кода великоват для выполнения его за вас. Образцы выделения слов и пояснения Описание алгоритма (tasm StrLen) Количество слов, содержащих более 3-х символов Программы на его основе (изменено лишь действие после выделения очередного слова: (tasm StrLen) В строке в словах с четным номером изменить порядок букв на обратный (tasm StrLen) Расположить слова в обратном порядке (tasm StrLen) Найти и вывести все симметричные слова (tasm StrLen) Обмен в исходном файле соседних слов местами (tasm StrLen) Удалить слова с повторяющимися буквами (tasm StrLen) Выяснить, есть ли во введённом тексте слова, начинающиеся с буквы "А", и сколько таких слов (tasm StrLen) Определить сколько слов в тексте начинаются и оканчиваются одной и той же буквой (tasm StrLen) Выяснить, есть ли во введённом тексте слова, оканчивающиеся на "f" (tasm StrLen) Определить сколько слов содержат хотя бы одну букву "В" (tasm StrLen) Вывести последнее слово строки (fasm DOS StrLen) Нахождение короткого слова Обменять слова с максимальным и минимальным количеством букв «а» (tasm обмен двух слов через буфер) Добавлено через 6 минут Циклическое вращение подстроки Сортировка слов в строке по ASCII. Программа зацикливается Дана последовательность от 1 до 30 слов. Вывести все слова в алфавитном порядке
1
|
|
|
0 / 0 / 0
Регистрация: 25.11.2019
Сообщений: 3
|
|
| 25.11.2019, 15:11 [ТС] | |
|
Благодарю, сейчас буду работать
0
|
|
|
Модератор
|
|
| 25.11.2019, 15:25 | |
|
Я бы рекомендовал
1. Реверс всей строки - поменять местами все символы. 2. Выделять в строке слова и выполнять реверс каждого слова. Это выглядит наиболее просто. Реверс подстроки можно реализовать процедурой.
0
|
|
|
Модератор
|
||||||
| 27.11.2019, 19:44 | ||||||
Сообщение было отмечено AlbertBor как решение
Решение
Реверс всей строки и последующий реверс каждого слова
1
|
||||||
|
0 / 0 / 0
Регистрация: 25.11.2019
Сообщений: 3
|
|||||||||||
| 05.12.2019, 16:49 [ТС] | |||||||||||
|
Что идёт не так в программе?
Требуется ввести с клавиатуры строку из слов с разделителями, программа должна поменять местами первое и последнее слово, второе с предпоследним и так далее до конца, после чего вывести начальный вариант и результат. Основываясь на методичках и статьях в интернете написал данный код, но вместо строки выводятся непонятные символы, по всей видимости из кеша Вот код, прошу прощения, что без комментариев (позже могу скинуть скрины диаграммы, по которой писал сам код)
Недавно тут же помогли с кодом, но он оказался слишком замороченным и не подошёл, пришлось писать самому Вот тот код, в нем, к тому же, не организован ввод строки с клавиатуры
0
|
|||||||||||
|
Модератор
1245 / 676 / 292
Регистрация: 10.11.2019
Сообщений: 1,406
|
||||||
| 06.12.2019, 11:31 | ||||||
|
Задача
Ввести строку Поменять первое слово с последним, второе с предпоследним и т д Алгоритм. На первый взгляд кажется, что необходимо строку делить на слова, менять слова местами и т д. На самом деле всё проще. Пусть имеется строка one two three Отобразим строку зеркально eerht owt eno Теперь чтобы получить нужный результат надо все слова отразить зеркально: three two one Это можно сделать, занеся символы слова в стек, а затем вытолкнув из стека на печать.
0
|
||||||
|
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
|||||||
| 06.12.2019, 15:48 | |||||||
|
Ещё проще:
0
|
|||||||
|
Модератор
|
||||||||||||
| 06.12.2019, 18:11 | ||||||||||||
|
Если вынести повторения в процедуры, убрать комментарии и пустые строки, метки не выделять отдельными строками, сэкономить на объявлении и инициализации сегмента данных, убрать именованные константы, воспользоваться трюками и сэкономить на одном вызове процедуры Show (экономия 1 строки) - так и мой код превращается в короткий образец:
Не, вот так, чтобы усилить эффект
0
|
||||||||||||
|
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
||||||||
| 08.12.2019, 00:46 | ||||||||
|
Ревесировать реверсированеое, а "навар" от двойного реверсирования в карман положить. ![]()
Посчитайте целесооброзность использования п/п-м и прямого кода.
0
|
||||||||
|
Модератор
|
|
| 08.12.2019, 15:16 | |
|
Всё это лирика.
Как понимаю, топикстартер не может понять алгоритм и, естественно, сдать лабу. Пытался что-то изобразить - но из-за отсутствия представления об алгоритме - ничего не получается - ведь опубликовав наработки, он так и не пояснил, как он решает. AlbertBor, вы должны сделать декомпозицию задачи и решать её по частям. При этом, ускорение отладки будет за счёт отсутствия ввода строки - после получения рабочего кода добавите ввод. В любом случае, нужно научиться выделять слова. Значит учитесь выделять и выводить эти слова в кавычках, чтобы видеть, что выделено слово без дополнительных пробелов. А дальше - всё зависит от выбранного способа решения - алгоритма.
1
|
|
| 08.12.2019, 15:16 | |
|
Помогаю со студенческими работами здесь
11
В строке поменять слова первое с последним,второе с предпоследним и т.д. Что нужно поменять что бы программа меняла местами слова первое с последним второе с предпоследним и т.д? Сформировать строку, «склеив» первое слово с последним, второе с предпоследним и т.д. Дана строка. Поменять Первое слово с последним, второе с предпоследним и т.д Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|