Автор Тема: Задача на массив  (Прочитано 3615 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Eka

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Задача на массив
« : 09 Декабря 2010, 11:37:11 »
Задан массив, содержащий 25 целых чисел. Опишите на русском языке или на одном из языков программирования алгоритм вычисления произведения отрицательных элементов, расположенных после минимального элемента. помогите пожаалуйсто(

Оффлайн testtest

  • Старожил
  • ****
  • Сообщений: 376
    • Просмотр профиля
Re: Задача на массив
« Ответ #1 : 09 Декабря 2010, 14:37:59 »
по-русски так: найти наименьший элемент, запомнить позицию после него, обнулить переменную с суммой, и потом идти до конца массива, добавляя к этой переменной все отрицательные числа.
по-нашему можно так:
format PE console
entry start

section '' readable executable writeable
a db -62, -91, 49, -54, 53, -114, -2, 79, -127, 65, 94, 21, -58, 39, 60, -63, -109, 16, -64, 96, -63, 40, -5, -124, -7
asize = $-a-1
start:
mov al, byte[a]
mov esi, a + 1
mov edi, esi
xor ecx, ecx
mov cl, asize
@1:
jecxz @0
mov ah, byte[esi]
cmp ah, al
jnl @F
lea edi, dword[esi+1]
mov al, ah
@@:
inc esi
dec ecx
jmp short @1
@0:
mov ecx, esi
sub ecx, edi
xor eax, eax
mov edx, eax
dec eax
@2:
jecxz @3
mov al, byte[edi]
test al, al
jns @F
add edx, eax
@@:
inc edi
dec ecx
jmp short @2
@3:
neg edx
;------ здесь edx = абсолютное значение суммы -----
mov byte[a], 2Dh
mov dword[a+1], 30303030h
mov cx, 10
  mov eax, edx

xor ebx, ebx
mov bl, 4
@@:
xor edx, edx
div ecx
add byte[a+ebx], dl
dec ebx
jnz @B

;--------------------------------------------------
;-------- ниже - всё для вывода на консоль --------
mov eax, [esp]
and eax, 0FFFF0000h
@@:
cmp word[eax], 'MZ'
je @F
sub eax, 10000h
jmp @B
@@:
mov edx, eax
mov ebx, eax
mov esi, eax
mov edi, eax
add eax, dword[eax+3Ch]
add esi, dword[eax+78h]
add esi, 18h
lodsd
mov ecx, eax
lodsd
add edi, eax
lodsd
lea esi, dword[ebx + eax]
@BB:
test ecx, ecx
jz @FF
push dword[esi]
add dword[esp], edx
;-----------------------
call @F
db "WriteFile"
@@:call strcmp
add esp, 4
test eax, eax
jnz @F
mov eax, ebx
add eax, dword[edi]
push 0
push 0
push 5
push a
push 7
call eax
add esp, 4
jmp @FF
@@:
;-----------------------
add esp, 4
add esi, 4
add edi, 4
dec ecx
jmp @BB
@FF:

ret

strcmp:
push esi
push edi
push ecx
mov esi, dword[esp+10h]
mov edi, dword[esp+14h]
or cl, -1
repe cmpsb
movzx eax, byte[edi-1]
pop ecx
pop edi
pop esi
ret

 

Олимпиадная задача "Дипломы"

Автор DrXakep

Ответов: 0
Просмотров: 5921
Последний ответ 30 Декабря 2012, 14:09:40
от DrXakep
Задача паскаль. Составить программу для построения таблицы значений

Автор Rydon

Ответов: 1
Просмотров: 8433
Последний ответ 21 Декабря 2009, 15:49:38
от Rydon
Срочно надо написать курсовую по информатике. Задача на языке VBA.

Автор lana

Ответов: 1
Просмотров: 5816
Последний ответ 12 Сентября 2010, 19:29:18
от InfStudent
Паскаль(задача). Составить программу определения показания часов

Автор Fairmont

Ответов: 0
Просмотров: 6439
Последний ответ 24 Февраля 2011, 21:25:22
от Fairmont
Задача в Turbo С. Написать программу построения одномерного массива

Автор deamond

Ответов: 1
Просмотров: 3765
Последний ответ 21 Декабря 2011, 12:04:34
от Hellko