int * massiv_ulash(int,int*,int,int*);
int main(){
int c[]={-1,2,5,10},d[]={1,7,8};
int * h;
h=massiv_ulash(5,c,3,d);
for(int i=0;i<8;i++) cout<<’\t’<
delete[]h; }
int * massiv_ulash(int n, int *a,
int m,int *b) {
int * x=new int[n+m];
int ia=0,ib=0,ix=0;
while (ia
a[ia]>b[ib]?x[ix++]=b[ib++]:x[ix++]=a[ia++];
while(ib
while(ia
return x; }
Ko‘p o‘lchamli massivlar bilan ishlash ma’lum bir murakkablikka ega, chunki massivlar xotirada joylash tartibi turli variantda bo‘lishi mumkin. Masalan, funksiya parametrlar ro‘yxatida o‘lchamdagi haqiqiy turdagi x[n][n] massivga mos keluvchi parametrni
float sum(float x[n][n])
ko‘rinishda yozib bo‘lmaydi. Muammo echimi - bu massiv o‘lchamini parametr sifatida uzatish va funksiya sarlavhasini quyidagicha yozish kerak:
float sum(int n,float x[][]);
Ko‘p o‘lchamli massivlarni parametr sifatida ishlatishda bir nechta usullardan foydalanish mumkin.
1-usul. Massivning ikkinchi o‘lchamini o‘zgarmas ifoda (son) bilan ko‘rsatish:
float sum(int n,float x[][10])
{float s=0.0;
for(int i=0;i
for(int j=0;j
s+=x[i][j];
return s;}
2-usul. Ikki o‘lchamli massiv ko‘rsatkichlar massivi ko‘rinishida aniqlangan holatlar uchun ko‘rsatkichlar massivini (matritsa satrlar adreslarini) berish orqali:
float sum(int n,float *p[]){
float s=0.0;
for(int i=0;i
for(int j=0;j
s+=p[i][j];\\”*p[i][j]” emas,chunki massivga murojat
return s; }
int main() {
float x[][4]={{11,-12,13,14},{21,22,23,24},
{31,32,33,34},{41,42,43,44}};
float *ptr[4];
for(int i=0;i<4;i++) ptr[i]=(float *)&x[i];
cout<
3-usul. Ko‘rsatkichlarga ko‘rsatkich ko‘rinishida aniqlangan dinamik massivlarni ishlatish bilan:
float sum(int n,float **x) {
float s=0.0;
for(int i=0;i
}
int main(){
float **ptr;
int n;
cin>>n;
ptr=new float *[n];
for(int i=0;i
ptr[i]=new float [n];
for(int j=0;j
ptr[i][j]=(float)((i+1)*10+j);
}
cout<
for(int i=0; i
delete[]ptr;
}
Navbatdagi dasturda funksiya tomonidan natija sifatida ikki o‘lchamli massivni qaytarishiga misol keltirilgan. Massiv elementlarning qiymatlari tasodifiy sonlardan tashkil topadi. Tasoddifiy sonlar «math.h» kutubxonasidagi random() funksiya yordamida hosil qilinadi:
#include
#include
int **rmatr(int n,int m){
int ** ptr;
ptr=new int *[n];
for(int i=0;i
ptr[i]=new int[m];
for(int j=0;j
return ptr;}
int sum(int n,int m,int **ix){
float s=0;
for(int i=0;i
for(int j=0;j
return s; }
int main(){
int n,m;
cin>>n>>m;
int **matr;
randomize();
matr=rmatr(n,m);
for(int i=0;i
cout<
for (int j=0;j
}
cout<
for(int i=0;i
delete[]matr; }
Nazorat savollari
C++da massiv qanday ishlaydi?
Massivga kutubxona kerakmi?
Rekursiv funksiya nima?
Massiv elementlarini bilan massiv indexlarini farqi nimada?
for operatori funksiyada qanday ishlatiladi?
Matematik funksiyalar qanday ishlaydi?
Massiv elementlarini Funksiya parametrlarida uzatish nima uchun ishlatiladi?
Massivlarni qanday turlari mavjud?
Funksiya parametrlari orqali nima uzatiladi?
Massivning necha xil turi bor?
Do'stlaringiz bilan baham: |