дан массив чисел, надо вывести минимальное среди всех, и оно должно стоять на нечетной позиции, какой командой выводится минимальное число?
и какой командой определить позицию чисел?
Другие языки программирования и технологии
как вывести на экран из массива чисел минимальное число, стоящие на нечетных позициях?
> какой командой выводится минимальное число?
и какой командой определить позицию чисел?
Вы наверное так шутите. Одной командой в ассемблере не обойтись. (Ещё остаётся вопрос: в каком ассемблере)
.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

и какой командой определить позицию чисел?
Вы наверное так шутите. Одной командой в ассемблере не обойтись. (Ещё остаётся вопрос: в каком ассемблере)
.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 отсеивай, потом минимум находи
Похожие вопросы
- Вычислить и вывести на экран 100 целых чисел их сумму, максимальное
- 1.Заполнить массив случайными числами. Вывести элементы массива на экран. Заменить все его минимальные элементы нулями.
- Помогите с массивами! Найти и вывести на экран сумму нечётных элементов массива и количество отрицательных.
- Дан линейный массив чисел N. N вводит пользователь. Вывести все простые числа массива.
- Дано 4х число. Найти наименьшую нечетную цифру в числовой записи данного числа. Если вводим 0,то выводится 0.Что не так?
- 1. Найти все совершенные числа2. Определить во введенном числе кол-во нечетных чисел и среднее арифметическое четных.
- Программа не работает как надо (С++). Задача: Вывести сумму всех элементов массива, кратных данному числу К.
- Вывести на экран два максимальных элемента всех нечетных строк массива c#
- Написать программу, которая формирует два массива чисел
- Среди двузначных чисел вывести на экран те, сумма цифр которых равна х(0<х<18). Число х вводится с клавиатуры.В паскале!