O‘ZBEKISTON RESPUBLIKASI RAQAMLI
TEXNOLOGIYALAR VAZIRLIGI
MUHAMMAD AL–XORAZMIY NOMIDAGI
TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
FARG‘ONA FILIALI
“Kompyuter injineringi” fakulteti 741-22-guruh talabasi
Zokirov Husanjon
“Dasturlash I” fanidan
LOYIHA ISHI
Bajardi:
Zokirov Husanjon
Qabul qildi:
Jo’rayev Mansurbek
Mavzu: Massivlarni tashkil etish.
Reja
1 Kirish:
1 Massivlar haqida
2 Bir o’lchovli massivlar
3 Massivlar ustida ishlash
4 Xulosa
5 Foydalanilgan Adabiyotlar
Massiv
ma’lumotlar
tushunchasi.
Massiv
jamlanmasidir.
bu
Massiv
bir
turli
nomerlangan
indeksli
o’zgaruvchi
tushunchasiga mos keladi. Massiv ta’riflanganda turi, nomi va
indekslar chegarasi ko’rsatiladi. Masalan, type turidagi length ta
elementdan iborat a nomli massiv shunday e’lon qilinadi:
type a[length];
Bu maxsus a[0], a[1], ..., a[length -1] nomlarga ega bo’lgan type
turidagi o’zgaruvchilarning e’lon qilinishiga to’g’ri keladi. Massivning
har bir elementi o’z raqamiga - indeksga ega. Massivning x-nchi
elementiga murojaat indekslash operasiyasi yordamida amalga
oshiriladi:
int x = ...; //butun sonli indeks
TYPE value = a[x]; //x-nchi elementni o‘qish
a[x] = value; //x- elementga yozish
Indeks sifatida butun tur qiymatini qaytaradigan har qanday ifoda
qo’llanishi
mumkin:
char,
short,
int,
long.
C
da
massiv
elementlarining indekslari 0 dan boshlanadi (1 dan emas), length
elementdan iborat bo’lgan massivning oxirgi elementining indeksi
esa - bu length -1 (length emas) ga teng. Massivning int
z[3] shakldagi ta’rifi, int turiga tegishli z[0], z[1], z[2] elementlardan
iborat massivni aniqlaydi. Massiv chegarasidan tashqariga chiqish
(ya’ni mavjud bo’lmagan elementni o’qish/yozishga urinish) das tur
bajarilishida kutilmagan natijalarga olib kelishi mumkin. Shuni
ta’kidlab o’tish lozimki, bu eng ko’p tarqalgan xatolardan biridir. Agar
massiv inisializasiya qilinganda elementlar chegarasi ko’rsatilgan
bo’lsa, ro’yxatdagi elementlar soni bu chegaradan kam bo’lishi
mumkin, lekin ortiq bo’lishi mumkin emas.
Misol uchun:
int a[5] = {2,-2}.
Massivlar haqida C# dasturlash tilida kompyuter xotirasiga bir o’zgaruvchi
yordamida bir nechta qiymatlarda foydalanishga to’g’ri keladi. Bir o’zgaruvchi
bilan bir nechta qiymat ustida amallar bajarish uchun berilgan ma’lumotlar bir
turga mansub bo’lishi kerak. C# dasturlash tilida bir o’zgaruvchi yordamida bir
nechta qiymatlardan foydalanish uchun massiv degan turdan foydalaniladi.
Dasturlash tillarida ro’yxat yoki jadval ko’rinishidagi ma’lumotlarni massiv deb
atashadi. Massiv so’zining ma’nosi o’lcham, o’lchov demakdir. Massivning barcha
elementlari bitta turga mansub bo’lib, ular bitta nom bilan nomlanadi va birbirlaridan nomerlari (indekslari) bilan farq qiladi.
Endi dasturdagi ma’lumot strukturalari bilan tanishishni boshlaymiz. Dasturda ikki
asosiy tur ma’lumot strukturalari mavjuddir. Birinchisi statik, ikkinchisi
dinamikdir. Statik deganimizda xotirada egallagan joyi o’zgarmas, dastur boshida
beriladigan strukturalarni nazarda tutamiz. Statik massivlar elementlar soni
oldindan ma’lum bo’lgan va initsializatsiyalangan (qiymat belgilangan) massivlar
hisoblanadi. Dinamik ma’lumot tiplari dastur davomida o’z hajmini, egallagan
xotirasini o’zgartirishi mumkin. Dinamik massivlar esa elementlari soni oldindan
ma’lum bo’lishi va uni initsializatsiyalash (qiymat belgilash) shart emas. Statik
massivlarning kamchiliki shundaki, agar ularning o’lchamini oldindan juda katta
olinsa-yu, uning ko’p qismi keraksiz qolib ketsa, u holda xotira behuda
sarflanishiga olib keladi. Shu muammoni hal qilish maqsadida massivlar C# tilida
asosan dinamik tarzda e’lon qilinadi. Massivlar dasturlashda eng ko’p
qo’laniladigan ma’lumot tiplaridir. Massivlar hotirada ketma-ket joylashgan, bir
tipdagi o’zgaruvchilar guruhidir. Alohida bir o’zgaruvchini ko’rsatish uchun massiv
nomi va kerakli o’zgaruvchi indeksini yoziladi. Massivlar yagona o’zgaruvchi bilan
kompyuter xotirasiga saqlanadi, uning elementlari ma’lum bir indekslar bilan
tartiblab joylashtiriladi. Massivlar yagona nom bilan bir nechta qiymatni o’zida
mujassamlashtiradi, bularga matematikadagi vektorlarni misol keltirish mumkin.
Vektor ham yagona nom bilan saqlanib uning tarkibida bir nechta qiymatni o’zida
mujassamlashadi. Vektorning ham elementlari bir turga mansub va tartiblangan
bo’ladi. Massiv, dasturlash sohasida koʻp ishlatiladigan bir dasturiy tarkibiy obyekt
(class)dir. Dasturlashda obyektoriyentatsiya paradigmasining asosiy qismidir.
Massivlar, bir nechta oʻxshash maʼlumotlarni bir joyda saqlash imkonini beradi.
Massivlar koʻp elementlardan iborat boʻlib, har bir elementning oʻziga xos indeksi
(indeks raqami) bor. Indeks raqamlari, massivning birinchi elementidan boshlab, 0
dan boshlanadi. Massivdagi elementlarga indeks orqali murojaat qilish mumkin.
Massiv elementlarini oʻqish, yozish va tahrirlash uchun massivning indeksini
aniqlab, shu indeks orqali maʼlumotlar bilan ishlash mumkin.
Massivlar koʻp turdagi maʼlumotlarni saqlash uchun ishlatiladi. Misol uchun,
sonlar, matnlar, obyektlar va boshqa maʼlumot turlari massivlar yordamida
saqlanishi mumkin. Massivlar oʻzgaruvchanlar boʻlib, ularning uzunligi oʻzgartirib
boʻladi.
Dasturlash tillarida massivlar bilan ishlash uchun koʻplik funksiyalarni taqdim etish
mumkin. Bu funksiyalar orqali yangi elementlar qoʻshish, mavjud elementlarni
oʻchirish, elementlarga murojaat qilish va massivning umumiy xususiyatlarini
bajarish mumkin.
Massivlar, dasturlashda ma'lumotlar tuzilishini tashkil etishda keng qo'llaniladigan
asosiy qurilma hisoblanadi. Ularni toʻgʻri va samarali qoʻllash, maʼlumotlarni
toʻplam shaklida saqlash va boshqa qoʻllanmalarni amalga oshirishda juda
qulayroq boʻlishi sababli massivlar dasturlash sohasidagi asosiy qavatlardan biri
hisoblanadi.
Bir o’lchovli massivlar
Odatda massivlar zarurat, katta hajmdagi tartiblangan, lekin chekli elementlarga
oid masalalarni hal etishda yuzaga keladi. Dastur ishlatilishi davomida massivlar
aniq nomga ega bo’lishi va uning elementlari ma’lum bir turda bo’lishi kerak. Bir
o’lchovli massivlar kompyuter xotirasiga quyidagi shaklda saqlanadi
Massiv tarkibida elementlar mavjud bo’ladi. Massivning eng ko’pi bilan ketishi
mumkin bo’lgan elementlar soni uning o’lchamini bildiradi. Massivning elementi
turgan o’rni uning indeksi deyiladi. Massivning elementiga uning indeksi orqali
murojaat qilinadi. Massivning indeksi sifatida butun sonlar xizmat qiladi. Har bir
massiv o’zining individual nomiga ega bo’lishi kerak, ya’ni bir xil nomdagi
massivlar bo’lmaydi. Ularning nomi oldin e’lon qilingan oddiy o’zgaruvchi nomi
bilan ustma-ust tushmasligi kerak
Bir oʻlchamli massiv (ingliz tilida "one-dimensional array" deb ataladi)
dasturlashda yagona toʻplam shaklida saqlanadigan maʼlumotlarni ifodalovchi bir
dasturiy tarkibiy obyekt (class)dir. Bu massiv, ma'lum bir turdagi ma'lumotlarni bir
joyda toʻplab, ularga indeks orqali murojaat qilish imkonini beradi.
Bir oʻlchamli massiv, oʻzgaruvchanlarni saqlash uchun xotirani qoʻllaydi.
Massivning har bir elementi, oʻziga xos indeks raqamiga ega boʻladi. Indeks
raqamlari, massivning boshidan boshlab, 0 dan boshlanadi. Bunda bir elementning
indeks raqami, oʻz indeks orqali murojaat qilinishi mumkin.
Massiv elementlariga murojaat qilish uchun indeks operatori ([ ]) ishlatiladi. Misol
uchun, agar "numbers" nomli bir oʻlchamli massiv bo'lsin va u 3 ta elementdan
iborat bo'lsin: numbers = [10, 20, 30], u holda numbers[0] ifodasi massivning
birinchi elementiga (10 ga) murojaat qilishni anglatadi.
Bir oʻlchamli massivlar oʻzgaruvchanlardan iborat boʻladi va ularga indeks orqali
murojaat qilish, elementlarni oʻqish, yozish, tahrirlash va oʻchirish imkonini
beradi. Bu massivlar, bir qator elementlardan iborat boʻlishi bilan ajralib turadi va
bir nechta ma'lumotlarni birlashtirish uchun qo'llaniladi.
Bir oʻlchamli massivlarda elementlar birorta turdagi ma'lumotlarni saqlaydi.
Masalan, sonlar, matnlar, boolean qiymatlar va boshqa ma'lumot turlari
massivlarda saqlanishi mumkin. Massivlar orqali, bir nechta ma'lumotlarga
oʻtkazish, ma'lumotlarni tartiblash va ma'lumotlarni qidirishda ham foydalanish
mumkin.
Dasturlash tillariga qarab, bir oʻlchamli massivlar bilan ishlash uchun koʻplik
operatsiyalar va funksiyalar mavjud boʻladi, masalan, massivning uzunligini olish,
yangi element qoʻshish, mavjud elementlarni oʻchirish, massivni tartiblash va
boshqalar. Bu funksiyalar oʻzgaruvchanlarni boshqarishning yanada kuchli
usullarini taqdim etadi.
Statik massivlar elementlar oldindan aniqlanadi. Buning uchun sikl
operatorlariga murojaat qilamiz. Masalan, quyidagi misolda dinamik massivga
qiymat berish hamda uning elementlarini chop etish amallar ko’rsatilgan. Biz
massiv elementlari bilan ishlashimiz uchun for sikl operatori kerak buladi. Bu
haqida yetarlicha bilimga ega bo’lmasayiz quyidagi link orqali o’tsangiz Starter
bulimida Suxrob Xayitmurodov yetarlicha malumot bergan. Agar for sikl operatori
haqida malumotga ega bulsayiz davom etamiz.
Bu dasturda A massivning elementlari sifatida i ning qiymatlari kelmoqda. Xuddi
shunday massiv elementlarini klaviatura orqali ham kiritish mumkin. Buning
uchun quyidagi kodni ko’raylik:
Massivlar ustida ishlash Massivlar ustida ishlash dasturlashda juda muhimdir,
chunki massivlar, boshqa ma'lumot tuzilishlaridan farqli ravishda ko'p
elementlarni birlashtirish va birlashtirilgan ma'lumotlarga o'rganilgan
operatsiyalarni amalga oshirish imkonini beradi. Quyidagi amallar massivlar ustida
amalga oshiriladigan asosiy jarayonlardan ba'zilaridir:
1. Massiv yaratish: Massivni yaratish uchun dasturlash tillaridagi sintaksis
yordamida o'zgaruvchan nomi bilan massiv nomi beriladi va undagi elementlar
ko'rsatiladi. Misol uchun, Python tilida massiv yaratish quyidagicha bo'ladi:
numbers = [1, 2, 3, 4, 5].
2. Elementlarga murojaat: Massivning har bir elementiga indeks orqali murojaat
qilish mumkin. Indeks raqamlari massivning boshidan boshlab 0 dan oshadi. Misol
uchun, numbers[0] ifodasi massivning birinchi elementiga (1 ga) murojaat qilishni
anglatadi.
3. Massiv elementlarini o'qish: Massiv elementlarini o'qish uchun indeks orqali
murojaat qilinadi. Misol uchun, yuqoridagi massivning barcha elementlarini o'qish
uchun loop (sikl) yordamida indeks orqali murojaat qilinadi.
4. Massiv elementlarini yozish: Massiv elementlariga qiymat berish uchun indeks
orqali murojaat qilinadi. Misol uchun, numbers[1] = 10 ifodasi massivning ikkinchi
elementiga qiymat (10) berishni anglatadi.
5. Massivning uzunligini olish: Massivning uzunligi, massivdagi elementlar sonini
ifodalaydi. Uning uzunligini olish uchun massivning length(), count() yoki
o'zgaruvchanning .length (yoki .count) xususiyatini ishlatish mumkin.
6. Yangi element qo'shish: Massivga yangi element qo'shish uchun ko'rsatilgan
indeks orqali yangi qiymat beriladi. Misol uchun, numbers.append(6) ifodasi
massivga yangi element (6) qo'shishni anglatadi.
7. Elementlarni o'chirish: Massivdan element o'chirish uchun indeks orqali
murojaat qilinadi yoki .remove() yoki boshqa o'zgaruvchanning .pop() metodidan
foydalaniladi.
8. Massivni tartiblash: Massivni tartiblash uchun .sort() yoki boshqa tartiblash
algoritmlaridan foydalaniladi. Bu tartiblash amaliyoti massivning elementlarini
o'zgartirib, ularni o'z-o'zini o'rniga joylashtiradi.
9. Elementlarni qidirish: Massiv ichidagi elementlarni qidirish uchun .index() yoki
.find() metodlardan foydalaniladi. Bu usul yordamida ma'lum bir qiymatning
massivda qayerda joylashganligi aniqlanadi.
Bu amallar faqat bir nechta massivga tegishli bo'lib, massivlar ustida amalga
oshirilishi mumkin. Massivlar, ma'lumot tuzilishini tashkil etishda keng
qo'llaniladigan asosiy qurilma hisoblanadi va dasturlashda juda muhim bir qavat
hisoblanadi.
Massiv – bu bir toifali ,
chekli qiymatlarning tartiblangan to`plamidir .
Massivlarga misol qilib matematika kursidan ma`lum bo`lgan vektorlar
, matritsalarni ko`rsatish mumkin .
Massivlar odatda bir o`lchovli va ko`p o`lchovli turlarga bo`linadi.
Massiv bir o`lchamli deyiladi, agar uning elementiga bir
indeks orqali murojat qilish mumkin bo`lsa.
C\C++
dasturlash tillaridagi massiv elementlar indekislari har doim noldan bo
shlanadi (birdan emas) . Bizga char tipidagi m nomli massiv berilgan
bo`lsin . Va u 3 ta elementdan tashkil topgan bo`lsin.
m[0] à -9 ;
m[1] à 15;
m[2] à 3;
Demak, elementga murojat qilish uchun massiv nomi va []
qavslar ichida element indeksi yoziladi.
Bu yerda birinchi element qiymati -9 , ikkinchi element – 1 nomerli
indeksda -15 qiymati bor ekan. Oxirgi element indeksi n-1 bo`ladi (nmassiv elementlari soni). []
qavs ichidagi indeks butun son yoki butun songa olib keluvchi ifoda
bo`lmog`i lozim. Masalan:
int n=6, m=4;
L[n-m]=33;
// L[2]=33;
Cout<<m[2];
// ekranda : 3;
Massiv elementlariga murojaat qilish
oddiy o`zgaruvchilarga murojat qilishdan biroz farq qiladi
. Massiv elementiga murojat qilish indeksi orqali bo`ladi.
a[1] = 5; a massivning indeksi 1
bo`lgan elementi 5 qiymat o`zlashtirilsin.
cin>>a[2]; a massivning elementi 2 bo`lgan elementi kiritilsin;
cout<<a[3]; a massivning indeksi 3 bo`lgan elementi ekranga chiqarilsin;
Bir o`lchamli massivlarni e`lon quyidagicha bo`ladi :
[elementlar _soni] = { boshlang`ich qiymatlar };
1)float a[5], 2) int b[6], 3) boll c[7];
1) a elementi haqiqiy sondan iborat bo`lgan , 4 ta elementdan
tashkil topgan massiv. Indekslari esa 0 dan 3 gacha bo`lgan sonlar.
Float a[5]
Massiv
a [0]
a [1]
a [2]
a [3]
a [4]
4
11
-8
12
122
elementlari
qiymati
2) b elementi butun sondan iborat bo`lgan , 6 ta
elementdan tashkil topgan massiv. Indekslari esa 0 dan 5
gacha bo`lgan sonlar.
int a[6]
Massiv
a [0]
a [1]
2
99
a [2]
a [3]
a [4]
a [5]
28
112
54
elementlari
qiymati
5
3) c elementlari mantiqiy qiymatlardan ( true, false ) iborat bo`lgan 7 ta
elementdan tashkil topgan massiv. Indekslari esa 0 dan
6 gacha bo`lgan sonlardir.
Massivni e`lon qilishda uning elementlariga boshlang`ich qiymat
berish mumkin va buning bir necha usuli mavjud.
O`lchami ko`ratilgan massivni to`liq
int k[5] = {2, 15 , -9, 45, 3 , 7};
Bu yerda 5 ta elementdan iborat k massivi e`lon qilingan
va massivning barcha elementlariga boshlang`ich qiymat berilgan.
O`lchami ko`rsatilgan massivni to`liqmas to`liqmas
int k[5] = {2, 15, -9 };
Bu yerda 5 ta elementdan iborat bo`lgan k massivi e`lon qilingan
va dastlabki 3 ta elementlariga boshlang`ich qiymat berilgan.
O`lchami ko`rsatilmagan massivni to`liq
int k[] = {2, 15 , -9, 45, 3 , 7};
Shuni takidlash lozimki , agar massiv o`lchami ko`rsatilmasa , uni to`liq
initsializatsiyalash shart. Bu xolda massiv o`lchami kompilyatsiya
jarayonida massiv elementlar soniga qarab aniqlanadi.
Bu yerda massiv o`lchami 5 ga teng.
O`lchami ko`rsatilgan massivning barcha
elementlariga boshlang`ich
qiymat 0
int k[5] = {0};
Masalan:
1-misol. O`lchami ko`rsatilgan massivning barcha
elementlariga boshlang`ich qiymat 0 berish.
#include
int main ()
{
int k[5]={0}; // massivning barcha elementlariga 0 qiymat berish.
for (int i=0; i<5; i++ )
cout<<"k["<<i<<"]="<<k[i]<<endl;
return 0;
}
Ekranga quyidagicha natija chiqadi:
2-misol. O`lchami ko`rsatilgan massivni to`liq initsializatsiyalash.
#include
int main ()
{
int k[5] = { 2, -9, 112, 3, 8 };
for (int i=4; i>=0; i-- ) // indekslarini teskari tartibda chop etish.
cout<<"k["<<i<<"]="<<k[i]<<endl;
return 0; }
Ekranga quyidagicha natija chiqadi:
3-misol. n o`lchamli butun sonlardan iborat massiv berilgan .
Bu massivning toq elementlarini indekslarini o`sib borish tartibida chop
etish va toq elementlar sonini hisoblash dasturi tuzilsin.
#include
int main ()
{
int k[100];
int i,n,s;
cout<<" sonini kiriting=";
cin>>n;
for ( i=1; i<=n; i++)
cin>>k[i];
s=0;
for (i=1; i<=n; i+=2)
{
cout<<"k["<<i<<"]="<<k[i]<<endl;
s++;
}
cout<<"soni"<<" "<<"->"<<" "<<s<<" "<<"ta"<<endl;
system("pause");
return 0;
}
Ekranga quyidagicha natija chiqadi:
Programmalashda eng ko‘p qo‘llaniladigan programma ob’ektlarining biri bo‘lgan
massivlar bilan tanishib chiqamiz. Massiv - bu bir xil tipli, chekli qiymatlarning
tartiblangan to‘plamidir. Massivlarga misol sifatida matematika kursidan ma’lum
bo‘lgan vektorlar, matritsalar va tenzorlarni ko‘rsatish mumkin. Programmada
ishlatiluvchi barcha massivlarga o‘ziga xos ism berish kerak. Massivning har bir
hadiga murojaat esa uning nomi va o‘rta qavs ichiga olib yozilgan tartib hadi orqali
amalga oshiriladi. Massivning zarur hadiga murojaat quyidagicha amalga
oshiriladi:[]
bu erda massiv hadining joylashgan joyini anglatuvchi tartib qiymati.
Umuman olganda, o‘rnida ifoda qatnashishi ham mumkin. Indeksni ifodalovchi
ifodaning tipini indeks tipi deb ataladi. Indeks tipining qiymatlar to‘plami albatta
nomerlangan to‘plam bo‘lishi, shu bilan bir qatorda massiv hadlari sonini aniqlash
va ularning tartibini belgilashi kerak. Massivlarni e’lon qilishda indeks tipi bilan bir
qatorda massiv hadlarining tipi ham ko‘rsatilishi kerak. Bir o‘lchamli massivni e’lon
qilish quyidagicha amalga oshiriladi: array [] of ;
Ko‘pincha sifatida cheklanma tiplardan foydalaniladi, chunki bu tipga tegishli
to‘plam tartiblangan va qat’iy nomerlangandir. Misol uchun 100 ta haqiqiy sonli
hadlardan iborat massiv quyidagicha e’lon qilinadi: array [1..100] of real;
Massivlarni e’lon qilish haqida to‘liqroq ma’lumot berish uchun turli tipdagi
indekslarga oid misollarni e’tiboringizga havola qilamiz:
array [1000..5000] of integer;
array [-754..-1] of byte;
array [0..100] of real;
array [0..10] of boolean;
array [10..25] of char;
Ko‘p o‘lchamli massivlar
Bir o‘lchamli massivlarning hadlari skalyar miqdorlar bo‘lgan edi. Umumiy holda
esa massiv hadlari o‘z navbatida yana massivlar bo‘lishi mumkin, agar bu
massivlar skalyar miqdorlar bo‘lsa natijada ikki o‘lchamli massivlar hosil bo‘ladi.
Ikki o‘lchamli massivlarga misol sifatida matematika kursidagi matritsalarni
keltirish mumkin. Agar bir o‘lchamli massivning hadlari o‘z navbatida matritsalar
bo‘lsa natijada uch o‘lchovli massivlar hosil qilinadi va h.k. Ikki o‘lchamli massiv
tipini ko‘rsatish quyidagicha bajariladi:
array [] of array [] of ;
Ikki o‘lchamli massiv indekslarining tiplari turli xil ham bo‘lishi mumkin. Bu holni
quyidagi misol ustida ko‘rib chiqaylik:
const n = 24;
type hafkun = (dush, sesh, chor, pay, jum, shan, yaksh);
Ishkun = dush..jum;
detson = array [1..n] of char;
var A: array [boolean] of array [1..n] of char;
B: detson;
S: array [1..365] of detson;
XULOSA
Xulosa o'rnida shuni aytmoqchimanki, hozirgi kunda barcha sohalarda
kompyuter xizmatlari juda katta ro’l o’ynamoqda shu bilan birga dasturlar ham.
Kelajakda bizni texnologiyalarga o’ralgan olam kutmoqda bu kasbni kelajagi
porloq.Bu kichik loyiha ishim orqali kimgadur foydam tekkan bo’lsa men bundan
juda xursandman.
Foydalanilgan adabiyotlar:
1. 1.Qudrat Abduraxmonov (C++ dasturlash asoslari). Toshkent – 2007
Q.Abdurahimov C++ Dasturlash asoslari 2014
2. Ашарина Н.А. Основы программирования на языках Си,С++.
Учебный курс.М.: 2002 г.
INTERNET MANBALARI:
www.cyber-form.ru
www.wikipedia.org
www.programmer.com
www.dastur.uz
www.w3schools.com
www.cplusplus.com.
0
You can add this document to your study collection(s)
Sign in Available only to authorized usersYou can add this document to your saved list
Sign in Available only to authorized users(For complaints, use another form )