Консультация № 144808
23.09.2008, 21:28
0.00 руб.
0 3 1
Здравствуйте!
Будьте добры,подскажите как реализовать эту задачу:
Дан массив размера N. Определить количество его промежутков монотонности (то есть участков, на которых его элементы возрастают или убывают).

Заранее спасибо!!!

Обсуждение

давно
Старший Модератор
31795
6196
23.09.2008, 21:58
общий
В ассемблере слова [i] Дан массив размера N [/i] ничего не значат, т.к. важен размер одного элемента массива: байт, слово, двойное слово и т.д.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
24.09.2008, 07:52
общий
Уважаемый профессор!
С уважением отношусь к вашему слову
byte ptr -размер массива
СПАСИБО!
давно
Старший Модератор
31795
6196
26.09.2008, 18:09
общий
это ответ
Здравствуйте, Смирнов Сергей Витальевич!

Программа в приложении.
Удачи!

Приложение:
.186
.model tiny
.code
ORG 100h
;количество элементов
n equ 10
;переходим в 3-ий текстовый режим
start: mov ax,3
int 10h
;готовимся к циклу проверки
mov cx,n-2
mov si,offset mass
cld
;проверяем первый элемент
lodsb
mov bx,1
cmp al,[si]
;если ниже переходим
jl findLoop
;ставим маркер большей монотонности
mov bh,-1
;считываем следующие число
findLoop: lodsb
;проверяем числа
cmp al,[si]
;если они равны, то пропускаем
jz noChange
;если меньше, то п переходим
jl isNize
;проверяем флаг монотонности
or bh,bh
;если не равно 0,то переходим, т.к. монотонность не изменилась
jnz noChange
;меняем направление монотонности
mov bh,-1
jmp short yesChange
;проверяем монотонность
isNize: or bh,bh
jz noChange
xor bh,bh
;увеличиваем счетчик
yesChange: inc bl
noChange: loop findLoop
;выводим число в 10-ой системе
xor ah,ah
mov al,bl
mov bx,10
;получаем остаток от деления на 10
isDiv: xor dx,dx
div bx
;запоминаем его в стеке
push dx
;считаем количество цифр в стеке
inc cx
;продолжаем пока АХ не равно 0
or ax,ax
jnz isDiv
;из стека извлекаем цифры в нужном порядке и выводим из на экран в цикле
isOut: pop ax
or al,30h
int 29h
loop isOut
;ожидаем нажатие любой клавиши
xor ax,ax
int 16h
;выходим в дос
ret
;сам массив
mass db 1,2,5,3,4,6,5,7,3,2
END start
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа