Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
1 / 1 / 0
Регистрация: 24.03.2009
Сообщений: 24
1

Найти минимальное из чисел, встречающихся в целочисленном массиве ровно два раза

13.07.2009, 20:09. Показов 2370. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Прошу помощи с такой задачей, можно без ввода и вывода

26. Найти минимальное из чисел, встречающихся в целочисленном
массиве X=(x1,x2,...,xn) ровно два раза.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.07.2009, 20:09
Ответы с готовыми решениями:

Найти максимальное из чисел, встречающихся в заданной матрице ровно два раза
Найти максимальное из чисел, встречающихся в заданной двумерной матрице матрице ровно два раза....

Подсчитать сумму элементов массива А(N), встречающихся в массиве B(N) ровно два раза
Составьте программу вычисления суммы элементов одномерного массива А(N), встречающихся в массиве...

Вычисление суммы элементов одномерного массива А, встречающихся в массиве B ровно два раза
Составьте программу вычисления суммы элементов одномерного массива А(N), встречающихся в массиве...

Составьте программу вычисления суммы элементов одномерного массива А(N), встречающихся в массиве B(N) ровно два раза.
Составьте программу вычисления суммы элементов одномерного массива А(N), встречающихся в массиве...

3
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
13.07.2009, 21:52 2
Находишь все числа, встречающиеся два раза.
Среди них находишь минимальное.
Второй массив для этого не нужен.
0
1 / 1 / 0
Регистрация: 24.03.2009
Сообщений: 24
13.07.2009, 22:07  [ТС] 3
Дело в том, что я алгоритм понимаю, даже написал уже на Паскале. Но не могу перевести на ассемблер. Не поможешь, хотя ьы на быструю руку сам код программы.
0
1 / 1 / 0
Регистрация: 24.03.2009
Сообщений: 24
28.07.2009, 08:21  [ТС] 4
Не сочтите за сложность помочь с такой задачей.

Найти минимальное из чисел, встречающихся в целочисленном
массиве X=(x1,x2,...,xn) ровно два раза.

Исходный код предоставлю ниже.

Добавлено через 1 минуту 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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
Sseg segment para stack 'Stack'
db 64 dup(0)
Sseg ends
Dseg segment
n dw 11
x db 8,9,1,4,2,16,1,21,34,13,2
x1 db ?
nx1 dw ?
k10 dw 10
mes1 db 13,10,'Љ®«ЁзҐбвў® Ґ«Ґ¬Ґ*в®ў Њ*ббЁў*  - $',13,10
mes2 db 13,10,'ќ«Ґ¬Ґ*вл Њ*ббЁў* X: $',13,10
mes3 db 13,10,'‚ ¬*ббЁўҐ *Ґв 2-е ¬Ё*Ё¬*«м*ле н««Ґ¬Ґ*в®ў! $',13,10 
mes4 db 13,10,'Њ*ббЁў *Ґ ўўҐ¤с*, Ё«Ё ўўҐ¤с* *ҐЇа*ўЁ«м*®!$',13,10
mes7 db 13,10,' $',13,10 
mes8 db 13,10,'2 ¬Ё*Ё¬*«м*ле н««Ґ¬Ґ*в* - $',13,10   
mes9 db 13,10,'н«Ґ¬Ґ*вл *Ґ **©¤Ґ*л$',13,10   
 
Dseg ends
Cseg segment
assume cs:cseg, ss:sseg, ds:dseg;
Start:
; Ё*ЁжЁ*«Ё§Ёа㥬бп
    push    ds
    sub ax, ax
    push    ax
    mov bx, dseg
    mov ds, bx
; ўў®¤ ¬*ббЁў*
;   call    InputArr
;   test    ax, ax
;   jz  the_end
 
; ўлў®¤ ¬*ббЁў*
    call    OutputArr
 
;------------------------------------------------------------------------------
    mov dh, 0
    mov dl ,255
    xor ax, ax
 
    mov si, -1 
mc:
    inc si 
    mov al, x[si]
    mov di, si
m1:
    cmp al, x[di]
    jne m2
    inc ah
m2:
    cmp ah, 2
    jne m3
    cmp al, dl
    jge m3
    mov dl, al
    mov dh, 1
m3:
    inc di
    mov ah, 0
    cmp si, n
    jl mc
    jge me
me: 
; ®вўҐв ў dl, Ґб«Ё *Ґв в*ЄЁе н«Ґ¬Ґ*в®ў в® ў dh 0, Ё**зҐ 1
;-------------------------------------------------
 
    cmp dh, 0
    jz  not_found
    mov dx, offset mes8
    call    WriteStr
    xor ax, ax
    mov al, dl
    call    WriteInt
    jmp found
not_found:
    mov dx, offset mes9
    call    WriteStr
found:
 
; §*ўҐаиЁвм Їа®Ја*¬¬г
the_end:
    call    ReadChar    ; we are waiting for...
    xor ax, ax
    mov ah, 4Ch
    int 21h
    ret
 
;------------------------------------------------------------------------------
; ўў®¤ ®¤*®Ј® бЁ¬ў®«*
ReadChar proc
    mov ah, 1
    int 21h
    xor ah, ah
    ret
ReadChar endp
 
;----------------------
; ўлў®¤ ¬*ббЁў*
OutputArr proc
    push    ax
    push    si
 
    mov dx, offset mes2
    call    WriteStr
 
    xor ax, ax
    mov si, ax
out_loop:
    mov al, x[si]
    call    WriteInt
    mov al, ' '     ; ўлў®¤Ё¬ Їа®ЎҐ« ¬Ґ¦¤г зЁб«*¬Ё
    call    WriteChar
    inc si
    cmp si, n
    jl  out_loop
    jmp norm_out
norm_out:
    pop si
    pop ax
    ret
OutputArr endp
 
;--------------------------------------------------------
; ўлў®¤ 10-®Ј® зЁб«*
; AX = зЁб«®
WriteInt proc
    push    ax
    push    cx
    push    bx
    push    dx
    xor cx, cx
    mov bx, 10
 
; зЁб«® ®ваЁж*⥫м*®Ґ?  
    cmp al, 0
    jge count_digits    ; *Ґв
 
; ўлўҐбвЁ ¬Ё*гб Ё Ї®¬Ґ*пвм §**Є
    push    ax
    mov dl, '-'
    mov ah, 2
    int 21h
    pop ax
    neg al
 
; Ї®«гзЁвм 10-*лҐ жЁдал Ё Ї®¬ҐбвЁвм Ёе ў б⥪,
; ў cx - Є®«ЁзҐбвў® Ї®«гзҐ**ле жЁда
count_digits:
    xor dx, dx
    idiv    bx
    push    dx
    inc cx
    cmp al, 0
    jg  count_digits
 
; ¤®бв*вм Ё§ б⥪*, ЇҐаҐўҐбвЁ ў Є®¤ ASCII Ё ўлўҐбвЁ
print_loop:
    pop ax
    add al, '0'
 
    call    WriteChar
    loop    print_loop
 
    pop dx
    pop bx
    pop cx
    pop ax
    ret
WriteInt endp
 
;--------------------------------------------------------
; ўлў®¤ ®¤*®Ј® бЁ¬ў®«*
; AX = char
WriteChar proc
    push    ax
    push    dx
    mov dl, al
    mov ah, 2
    int 21h
    pop dx
    pop ax
    ret
WriteChar endp
 
;------------------------------------------------------------------------------
; ўлў®¤ бва®ЄЁ
; DX = offset of string
WriteStr proc
    mov ah, 09h
    int 21h
    ret
WriteStr endp
 
;------------------------------------------------------------------------------
; ўлў®¤ ЇҐаҐ*®б* бва®ЄЁ
WriteCRLF proc
    mov al, 13
    call    WriteChar
    mov al, 10
    call    WriteChar
    ret
WriteCRLF endp
;---------------------------------------------------
cseg ends
end Start
Добавлено через 1 минуту 32 секунды
Дело в том что она не выводит минимальное число. Помогите, пожалуйста, разобраться.

Это и в правду очень важно.
0
28.07.2009, 08:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.07.2009, 08:21
Помогаю со студенческими работами здесь

Дан двумерный массив целых чисел. Вычислить количество четных чисел среди элементов, встречающихся в массиве ровно 3 раза
Кто может, помогите пожалуйста:)

Обменять максимальное и минимальное из чисел, встречающихся в массиве более одного раза
Здравствуйте! Помогите, пожалуйста с программой: Найти максимальное и минимальное из чисел,...

Найти минимальное из чисел, встречающихся в матрице более двух раза
Найти минимальное из чисел, встречающихся в матрице более двух раза.

Удаление из массива всех элементов, встречающихся ровно два раза
Дан целочисленный массив размера N. Удалить из массива все эле-менты, встречающиеся ровно два раза,...

Найти максимум из чисел, встречающихся в массиве более одного раза
Найти максимум из чисел встречающихся в массиве более одного раза Помогите сделать.

Найти максимальное из чисел встречающихся в массиве более одного раза
Найти максимальное из чисел, встречающихся в данном одномерном массиве более одного раза. Вывести...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru