0 / 0 / 0
Регистрация: 08.10.2010
Сообщений: 25
1

Дан массив из 6 элементов. Подсчитать, сколько раз в нем встречается максимальное по величине число.

31.10.2010, 15:27. Показов 1560. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
вечер добрый.
подскажите пожалуйста, как можно переделать данный код под эту задачу - Дан массив из 6 элементов. Подсчитать, сколько раз в нем встречается максимальное по величине число.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
; #########################################################################
 
      .386
      .model flat, stdcall
      option casemap :none   ; case sensitive
 
; #########################################################################
 
      include c:\masm32\include\windows.inc
      include c:\masm32\include\user32.inc
      include c:\masm32\include\kernel32.inc
 
      includelib c:\masm32\lib\user32.lib
      includelib c:\masm32\lib\kernel32.lib
; #########################################################################
 
.data
    buf db 8 dup(?)
    frmt db "Z= %d",0
    Title1 db "максимальное по величине число встречается %d раз",0
    masA db 5, 9, -2, 9, 4, 7
    len  EQU     $-masA     ; опр. раз-р м-ва
    min db 0
    
.code
start:
        mov  ebx,offset masA    ; поиск наим. полож. эл-т м-ва А
        mov  ecx, len           ; поместим в регистр ECX размер массива в байтах
        mov  AL,0               ; обнуляем
    
    a0:   
          cmp byte ptr [ebx], al        ;проверка ebx на содержание 0
          jl a1                         ;если <0, перех. на а1
          mov al, byte ptr [ebx]        ;заносим в AL первый полож.эл-т
          jmp h                         ;переход на h
          
    a1:     
            inc ebx                 ; увеличиваем адрес (переход к след.эл.массива)
            loop a0                 ; при выходе из цикла в AL наименьший положительный элемент массива А
                  
    h:  
        mov min, al
        cmp al, byte ptr [ebx]      ; цикл со сравнением со старым полож.эл-том и нулем
        jg a2                   
        cmp byte ptr [ebx], 0
        jl a2
        mov min, al
        
    a2: 
        inc ebx                     ;переход к след эл и проверка на конец цикла
        loop h  
        
invoke wsprintf,offset buf,offset frmt,eax
invoke MessageBoxA,0,offset buf,offset Title1,MB_OK
invoke ExitProcess,0
end start
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.10.2010, 15:27
Ответы с готовыми решениями:

Задан массив A из n элементов. Подсчитайте, сколько раз встречается в этом массиве максимальное по величине число
Задан массив A из n элементов. Подсчитайте, сколько раз встречается в этом массиве максимальное по...

Подсчитать, сколько раз встречается в последовательности максимальное по величине число
Дан массив из n целых чисел. Подсчитать, сколько раз встречается в этой последовательности...

Подсчитать, сколько раз встречается в массиве максимальное по величине число
Дан одномерный массив. Подсчитайте, сколько раз встречается в этой таблице максимальное по величине...

Подсчитать сколько раз встречается в векторе максимальное по величине число
Дан целочисленный вектор Аn. Подсчитать сколько раз встречается в этом векторе максимальное по...

4
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
31.10.2010, 15:45 2
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
    ; #########################################################################
    
.386
.model flat, stdcall
option casemap :none   ; case sensitive
    
    ; #########################################################################
    
    include \masm32\include\windows.inc
    include \masm32\include\user32.inc
    include \masm32\include\kernel32.inc
    
    includelib \masm32\lib\user32.lib
    includelib \masm32\lib\kernel32.lib
    ; #########################################################################
    
.data
    buf db 60 dup(?)
    frmt db "максимальное по величине число встречается %d раз",0
    Title1 db "максимальное по величине число встречается раз",0
    masA db 5, 9, -2, 9, 4, 7
    len  EQU         $-masA         ; опр. раз-р м-ва
    min db 0
    
.code
start:
    mov  ebx,offset masA    ; поиск наим. полож. эл-т м-ва А
    mov  ecx, len-1                   ; поместим в регистр ECX размер массива в байтах
    mov  al,[ebx]
a0:
    inc ebx
    cmp al,[ebx]
    jnl a1
    mov al,[ebx]
a1:
    loop a0                                     ; при выходе из цикла в AL наименьший положительный элемент массива А
    
    mov ecx,len
    mov edi,offset masA
    xor ebx,ebx
    
b1:
    repne scasb
    jne b2
    inc ebx
    jmp b1
b2:
    invoke wsprintf,offset buf,offset frmt,ebx
    invoke MessageBoxA,0,offset buf,offset Title1,MB_OK
    invoke ExitProcess,0
end start
1
0 / 0 / 0
Регистрация: 08.10.2010
Сообщений: 25
31.10.2010, 15:51  [ТС] 3
Спасибо огромное, всегда выручаете)
а можно уточнить, что делает эта команда - repne scasb ?
0
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
31.10.2010, 16:15 4
Ищет в массиве первый элемент, который совпадает с al. Его можно заменить на cmp [edi],al в цикле.
0
0 / 0 / 0
Регистрация: 08.10.2010
Сообщений: 25
31.10.2010, 16:27  [ТС] 5
благодарю)
0
31.10.2010, 16:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.10.2010, 16:27
Помогаю со студенческими работами здесь

Подсчитать, сколько раз встречается в последовательности максимальное по величине число
Дан массив из n целых чисел. Подсчитать, сколько раз встречается в этой последовательности...

Дан числовой массив. Определить, сколько раз в нем встречается максимальный по величине элемент.
7.10.1. Помогите, пожалуйста, решить задачу в С++. Дан числовой массив. Определить, сколько...

Подсчитайте, сколько раз в массиве встречается максимальное по величине число
1- Дан одномерный массив. Подсчитайте, сколько раз в этом массиве встречается максимальное по...

Подсчитайте, сколько раз в массиве встречается максимальное по величине число
1-Дан одномерный массив. Подсчитайте, сколько раз в этом массиве встречается максимальное по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru