Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/41: Рейтинг темы: голосов - 41, средняя оценка - 4.54
2 / 2 / 0
Регистрация: 18.11.2010
Сообщений: 3

Удалить элементы массива, имеющие одинаковые значения

18.11.2010, 15:54. Показов 8005. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите дописать программу, я составил примерно, но плохо в этом всем понимаю.

Удалить элементы массива А(I) имеющие одинаковые значения. I=1,2,..,10, Определить количество оставшихся элементов.

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
masm
model small
.stack 256
.data
len equ 10
n db 1,2,3,4,5,6,7,8,9,10
.code
start:   
    mov ax, @data        
    mov ds, ax
    mov count, 10
    xor si, di
    jcxz    exit
cikle1:
    xor ax, ax
    cmp n[si], n[di]
    je 
    jmp m
    
cikle2:
    inc si
    cmp si, di
    jne cikle1
    jmp exit
    
m:
    mov di, si
perem:
    mov bh, n[di+1]
    mov n[di], bh
    inc di
    mov cx, di
    inc cl
    cmp cl, count
    jne perem
    dec count
    dec si
    mov dl, count
    mov di, dx
    mov n[di], 0
    jmp cikle2
    
exit:
    mov     ax, 4c00h        
    int     21h     
 
end start
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.11.2010, 15:54
Ответы с готовыми решениями:

Обнулить элементы массива имеющие одинаковые значения
Прошу помощи по задачке на ассемблере. Задача звучит так. Обнулить элементы массива А(I) имеющие одинаковые значения. I=1,2,..,10,...

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

Из массива удалить элементы, имеющие значение меньше среднего арифметического четных элементов массива
Здравствуйте ! Помогите пожалуйста Функции и процедуры Из массива удалить элементы, имеющие значение меньше среднего арифметического...

9
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
19.11.2010, 10:55
stas9In, твоя задача решается в три этапа
1) Поиск повторяющихся элементов. Берем первый элемент массива и последовательно сравниваем его с остальными элементами. Если находим совпадающий, то заменяем его значение на 0FFh. Потом берем второй элемент массива и так до тех пор пока не проверим все элементы, а повторяющиеся значения не заменим на 0FFh
2) Удаление повторяющихся элементов. Все элементы со значением равным 0FFh сдвинем в конец массива. Ищем элемент равный 0FFh, если у элемента справа значение не равно 0FFh, тогда обмениваем их значения, если произошел обмен делаем регистр BX=1 проходим всю строку до последнего элемента. Если был хоть один обмен, тогда возвращаемся в начало массива, если BX=0 значит все элементы стоят на своих местах.
3) Запоминаем в SI адрес начала массива. Ищем первый элемент со значением 0FFh его адрес равен DI-1. количество элементов с неповторяющимися значениями равно DI - SI - 1
Всё! А вот код
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
.286
.model tiny
.code
start:
; ищем повторяющиеся элементы и заменяем их на 0FFh
    mov cx,lenth+1
    mov bx,offset array 
a2: push cx
    mov al,[bx]
    cmp al,0FFh
    je a1
    mov di,bx
    inc di
a0: repne scasb
    jcxz a1
    mov byte ptr [edi-1],0FFh
    loop a0
a1: inc bx
    pop cx
    loop a2
; ищем элемены отличающиеся от 0FFh и сдвигаем их в начало массива
; таким образом происходит удаление из массива повторяющихся элементов
    mov al,0FFh
a5: xor bx,bx
        mov cx,lenth
    mov di,offset array 
a4:     repne scasb
        jcxz a3
    cmp al,[di]
    je a4
    xchg al,[di]
    xchg al,[di-1]
        mov bl,1
        jmp a4
a3: cmp bx,1
    jz a5
; ищем первый элемент с кодом 0FFh, отнимаем от его адреса адрес начала 
;массива, таким образом мы определяем количество оставшихся элементов.
        mov cx,lenth
    mov di,offset array 
    mov si,di
    repne scasb
    sub di,si
    dec di
    ret
array db 1,2,1,1,4,2,7,4,1,10
lenth = $ - array
end start;конец программы
2
2 / 2 / 0
Регистрация: 18.11.2010
Сообщений: 3
20.11.2010, 11:04  [ТС]
Спасибо большое, но у меня при компиляции выдает ошибку
Undefided symbol: EDI
в строчке mov byte ptr [edi-1],0FFh
1
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
22.11.2010, 03:24
stas9In, замени edi на di
2
183 / 121 / 26
Регистрация: 18.05.2015
Сообщений: 509
20.04.2016, 20:10
Mikl___, нашел выход за пределы массива,
посмотри на cx после a0, когда находим элемент
0
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6213 / 2447 / 403
Регистрация: 29.07.2014
Сообщений: 3,178
Записей в блоге: 4
21.04.2016, 07:59
Цитата Сообщение от stas9In Посмотреть сообщение
Удалить элементы массива А(I) имеющие одинаковые значения.
В дополнение к варианту Mikl___, можно отсортировать массив, и удалить одинаковые элементы.
В этом случаем задачка решится в 2 прохода..
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
21.04.2016, 09:38
Цитата Сообщение от tahir_ Посмотреть сообщение
нашел выход за пределы массива
tahir_,
я и не думал, что пост созданный в 2010 году кому-то понадобится...
0
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6213 / 2447 / 403
Регистрация: 29.07.2014
Сообщений: 3,178
Записей в блоге: 4
21.04.2016, 10:28
..и я чтот внимания не обратил. Походу Vikenty все карты спутал..
0
183 / 121 / 26
Регистрация: 18.05.2015
Сообщений: 509
21.04.2016, 11:59
Mikl___, R71MT, ко мне обратился товарищ из соц. сетей, типа у меня есть пример но он не работает, и один в один этот, вспомнил и написал
1
21.04.2016, 13:05

Не по теме:

tahir_,
я рад, что фрагменты моих программ цитируют в соцсетях :good:

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.04.2016, 13:05
Помогаю со студенческими работами здесь

Из массива удалить элементы, имеющие четный индекс
Из массива удалить элементы, имеющие четный индекс и стоящие между максимальным и минимальным элементами. Пример: из массива А: 9 3 4 9 1 0...

Из массива удалить четные элементы, имеющие значение больше среднего арифметического всех элементов массива.
Из массива удалить четные элементы, имеющие значение больше среднего арифметического всех элементов массива. Пример: из массива A: 8 7 2...

Удалить все элементы массива, имеющие наибольшее значение
удалить все элементы, имеющие наибольшее значение.

Из массива удалить элементы, стоящие после максимального и имеющие значение меньше среднего арифметического всех элементов массива
Из массива удалить элементы, стоящие после максимального и имеющие значение меньше среднего арифметического всех элементов массива. ...

Удалить пары соседних элементов, имеющих одинаковые значения, и вывести размер полученного массива и значения
Задан размера массива целых чисел и значения его элементов.Удалить пары соседних элементов, имеющих одинаковые значения, и вывести размер...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru