Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Asm]найти не повторяющиеся элементы двух массивов 
V
    Опции темы
Jater
Дата 1.6.2009, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 1.11.2008

Репутация: нет
Всего: 1



Условие задачи:
Даны две последовательности целых чисел по N элементов в каждой. Найти наименьшее среди тех чисел первой последовательности, которые не входят во вторую. 
Помогите пожалуйста с первой частью задачи, точнее как организовать цикл нахождения не повторяющихся элементов!!!
очень нужна помощь! спасибо заранее.
PM MAIL   Вверх
Akina
Дата 1.6.2009, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 17
Всего: 454



Цитата(Jater @  1.6.2009,  18:38 Найти цитируемый пост)
как организовать цикл нахождения не повторяющихся элементов

Если не заморачиваться на скорость - тупо сравнить очередной элемент 1 массива со всеми элементами 2-го.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Jater
Дата 1.6.2009, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 1.11.2008

Репутация: нет
Всего: 1



ну как бы это я понимаю)))
только вопрос немного другой был! 
как код выглядит??

PM MAIL   Вверх
airyashov
Дата 1.6.2009, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 1.7.2008

Репутация: 1
Всего: 6



возможно сначала проще переменить сортировку к последовательностям


--------------------
icq:3(один)7748666
mail:airyashov( а )inbox.ru
PM MAIL   Вверх
Jater
Дата 2.6.2009, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 1.11.2008

Репутация: нет
Всего: 1



Код

#include<iostream>
using namespace std;

int main()
{
    int i,n,d,t=0,k=0;
    short count=1;
    cin>>n;
    int *a,*b,*c;
    a=new int[n];
    b=new int[n];
    for(i=0;i<n;i++)
        cin>>a[i];
    for(i=0;i<n;i++)
        cin>>b[i];
    __asm{
        mov ecx,n
m2:        mov edx,a
        mov eax,[edx]
        mov d,eax
        mov esi,d
        mov ebx,b
m1:        mov eax,[ebx]
        cmp eax,d
        je m3
        add ebx,4
        loop m1
m4:        mov c[edip],esi
        add edi,4
        inc t
        loop m2
m3:        add edx,4
        loop m2
        
    }
    //cout<<"****************"<<d<<endl;
    for(i=0;i<t;i++)
        cout<<c[i]<<endl;
return 0;
}





вот что-то такое написал!!! по моим подсчетам(если все правильно конечно) мой код сейчас должен в массив с выводить как раз те не повторяющиеся элементы
но в строчке mov c[edi],esi ошибка!!! и это немудрено, т.к. больше регистров не знаю...
короче подскажите хоть как мне правильно записывать в массив элементы

PM MAIL   Вверх
Mikl_
Дата 2.6.2009, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: нет
Всего: 14



Цитата(Jater )
в строчке mov c[edi],esi ошибка!!! 

Jaterс в ассемблере служебное слово, замени название переменной с на z и будет работать, только у тебя в  28 строке вообще какая-то аброкадабра 
Код
mov c[edip],esi

PM MAIL   Вверх
Jater
Дата 2.6.2009, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 1.11.2008

Репутация: нет
Всего: 1



Код

#include<iostream>
using namespace std;

int main()
{
    int i,n,d,t=0,k=0;
    short count=1;
    cin>>n;
    int *a=new int[n];
   int  *b=new int[n];
int *z=new int[n];
    for(i=0;i<n;i++)
        cin>>a[i];
    for(i=0;i<n;i++)
        cin>>b[i];
    mov ecx,n
        mov esi,z
        mov edx,a
m2:        mov eax,[edx]
        mov d,eax
        mov y,ecx    
        mov ecx,n
        mov ebx,b
m1:        mov eax,[ebx]
        mov edi,d
        cmp eax,d
        je m3
        add ebx,4
        loop m1
        mov ecx,y
        mov [esi],edi
        add esi,4
        inc t
        add edx,4
        loop m2
m3:        add edx,4
        loop m2
    }    //cout<<"****************"<<d<<endl;
    for(i=0;i<t;i++)
        cout<<z[i]<<endl;
return 0;
}


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


Это сообщение отредактировал(а) Jater - 2.6.2009, 13:26
PM MAIL   Вверх
Jater
Дата 2.6.2009, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 1.11.2008

Репутация: нет
Всего: 1



Код

#include<iostream>
using namespace std;

int main()
{
    int i,n,d,t=0,k=0;
    short count=1;
    cin>>n;
    int y,min;
    int *a=new int[n];
    int *b=new int[n];
    int *z=new int[n];
    for(i=0;i<n;i++)
        cin>>a[i];
    for(i=0;i<n;i++)
        cin>>b[i];
    __asm{
        mov ecx,n
        mov esi,z
        mov edx,a
 m2:    mov eax,[edx]
        mov d,eax    
        mov ebx,b
        mov y,ecx
        mov ecx,n
m1:        mov eax,[ebx]
        mov edi,d
        cmp eax,d
        je m3
        add ebx,4
        loop m1
        mov ecx,y
        mov [esi],edi
        add esi,4
        inc t
 m3:    add edx,4
        mov ecx,y
        loop m2
    }
    cout<<"****************"<<endl;
    for(i=0;i<t;i++)
        cout<<z[i]<<endl;
    __asm{
        xor ebx,ebx
        xor eax,eax
        mov ebx,z
        mov eax,[ebx]
        mov ecx,t
        dec ecx
m8:
        add ebx,4
        cmp eax,[ebx]
        jle m9
        mov eax,[ebx]
        mov min,eax
m9:loop m8
    }
    cout<<"min = "<<min<<endl;
return 0;
}


после 6 часов мучений наконец пришел к такому коду и обнаружил,что не могу наименьшее число массива)))
помогите исправить ошибку пожалуйста 
PM MAIL   Вверх
airyashov
Дата 2.6.2009, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 1.7.2008

Репутация: 1
Всего: 6



муть какая-то хоть комменты пишите, алгоритм не ясен. и что произойдет если не такого числа


--------------------
icq:3(один)7748666
mail:airyashov( а )inbox.ru
PM MAIL   Вверх
Jater
Дата 3.6.2009, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 1.11.2008

Репутация: нет
Всего: 1



что муть???? нормальный алгоритм...во всяком случае это моя вторая прога на этом убогом языке
и вот код готовый и рабочий
Код

#include<iostream>
using namespace std;

int main()
{
    int i,n,d,t=0,k=0;
    short count=1;
    cin>>n;
    int y,min;
    int *a=new int[n];    //создаем 3 массива 
    int *b=new int[n];
    int *z=new int[n];
    for(i=0;i<n;i++)
        cin>>a[i];
    for(i=0;i<n;i++)
        cin>>b[i];
    __asm{
        mov ecx,n
        mov esi,z    // в esi сохраним адрес массива z, в который будем записывать новые элементы
        mov edx,a   //  берем первый элемент первого массива и прогоняем по второму,сравнивая с каждым
 m2:    mov eax,[edx]
        mov d,eax    
        mov ebx,b
        mov y,ecx    // ну может тут бред чуток и лучше было бы стек использовать,но там ошибку какую-то кидает х3
        mov ecx,n
m1:        mov eax,[ebx]
        mov edi,d
        cmp eax,d
        je m3       // если одинаковые находятся то сразу в m3 переходим на след. элемент первого массива
        add ebx,4
        loop m1
        mov ecx,y
        mov [esi],edi       // запись в массив z
        add esi,4
        inc t                  // счетчик для for
 m3:    add edx,4
        mov ecx,y
        loop m2
    }
    cout<<"****************"<<endl;
    for(i=0;i<t;i++)
        cout<<z[i]<<endl;
    __asm{
        xor ebx,ebx
        xor eax,eax             
        xor ecx,ecx
        mov ebx,z                         // а здесь ищу min   в массиве z 
        mov eax,[ebx]
        mov ecx,t
        dec ecx
m8:
        add ebx,4
        cmp eax,[ebx]
        jle m9
        mov eax,[ebx]
m9:loop m8
       mov min,eax
    }
    cout<<"min = "<<min<<endl;
return 0;
}
:


так что не муть!!!! надо просто разобраться сначала,прежде чем .....

все тема закрыта!!!!

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.1263 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.