Показать сообщение отдельно

  #9  
Старый 04.06.2008, 22:21
desTiny
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме:
3008839

Репутация: 1502


По умолчанию

Так, третья задачка без ввода-вывода (писал в блокноте, идея такая, но могут быть ошибки синтаксиса):
Код:
переменные:
temp dw ?
max dw ?
min dw ?
pos dw ?

код:
//тут читаем temp
mov cx, temp
mov pos, 0
xor di,di; дней со сменой знака
mov dl, 2; температура минусовая - 1, плюсовая - 0, Ноль - 2
xor ax, ax
mov max, temp
mov min, temp

cmp temp, 1
jge sk
cmp temp, 0
jz circle;
mov dl, 1
jmp circle
sk:
inc pos
mov dl, 0
jmp circle

circle:
inc ax
cmp ax, 31; 0..30 - 31 день
jz exit
//тут читаем temp
add cx, temp
cmp temp, min
jge mm
mov min, temp
mm:
cmp temp, max
jle mm1
mov max, temp
mm1:
cmp temp, 1
jl mm2
inc pos
mm2:
cmp temp, 0;
jz circle; ноль нам не интересен

mov dh, dl;запоминаем предыдущий знак

jg sk3
;меньше нуля
mov dl, 0
jmp sk4
sk3:
;больше нуля
mov dl, 1;

sk4:
cmp dh, 2;пока только нули
jz circle

cmp temp, 0;
jg sk2
;меньше нуля
cmp dh, 0; предыдущий +
jnz circle
inc di
sk2:
;больше нуля
cmp dh, 1; предыдущий -
jnz circle
inc di
exit:

;cx-сумма температур
;di - дней со сменой знака
;max - наиб. температура
;min - наим. температура
;pos - температура болше нуля
PS я считал, что "-10, 0, 0, -5" знак температуры не меняется
__________________
Bedankt euch dafür bei euch selbst.

H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
 
Ответить с цитированием