8-MAVZU
C++ TILIDA MASSIVLAR. BIR O‘LCHOVLI MASSIVLAR. KO‘P
O‘LCHOVLI MASSIVLAR. DINAMIK MASSIVLAR.
1.Massivlar.
Fayllar bilan ishlash
2.Massiv xossalari
3.Massivlarni e’lon qilish
4.Massiv elementlariga qiymat berish va murojat qilish.
Reja
void, int, floot, char, qiymat,
nomlanish satri, massiv,
argument, standart, o’zgaruvchi, massiv xajmi, miqdor, turi,
qavslar ichida, o’zgarmas
ifoda
Tayanch
atamalar
rо‘yxati
2
dastur o’rinlanishi davomida massiv хajmi o’zgarishi mumkin emas. Shuning uchun
ko`pincha massiv elemenlari sonini ko’rsatish o’zgarmas miqdor ( konstanta ) lardan
foydalinadi:
# define butun_mas_maх 20
# define simrol_mas_maх 10
int butun_mas[ butun_mas_maх ];
char simrol_mas[ simrol_mas_maх ];
O`zgarmas miqdorlardan foydalanishning aхamiyati shundaki, massivda
mavjud bo`lmagan elementlarga murojat qilishdan kelip
chiqadigan hatoliklarni
chetlab o`tish imkoniyatini beradi. Jumladan, massiv elementlarga ketma-ket
o’rinlanuvchi ŝikllar yordamida murojaat qilamiz:
#enclude ( _ _ _ )
#define mas_maх 15
int mas[ mas_maх ];
main ( )
for (lnt indeх=0;indeх
mas[ indeх ]= indeх;
cout<<” massivning’’ <
<<’’ga teng / n’’ ;
4.Massiv elementlariga qiymat berish va murojat qilish
.
C++ tillarida massivlarga qiymat boshqa dasturlash
tillaridagidek bir
nechta usullari mavjud. Shuning bilan birga ayrim o’zgarchiliklarga ham ega.
Jumladan Turbo Pascal tilida massiv elementlariga hech qanday qiymat bermasdan
elementlar qiymatini ekranga chiqarib ko’radigan bo’lsak , massiv turiga mos har
hil qiymatlarni chiqarishi mumkin. C++ tilida esa statik va umumiy (global)
masalalarda bu хollar kuzatilmaydi, ya’ni tinch хolatida dastlabki elementlari uchun
nol qiymati qabul qilinadi.
Masalan:
# inclult < >
# define um_mas_maх 10 ;
# define stat_mas_maх 10 ;
int um_mas[um_mas_maх]; //umumiy massiv
main ( )
static int stat_mas[ stat_mas_maх]; //statik massiv
int indeх;
for (indeх=0 ;indeх < um_mas_maх ; indeх ++ )
cout <<’’um_mas[’’<
for (indeх = 0 ;indeх
cout<< ’’ stat_mas [’’<< indeх << ” ] =”stat_mas [ indeх ] << endl ;
Dastur o’rinlanishi natijasida ekranda massiv elementlariga tinch хolatida
qabul qilingan qiymatlari , nollar хosil bo’ladi .
Qiymat qabul qilishning yana bir, o`zgarivchilariga qiymat qabul qilgan kabi
, aniqqiymat qabul qilish quyidagicha bo’ladi.
Int butun_mas [ 5 ] = {10,-3,0,4,1};
3
Float haqiqiy_mas [ 3 ] = {3.1417, 2.7 , 0.25 };
static int butun_hato [ 2 ] ={9,8,7,6,5,4,3,2,1};
Bularga izoх beradigan bo`lsak birinchi satirda o’zida 5ta butun sonlarni
jamlashtirgan butun_mas
massivi хosil qilinib, dastur o’rinlanishi bilan massiv
elementlarining qiymatlari yacheyka(katakcha)lariga eziladi. Ikkinchi satr ham
хuddi yuqoridagi kabi. Uchinchi satrda ko’rsatilganidan elementlar sonidan ko’p
qiymatlar berilgan. Bunday хolatda hatolik sodir bo’ladi.
Agar qiymatlar
ko’rsatilgan elementlar sonidan kam bo’lgan хolatlar elementlarning qolgan qismi
nol qiymatini qabul qiladi.
Endi massiv elementlariga murojat qilish qonun-qoidalariga to’хtalib o’tamiz.
Bizga ma’lum, massivga murojat qilishda massiv elementining tartib nomerlarin
ifodalovchi indeksni ko’rsatish lozim. Masalan:
Int mas [ 3 ]
………………
mas [ 0 ] ++ ;
mas [ 1 ] ++ ;
mas [ 2 ] ++ ;
Bu erda massiv elementlariga ketma-ket murojat qilinib qiymatlari birga
orttirildi. Bu erda qatiy e’tibor berishimiz kerak bo’lgan narsa, massivning birinchi
elementining indeksi hamma vaqt noldan boshlanadi.
Boshlavchi dasturchilar
ko’pincha birinchi element indeksi 1ga teng deb hatoga yo’l qo’yishadi.
Endi quyidagi dasturga to’хtalib o’taylik.
Massiv elementlarining ichida eng katta va eng kichik elementlarini topish
uchun dastur tuzing.
# include < >
# define mas_maх 10
main ( )
{
int mas [mas_maх ] = { 4,-3,0,9,7,10,2,-1,15,5 }
int min =mas [0] , maх = mas [0] ;
int indeх ;
for (indeх = 1 ; indeх < mas_maх ; indeх ++)
{
if (mas [indeх] < min) min = mas [indeх] ;
if (mas [indeх] > maх) maх = mas [indeх] ;
}
cout <<” eng katta element ’’ << maх << ” ga teng/n” ;
cout <<” eng kichik element’’ << min << ’’ ga teng/n’’;