АГ
Александр Гагарин

как вывести на экран из массива чисел минимальное число, стоящие на нечетных позициях?

дан массив чисел, надо вывести минимальное среди всех, и оно должно стоять на нечетной позиции, какой командой выводится минимальное число?
и какой командой определить позицию чисел?

язык АССЕМБЛЕР

ОС
Ольга Серебряникова

> какой командой выводится минимальное число?
и какой командой определить позицию чисел?
Вы наверное так шутите. Одной командой в ассемблере не обойтись. (Ещё остаётся вопрос: в каком ассемблере)

.686
.model flat,stdcall
option casemap:none

include windows.inc
include kernel32.inc
include msvcrt.inc
includelib kernel32.lib
includelib msvcrt.lib

Random proto

.stack 100h

.data
Msg1 db 'Дан массив A[%i]:',13,10,0
Msg2 db 13,10,10,'Минимальный элемент в нечётной позиции: A[%i] = %0.2f',13,10
db 'Для завершения работы нажмите любую клавишу... ',0
Frmt db '%8.2f',0
Const1 dq 199.98
Const2 dq 99.99

.data?
Seed dd ?
IntBuf dd ?
Len dd ?
Sum dd ?
Array dd ?

.code
N90978173:
rdtsc
mov Seed,eax
finit
fstcw word ptr IntBuf
or word ptr IntBuf,0C00h
fldcw word ptr IntBuf
invoke Random
mov dword ptr IntBuf,91
fimul IntBuf
fistp Len
add dword ptr Len,10
mov eax,Len
shl eax,3
invoke VirtualAlloc,NULL,eax,MEM_COMMIT,PAGE_READWRITE
mov Array,eax
invoke crt_printf,addr Msg1,Len
mov ecx,Len
mov ebx,Array
xor esi,esi
@@:
push ecx
invoke Random
fmul Const1
fsub Const2
fstp qword ptr [ebx+esi*8]
invoke crt_printf,addr Frmt,dword ptr [ebx+esi*8],dword ptr [ebx+esi*8+4]
inc esi
pop ecx
loop @B

xor edi,edi
mov esi,2
mov eax,Len
mov ecx,eax
and eax,1
shr ecx,1
add ecx,eax
dec ecx
FindMin:
fld qword ptr [ebx+edi*8]
fld qword ptr [ebx+esi*8]
fucomip st,st(1)
ffree st
jae @F
mov edi,esi
@@:
add esi,2
loop FindMin

mov eax,edi
inc eax
invoke crt_printf,addr Msg2,eax,dword ptr [ebx+edi*8],dword ptr [ebx+edi*8+4]
invoke crt__getch
invoke VirtualFree,Array,NULL,MEM_RELEASE
invoke ExitProcess,NULL

Random proc uses eax edx
local Const :qword
local Buff :qword
mov eax,3DFh shl 20
mov dword ptr Const+4,eax
xor eax,eax
mov dword ptr Const,eax
mov dword ptr Buff+4,eax
mov eax,Seed
mov edx,08088405h
mul edx
inc eax
mov Seed,eax
mov dword ptr Buff, eax
fild Buff
fld Const
fmul
ret
Random endp

end N90978173

ВТ
Вадим Терещенко

язык какой? запускай счетчик, через if отсеивай, потом минимум находи

Похожие вопросы
C# Как узнать позицию наименьшего числа в массиве?
как вывести последовательные элементы массива, сумма которых минимальна? C++
1) Найти минимальный элемент двумерного массива 10х10 2) Вывести на экран суммы элементов каждой строки массива 10х10
Помогите решить задание С++? Найти минимальное число массива.
C++. Как вывести числа из массива char в файл.?
Ввести целые числа одномерный массив Найти сумму отрицательных чисел и вывести номера элементов этого массива для чисел
как вывести на экран из массива числа,стоящие на нечетных позициях?
Генерируем массив случайных чисел какого-то размера и печатаем только числа, которые находятся на нечетных позициях.
нужно найти минимальный элемент массива и вывести все элементы стоящие до него
Вывести число. Ассемблер. DOS Как вывести число (оно высчитывается) на экран?