Консультация № 144414
19.09.2008, 18:28
0.00 руб.
0 2 1
Здравствуйте, уважаемые специалисты!
Помогите выполнить задание:
Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нем положительные и отрицательные числа. Если чередуются, то вывести 0, если нет, то вывести номер первого элемента, нарушающего закономерность.

Обсуждение

Неизвестный
19.09.2008, 22:18
общий
Как заполняется массив и как задается N? С клавиатуры или нет? Если нет, то как взять N?
Неизвестный
23.09.2008, 22:39
общий
это ответ
Здравствуйте, Смирнов Сергей Витальевич!
Что-то Вы не отвечаете... не уточняете
По этой причине пишу простейший вариант:
1) массив байт
2) проверяю одинаковость знаков с помощью знакового умножения IMUL

Ежели что не понятно, спрашивайте в минифоруме

Приложение:
.model tiny
.code
org 100h
start:
mov ax, 3
int 10h

lea si, a
xor bh, bh ; флаг знака произведения
mov cx,N
mov dx, 1 ; Место
dec cx
@@next:
mov al, [si]
mov bl, [si+1]
imul bl
or ax, ax
jns @@wrong
inc si
inc dx
loop @@next
jmp @@out
@@wrong:
inc bh
@@out:
xor ax, ax
or bh, bh
jz @@3
mov ax, dx
@@3:
CALL writeDEC

lea dx, PressKey
mov ah,9
int 21h

xor ax, ax
int 16h

int 20h

a db -1,3,-2,-3,-5,1,-9
N equ $ - a

writeDEC proc
; Ожидает слово в AX
push ax
push bx
push cx
push dx
xor cx, cx
mov bx, 10
@@1:
xor dx, dx
div bx
push dx
inc cx
or ax, ax
jnz @@1

@@2:
pop ax
add al, '0'
int 29h
loop @@2

pop dx
pop cx
pop bx
pop ax
ret
writeDEC endp

PressKey db 13,10,'Press any key ...$'
end start
Форма ответа