1-amaliy mashg’ulot Ma’lumotlarni standart turlari, ularni e’lon qilish va ular ustidagi amallarga doir misollar yechish. Statik turdagi ma’lumotlar tuzilmasi. Ularga oid misollar



Download 0,79 Mb.
bet4/7
Sana15.02.2023
Hajmi0,79 Mb.
#911314
1   2   3   4   5   6   7
Bog'liq
uv6hVzQA74xWUaSviWVO6tgkUqpEPEFunaM0lzL9

Vektorlar. Vektor bu bir xil toifadagi elementlarning tartibli ketma ketligi bo’lib, massivdan farqi uning o’lchami dastur bajarilishi davomida o’zgarishi mumkin,yani vektor bu dinamik massiv hisoblanadi.
Vektorlarni turlicha initsializatsiyalash usullari mavjud:
vector vec0; // bo’sh vektor
const int size = 8;
const int value = 1024;
vector vec1(size);//8 ta elementga ega, elementlar qiymatlari 0 ga teng
vectorvec2(size,value);//8 ta elementga ega, elementlar qiymatlari 1024 ga teng
inta[4] = { 0, 1, 1, 2 };
vector vec3(a,a+4);//4 ta elementga ega, elementlar qiymatlari a massivinikiga teng
vector vec4(vec2);//vec2 ning nusxasi
Vektorlarning massivga nisbatan qulayligi haqida quyidagilarni bayon qilmoqchimiz:

  • Vektorlar bilan ishlash uchun standart kutubxona funksiyalari mavjud bo’lib, ular yordamida turli amallarni siklsiz, bir qator kod yordamida bajarish mumkin. Ulardan ayrimlarini keltirib o’tamiz:

  • test.at(i) - test[i] kabi yozuv bilan bir xil, faqat bunda agar i-element mavjud bo’lmasa, dastur hatolik ko’rsatmaydi;

  • test.asign(n,m)–vektorga n ta elementni m qiymat bilan yozadi;

  • test.asign(start,end)–boshqa vektorning boshi va oxirini ko’rsatuvchi iteratorlar startdan end gacha bo’lgan elementlarni ushbu vektorga kiritadi;

  • test.front()–1-elementga murojaat;

  • test.back() –oxirgi elementga murojaat;

  • test.begin()–vektor 1-elementi iteratori;

  • test.end()–vektor oxiri iteratori(oxirgi elementidan keying adresni ko’rsatadi);

  • test.clear()–vektorni tozalash;

  • test.erase(i)yokitest.erase(start,end)–i-iterator elementini yoki start va end oralig’idagi elementlarni o’chiradi;

  • test.size()–vektordagi elementlar sonini aniqlaydi;

  • test.swap(test2) - test va test2 vektorlar elementlarini almashtiradi;

  • test.insert(a,b) - test vektoriga iterator ko’rsatayotgan a elementdan oldin b elementni kiritadi, bunda iterator kiritilgan elementni ko’rsatadi;

  • test.insert(a,n,b)– b elementdan n ta kiritadi;

  • test.insert(a,start,end) - start va end iteratorlari oralig’idagi elementlarni a dan oldin kiritadi.

  • begin()vaend() iteratorlari mos ravishdaxotirada vektorningbirinchi elementini va oxirgi elementidan keyingiadresni ko’rsatadi.Shu o’rinda iterator nimaligiga aniqlik kiritsak. Iterator bi birorta o’zgaruvchiga ko’rsatkich hisoblanadi. Iterator bizga kerak qiymatlarni qaerdaligini biladi va uning qiymatini bizga chiqarib beradi. Itaratorlar asosan konteynerlar bilan ishlashda qo’llaniladi. Iterator yaratish uchun quyidagini yozish kerak:

iterator_nomi::iterator nomi;
Masalan:vector ::iterator begin=vec.begin();
string::iterator end,cur;
Satrlarhamkonteynerhisoblanadi.Endiiteratorko’rsatayotganelementquyidagichaolinadi.
cout<<*cur<
Bu erda tushunarliki, * belgisi cur iteratorni emas, u ko’rsatayotgan qiymatni ko’rsatadi.
cur++; // keying elementga o’tish
cur+=10; // <=>cur=cur+10 10 ta elementdan keyinga o’tish
Vektor elementlarinni iterator bilan ekranga chiqarishni ko’ramiz:
vector test;
string buffer = "";
//elementlarni kiritilsh
do {
getline(cin, buffer);
if (buffer.size() > 0) test.push_back(buffer);
} while (buffer != "");
vector::iterator cur;
for (cur=test.begin();cur
cout<<*cur<



  • 2ta uzunligi teng bo’lgan vektorni siklsiz solishtirish mumkin. Bunda ularning mos elementlari qiymatlari solishtiriladi. Masalan:



#include
#include
using namespace std;
int main()
{
vector array1(3);
array1[0] = 4;
array1[1] = 2;
array1[2] = 1;
vector array2(3);
array2[0] = 4;
array2[1] = 2;
array2[2] = 1;
// vektorlarni solishtirish
if (array1 == array2) {
cout << "array1 == array2" << endl;
}
return 0;
}

  • Vektor elementlarini siklsiz ekranga chiqarish mumkin:

#include
#include
#include
using namespace std;
int main()
{
vector array1;
array1.insert(array1.end(), 4);
array1.insert(array1.end(), 3);
array1.insert(array1.end(), 1);
copy( array1.begin(), // vektor boshi iteratori
array1.end(), // vektor oxiri iteratori
ostream_iterator(cout," ") //chiqarish potoki iteratori
);
return 0;
}

  • Vectorlar yordamida ikki o’lchovli massivlarni ham yaratish mumkin. Masalan:

#include
#include
using namespace std;
int main ()
{
const int row=10;
const int col=2;
vector> tab(row);
for(int i=0; i
{
tab[i].resize(col);
for(int j=0; j
cout<<'\n';
}
cout<
system("pause");
}

1-misol. Massiv elementlaridan vektor yarating va elementlarini o’sish bo’yicha tartiblang. Bironta elementni qidiring va vektorni invertarizatsiyalang (elementlarini teskari tartibda joylashtirish).


#include
#include
using namespace std;
int main(){
int ia[ 10 ] = {51, 23, 7, 88, 41, 98, 12, 103, 37, 6};
vector< int > vec( ia, ia+10 );//
vector::iterator it = vec.begin(), end_it = vec.end();// vektorning 1- va //oxirgi elementlariga ko’rsatkich
sort( vec.begin(), vec.end() );//vektorni saralash
it = vec.begin();
end_it = vec.end();
// vektorni ekranga chiqarish
for ( ; it != end_it; ++ it ) cout << *it << ' ';// ++it iteratorni keying elementga //surish, *it – bu ko’rsatilayotgan elementni olish
cout << "\n\n";
int search_value;
cout<<"qidirilayotgan elementni kiriting";
cin >> search_value;
vector::iterator found;
found = find( vec.begin(), vec.end(), search_value );//elementni qidirish
if ( found != vec.end() )
cout << "topildi!\n\n";
else cout << "topilmadi!\n\n";
reverse( vec.begin(), vec.end() );//vektor elementlarini teskarisiga joylashtirish
it = vec.begin(); end_it = vec.end();
for ( ; it != end_it; ++ it ) cout << *it << ' ';
cout << endl;
}

2-misol. Vektor va vektorlar ustida amal bajarish dasturi.




#include
#include
using namespace std;
int main()
{
vector q;
q.push_back(10); q.push_back(11); q.push_back(12);
vector v;
for(int i=0; i<5; ++i){
v.push_back(i);
}
// v vektori elementlari 0 1 2 3 4
std::vector::iterator it = v.begin() + 1;
// 2-el.dan oldin 33 ni kiritish:
it = v.insert(it, 33);
// v vektori elementlari 0 33 1 2 3 4
//q vektor elementlarini v vector 2-el.dan oldin kiritish:
v.insert(it, q.begin(), q.end());
// v vektori elementlari 0 10 11 12 33 1 2 3 4
it = v.begin() + 3;
// it v vektorning 4-el.ni ko’rsatyapti
// 4-el.dan oldin 3 marta -1ni kiritamiz:
v.insert(it, 3, -1);
// v vektor el.lari 0 10 11 -1 -1 -1 12 33 1 2 3 4
// v vektorning 5 – el-tini o’chiramiz
it = v.begin() + 4;
v.erase(it);
// v vektor el.lari 0 10 11 -1 -1 12 33 1 2 3 4
v.clear();//v vektorni o’chirish
return 0;
}
3-misol.Satr berilgan, unda vergul vaprobel bilan ajratilgan so’zlardan vektor xosil qiling.
Budasturnituzishdastring::find_first_of funksiyasi juda qulay.


#include
#include
#include
using namespace std;
int main()
{
vector v;
int i; string s;
cout<<"satrni kiriting=";
getline(cin,s);
while((i = s.find_first_of(", ")) != string::npos) {
// satrdagi 1-uchragan ajratgichgacha bo’lsan qism satr
v.push_back(s.substr(0, i));
// qism satrni o’chirish
s = s.substr(i+1);
}
v.push_back(s); // qolgan satrni ham yozib qo’yish
for(int i=0;i
system("pause");
}



Download 0,79 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish