PDA

View Full Version : اجتماع دو آرایه



sahar_2010
پنج شنبه 25 فروردین 1390, 10:45 صبح
سلام
اگه یه سری عدد خودمون وارد کنیم و در آرایه a ذخیره بشن و یه سری عدد دیگه که در ارایه b ذخیره بشن حالا میخوایم اجتماع این دو عدد در آرایه c ذخیره بشن.
باید چیکار کرد ؟
مثلا a=1,2,3 و b=3,4,5 در نتیجه c=1,2,3,4,5

tdkhakpur
پنج شنبه 25 فروردین 1390, 12:33 عصر
یه سری عدد خودمون وارد کنیم و در آرایه a ذخیره بشن و یه سری عدد دیگه که در ارایه b ذخیره بشن حالا میخوایم اجتماع این دو عدد در آرایه c ذخیره بشن.
باید چیکار کرد ؟


خب با یک حلقه دو ارایه رو اسکن کنید و در ارایه سوم قرار بدید اما با یک شرط بررسی کنید که ارایه سوم عدد جدید رو دارد یا ندارد اگر نداشت بهش اضافه کنید.

Salar Ashgi
پنج شنبه 25 فروردین 1390, 22:26 عصر
بهترین و بهینه ترین روش استفاده از Vector هاست :


#include <iostream>
#include <conio>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
int a[]={1,2,3};
int b[]={3,4,5};
vector<int> v;
for(int i=0;i<3;i++){
v.push_back(a[i]);
v.push_back(b[i]);}
cout<<"Before Remove Duplicate Items :\n";
for(int i=0;i<v.size();i++)
cout<<v[i]<<endl;
cout<<"======================\n";
//-----------------
sort(v.begin(),v.end());
v.erase(unique(v.begin(), v.end()), v.end());
//-----------------
cout<<"After Remove Duplicate Items :\n";
for(int i=0;i<v.size();i++)
cout<<v[i]<<endl;
getch();
}


68754

موفق باشید ./

quiet_programmer
جمعه 26 فروردین 1390, 11:54 صبح
با سلام.

به نظرم جالب اومد میشه یه توضیح کوچولو بدی که چکار کردی؟

Salar Ashgi
جمعه 26 فروردین 1390, 19:06 عصر
کار خاصی صورت نگرفته ، اولش وکتور رو سورت می کنیم تا داده های تکراری پشت سر هم باشند .
بعد توسط متود erase و unique اینکار انجام می گیره ، اما وظایفشان :

تابع unique : دوتا اشاره گر به شروع و انتهای وکتور رو می گیره و عناصر تکراری متوالی را حذف می کند و خروجی اش
یک Iterator میباشد .

تابع erase : این دو تا اشاره گر شروع و انتها یک زیر لیست رو می گیره و اونو از وکتور حذف میکنه .

برای روشن تر شدن موضوع کد رو با تفصیل می نویسم :

گام اول :


#include <iostream>
#include <conio>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
int a[]={1,2,3};
int b[]={3,4,5};
vector<int> v;
for(int i=0;i<3;i++){
v.push_back(a[i]);
v.push_back(b[i]);}
cout<<"Before Remove Duplicate Items :\n";
for(int i=0;i<v.size();i++)
cout<<v[i]<<endl;
cout<<"======================\n";
//-----------------
sort(v.begin(),v.end());
vector<int>::iterator it;
it = unique(v.begin(), v.end());
cout<<"Iterator Value : "<<*it<<endl;
cout<<"======================\n";
//-----------------
cout<<"After Remove Duplicate Items :\n";
for(int i=0;i<v.size();i++)
cout<<v[i]<<endl;
getch();
}


خروجی :

68780

گام دوم :


#include <iostream>
#include <conio>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
int a[]={1,2,3};
int b[]={3,4,5};
vector<int> v;
for(int i=0;i<3;i++){
v.push_back(a[i]);
v.push_back(b[i]);}
cout<<"Before Remove Duplicate Items :\n";
for(int i=0;i<v.size();i++)
cout<<v[i]<<endl;
cout<<"======================\n";
//-----------------
sort(v.begin(),v.end());
vector<int>::iterator it;
it = unique(v.begin(), v.end());
/*cout<<"Iterator Value : "<<*it<<endl;
cout<<"======================\n";*/
v.erase(it,v.end());
//-----------------
cout<<"After Remove Duplicate Items :\n";
for(int i=0;i<v.size();i++)
cout<<v[i]<<endl;
getch();
}


خروجی :

68781

امیدوارم متوجه موضوع شده باشید .

موفق باشید ./