![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 24.02.2016
Сообщений: 22
|
![]()
Пожалуйста, помогите решить следующую задачу (TASM):
"В тексте определить количество чисел, у которых три одинаковых цифры в числе (например, 36533)". Только начинаю изучать ассемблер, поэтому подскажите в какую сторону копать. Я думаю сделать так: 1) Раз это текст, то пусть числа вводятся с клавиатуры через пробел. И надо сделать цикл по выделению каждого слова (числа), ориентируясь на пробел как на признак конца слова. Чтобы работать с каждым словом, то бишь числом, отдельно. 2) Цикл, где считается количество вхождений каждого символа (то есть цифры) в слово. Если счетчик строго равен трем, то вывести это слово на экран. Проблема в том, что видел задачи, где надо найти кол-во вхождений одного заданного символа. Но не нашел примеров как у меня. Была также мысль преобразовать строку в массив целых чисел. И там уже сравнивать, используя mod и div. Или так делать не стоит? Заранее благодарен! )) |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
![]()
Алгоритм придумал вроде правильный, осталось только реализовать его.
Показывай свои попытки...
Нашедшего выход - затаптывают первым..
|
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
![]()
Как я понял, даже попыток нет...
На FASM'е это дело можно организовать так. Мутновато.., но вроде работает. Для корректного отображения - строку заканчивай пробелом: Код:
Нашедшего выход - затаптывают первым..
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 24.02.2016
Сообщений: 22
|
![]()
Попытки есть ))) Потихоньку решаю, просто показать пока особо нечего. За ваш код большое спасибо!
|
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
![]()
Ясно.., а для спасибо есть "весы"
Нашедшего выход - затаптывают первым..
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 24.02.2016
Сообщений: 22
|
![]()
отзыв добавил ))
R71MT, разъясните, пожалуйста, следующие строки вашего кода: 1) метка stopCopy - строка push si cx - в счетчик-регистр cx мы кладем значение из si, чтобы освободить si для buff, я правильно понимаю? Чтобы затем восстановить обратно: pop cx si но зачем тогда в метке find3 писать mov cx,bx, меняя значение cx на другое? 2) строка string db 80,0,80 dup - первые 80 - это максимальное количество символов. А ноль и вторая цифра "80" для чего? Надо еще вывести количество этих чисел. Можно ли используя регистр bh это сделать? Например, так: в метке start пишу "xor bh,bh" в метке stopFind его увеличиваю на единицу "inc bh" в метке exit вывожу значение: mov ah,9 mov dx, bh / только так нельзя, как-то надо вывести это число на экран int 21h Последний раз редактировалось Zaresh; 28.02.2016 в 20:59. |
![]() |
![]() |
![]() |
#7 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
![]()
1. ..почти так, только:
Код:
Код:
Здесь ещё не использовался BP - можешь его заюзать, ..или стек, или переменную.
Нашедшего выход - затаптывают первым..
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 24.02.2016
Сообщений: 22
|
![]()
К сожалению, не выходит... Внес изменения в код, как я выше писал. Но после ввода строки он выводит абракадабру. Правильно ли, что я увеличиваю регистр bp в процедуре stopFind? И, наверно, вывод значения через dx тоже неправильный?
|
![]() |
![]() |
![]() |
#9 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
![]()
А чё сразу не сказал? Держал вопрос "на засыпку" ?
Нашедшего выход - затаптывают первым..
|
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 24.02.2016
Сообщений: 22
|
![]()
Так в первом сообщении же написал, где задание ). Просто анализировал ваш код и только потом дошло, что мне еще количество надо будет вывести. Решил сам доработать, да не выходит. Помогите, пожалуйста, еще раз ))
Через стек не вышло. мне надо брать значение счетчика в конце программы, а до него надо выводить из стека pop si, cx. То есть, получается, заталкиватьсчетчик туда нельзя |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Pascal ABC. Даны три массивы. Определить общее количество элементов массивов, значение которых лежат в интервале (подпрограмма) | MarsLoveMoon | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 24.04.2014 19:28 |
Сколько n-значных чисел можно образовать из двух цифр 5 и 9, в которых три одинаковые цифры не стоят рядом | Thunder Dragon | Паскаль, Turbo Pascal, PascalABC.NET | 7 | 26.03.2012 20:05 |
определить количество четных чисел и количество нечетных чисел массива, которые вводятся в МЕМО, вывести в поле компонента Edit. | Pyxy | Помощь студентам | 2 | 21.03.2012 23:24 |
Pascal.Определить к-количество трехзначных натуральных чисел,сумма цифр которых n (n=13). | naty7773 | Помощь студентам | 2 | 11.01.2012 16:43 |
Задана последовательность чисел в формате:сначала количество цифр в числе, потом - цифры числа. Подсчитать количество. | Arn1 | Помощь студентам | 4 | 03.10.2011 20:03 |