Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2010, 19:41   #1
Lodyr
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 69
По умолчанию Сортировка двух массивов

Доброго времени суток!
Возникла проблема в сортировке двух массивов одновременно.
Поясню, у меня есть два готовых массива
1 массив: 15 5 7 55 = числа с клавиатуры
2 массив: 2 1 1 2 = число простых делителей для соответствующего элемента
Необходимо получить после сортировки (сортировка любая, главное чтобы работала правильно) следующие массивы:
1 массив 5 7 15 55
2 массив 1 1 2 2
Помогите чем можете.
Lodyr вне форума Ответить с цитированием
Старый 17.11.2010, 19:45   #2
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Работает точно правильно:
Код:
#include <cstdlib> // Для С #include <stdlib.h>
qsort(void*, size_t, size_t, int (*pfunct)(const void*, const void*));
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 17.11.2010, 20:30   #3
Lodyr
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 69
По умолчанию

А можно поподробнее?
второй массив я уже отсортировал таким вот кодом:
Код:
 for (int i=n-1; i>0; i--)
 for (int j=0; j<n; j++)
 if (mas2[j]>mas2[j+1];
 {
temp=mas2[j];
swap(mas2[j],mas2[j+1]);
mas2[j+1]=temp;
}
А можно ли дописать этот кусок кода с сортировкой первого массива.
Lodyr вне форума Ответить с цитированием
Старый 17.11.2010, 20:58   #4
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Я что-то не понял, чем у вас там swap занимался; если своей классической ролью, то я бы написал так:
Код:
for(int i=0; i<n-1; i++)
      for(int j=0; j<n-i-1; j++)
            if(mas1[j] > mas1[j+1])
            {
                  swap(mas1[j], mas1[j+1]);
                  swap(mas2[j], mas2[j+1]);
            }
Пузырек, как я понимаю.
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 17.11.2010, 21:06   #5
Lodyr
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 69
По умолчанию

Код:
for (int i=n-1; i>0; i--)
 for (int j=0; j<n; j++)
 if (mas2[j]>mas2[j+1];
 {
//temp2=mas2[j];
swap(mas2[j],mas2[j+1]);
//mas2[j+1]=temp2;
//temp1=mas1[j];
swap(mas1[j],mas1[j+1]);
//mas1[j+1]=temp1;
}
Я это в лекциях вычитал информацию только начинаю осваивать новую среду
Вы правы, достаточно одних свэпов =) но условие нужно не по первому, а по второму массиву создавать

Последний раз редактировалось Lodyr; 17.11.2010 в 21:08.
Lodyr вне форума Ответить с цитированием
Старый 17.11.2010, 21:19   #6
Lodyr
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 69
По умолчанию

Спасибо за предоставленную помощь в сортировке!
Можете предложить следующую идею?
Два массива уже отсортированны.
Для примера получили:
1 массив = 1 5 25 15 45 55 30
2 массив = 1 2 2 3 3 3 4
Требуется найти в массиве 1 максимальное подмножество в котором любые два элемента имеют одинаковое множество простых делителей.
Я думаю нужно так:
Идем по массиву 2 - берем 1 и 2 элемент (1 и 2) => 1<>2 значит берем элементы 2 и 3 (2 и 2) => 2=2 значит из этих двух элементов есть вариант рассматривать это максимальное подмножество
Ищем нод(5, 25) так как соответствуют 2 и 3 элементу массива 1
если нод= какому либо из этих двух чисел = то и их множество простых делителей одинаково
если нод= какому то другому числу то множества разные
берем другую пару и так до конца массива 2
Вопрос = как можно реализовать такой поиск?
Lodyr вне форума Ответить с цитированием
Старый 17.11.2010, 21:23   #7
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Брр...
Цитата:
Требуется найти в массиве 1 максимальное подмножество в котором любые два элемента имеют одинаковое множество простых делителей.
Простых делителей: каких любых или общих (для всех элементов подмножества)?
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."

Последний раз редактировалось Syuf; 17.11.2010 в 21:29.
Syuf вне форума Ответить с цитированием
Старый 17.11.2010, 21:42   #8
Lodyr
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 69
По умолчанию

имеется в виду следующее
mas2[2] = mas2[3] (так как 2=2)
нод(5 и 25) = 5 значит у этих чисел одинаковое множество простых делителей а именно у 5 = 1(если считать однерку) и 5 точно также и у 25 = 1 и 5
но вот
mas2[5]=mas2[6] (так как 3=3)
нод(45 и 55) = 5 а это ни 45 и не 55 = значит множества несовпадают
а именно 45 = это 1 3 и 5, а 55 = это 1 5 и 11
таким образом мне кажется можно и сравнивать два числа на совпадение множеств простых делителей
Lodyr вне форума Ответить с цитированием
Старый 18.11.2010, 19:48   #9
Lodyr
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 69
По умолчанию

есть предложения?
Lodyr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Слияние двух массивов в Delphi sauron99 Помощь студентам 17 03.04.2016 09:37
Славание двух массивов и их сортировка с использование функций! sproject Помощь студентам 7 15.04.2010 12:28
Сортировка двух массивов одновременно antoha73 Общие вопросы Delphi 12 04.01.2010 23:14
Перенести общие елементы двух массивов в другой. leshax Общие вопросы C/C++ 1 04.02.2009 20:57
Выбрать из двух массивов совпадение. *Иван* Microsoft Office Excel 7 22.11.2007 21:10