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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2011, 15:49   #1
нубс++
 
Регистрация: 11.04.2011
Сообщений: 7
По умолчанию Работа с векторами.с++.

надо в один вектор(F) запихать не повторяющиеся элементы из двух других(А) и (В)



int main()
{
setlocale (0,"Rus");
cout<<"Унивёрсум: "<<endl;
vector <int> Uni(16); // Создаём уневёрсум
for (int i=1; i<16; i++)
{
Uni[i]=i;
cout << Uni[i]<<" ";
}
cout <<endl<<"Множество А:"<<endl;

int next1=0;
vector <int> A(7);
srand((unsigned) time(0));
for (int i=1; i<7; i++)
{
next1=abs(rand()%15-1)+1; //Генерируем А
A[i] = Uni[next1];

cout << A[i]<<" ";
}
cout <<endl<<"Множество B: \n";

int next2=0;
vector <int> B(5);
srand((unsigned) time(0));
for (int i=1; i<5; i++)
{
next2=rand()%(15-1)+1; //Генер В
B[i] = Uni[next2];
cout << B[i]<<" ";
}
cout<<endl<<"Объединённый вектор: \n";
vector <int> D,E,F;
int i=1;
for ( ;i<A.size();i++)
D.push_back(A[i]); // В вектор D записываем знач i
int c=1;
for ( ;c<B.size();c++)
E.push_back(B[c]); // В вектор E записываем знач c

if (D[i]==E[c]) F.push_back(D[i]); //если i=с отправить его в F, но не работает почему то..Логическая ошибка акая то
if (D[i]!=E[c]) F.push_back(D[i]); // если не равен, тоже его в вектор F
if (D[i]!=E[c]) F.push_back(E[c]);
//смысл - что бы одинаковых не было из (А) и из (В)
нубс++ вне форума Ответить с цитированием
Старый 08.05.2011, 17:28   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

надо в один вектор(F) запихать не повторяющиеся элементы из двух других(А) и (В)

как-то оно так...

Код:
#include <stdlib.h>

#include <algorithm>
#include <vector>
#include <iterator>

#include <locale>

int main()
{
	setlocale(LC_ALL, "");
	
	typedef std::vector<int> V;
	V A, B;

	std::generate_n(std::back_inserter(A), 10, &rand);
	std::generate_n(std::back_inserter(B), 10, &rand);

	V F = A;
	std::copy(B.begin(), B.end(), std::back_inserter(F));

	std::sort(F.begin(), F.end());
	
	F.erase(
		std::unique(F.begin(), F.end()),
		F.end()
		);

	return 0;
}
Rififi вне форума Ответить с цитированием
Старый 08.05.2011, 19:52   #3
нубс++
 
Регистрация: 11.04.2011
Сообщений: 7
По умолчанию

Спасибо, пашет=)
нубс++ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с векторами prem1era Паскаль, Turbo Pascal, PascalABC.NET 0 23.03.2011 21:38
линейные действия над векторами morgan996 Помощь студентам 4 09.01.2010 00:13
Движение точки с векторами.Pascal. Regboll Паскаль, Turbo Pascal, PascalABC.NET 0 21.05.2009 20:14
работа с векторами и матрицами. помогите пожалуйста решить задачу. владимир/к. Паскаль, Turbo Pascal, PascalABC.NET 1 28.01.2009 10:45