Функциялар



Download 227 Kb.
bet18/18
Sana09.07.2021
Hajmi227 Kb.
#113859
1   ...   10   11   12   13   14   15   16   17   18
Bog'liq
C Funksiyalar

Funktsiya va massivlar.

Massivlar funktsiyani parametri sifatida ishlatilishi xam mumkin, va funktsiya natijasi sifatida massivni kaytarishi mumkin.

Agar massiv parametr orqali funktsiyaga uzatilsa , elementlar sonini aniklash muammosi tug’iladi, chunki S++ tilida massivni uzunlgi ismi bilan aniklanmaydi. Satr bilan ishlaganda masala aniq chunki xar qanday satr “\0” belgisi bilan tugaydi. Chuni xisobga olib satrni uzunligini aniklash mumkin, masalan:

#include

int len(char s[]) //massivni parametr sifatida ishlatish bir usuli

{

int m=0;



while (s[m++]);

return m-1;

}

void main ()



{

char z[]=” Satr uzunligini aniqlash”;

cout <

}

Parametr satr bulmagan xolda yoki fiksirlangan uzunligni ishlatish kerak, yoki massivni o’lchovini parametr sifatida uzatish kerak, yoki global o’zgaruvchi ishlatib unga massivni uzunligini berish kerak.



Misol:

#include

float sum(int n, float *x) // bu ikkinchi usul

{

float s=0; for (int i=0;i

return s;

}

void main()



{

float E[] ={ 1.2,2.0,3.0,4.5,-4.0};

cout << sum(5,E);

}

Massivni ismi ko’rsatkich bo’lgan sababli massiv elementlarini funqtsiyada o’zgartirish mumkin va bu o’zgartirishlar funqtsiyadan chiqqanda saklanib qoladi.



#include

void vect(int n, int *x, int *y) // bu ikkinchi usul

{

for (int i=0;i

y[i]=x[i]>0?1:0;

}

void main()



int a[]=(1,2,-4,3,-5,0,4};

int c[7];

vect(7,a,c);

for(int i=0;i<7;i++) cout <<’\t’<

}

Kuyidagi misol amalda juda ko’p uchraydi. Bu misolda ikki tartiblangan bir o’lchovli massivlar ulanadi natijada tartib bilan joylashgan yangi massiv xosil bo’ladi.



#include

int *massiv_ulash(int ,int * ,int , int *); \\ funktsiya massiv qaytaradi

void 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); \\ funktsiya aniqlash



{

int *x=new int [n+m];

int ia=0,ib=0,ox=0;

while (ia

a[ia]>b[ib]?x[ix++]=b[ib++]: x[ix++]=a[ia++];

while (ib

while (ia

return x;

}

Ko’p o’lchovli massivlar bilan shilash murakkabrok bo’ladi, chunki bunday massivlarni xotirada joylash tartibi murakkab. Masalan parametrda to’gridan tug’ri x[n][n] massivni kuyidagicha yozib bulmaydi:



float sum( int n, float x[][]).

Ko’p o’lchovli massivlarni parametr sifatida ishlatish bir nechta variantlari bor, ularni ko’rib chiqamiz:

1 variant:

Ikkichi o’lchovini aniq konstan ifoda bilan ko’rsatish (son)

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 variant:



Ko’rsatkichlar massivini ishlatib chaqirishda xar bir elementiga mos satr ostini manzilini berish yo’li bilan

float sum( int n, float *p[]).

{

float s=0.0;



for (int i=0;i

for (int j=0;j

s+=p[i][j]; \\ oldiga * ko’yilmaydi chunki murojat massiv sifatida

return s;

}

Void main()



{

float x[ ][4]={{11,-12,13,14},{21,22,23,24},{31,32,33,34},{41,42,43,44}}

float * ptr[];

for (int i=0;i<4;i++)ptr[i]=(float *)&x[i];

cout << sum(4,ptr)<

}

3 variant :



Ko’p o’lchovli dinamik massivlarni ishlatish

float sum( int n, float **x).

{

float s=0.0;



for (int i=0;i

for (int j=0;j

s+=x[i][j]; \\ oldiga * ko’yilmaydi chunki murojat massiv sifatida

return s;

}

void 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

}

cout <

for (int i=0; i

delete [] ptr;

}
Oxirida funktsiya ikki o’lchovli massivni natija sifatida qaytarishiga misol keltiramiz, bu misolda elementlarni qiymatlari tasodifiy sonlarni tashkil qiladi, tasodifiy sonlar math.h kutubxonasidagi random fuktsiya orqali xisoblanadi:

/---------------------------------------------------------------------------


#include

#pragma hdrstop

#include

#include

#include
//---------------------------------------------------------------------------
#pragma argsused

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

s+=ix[i][j];

return s;

}

void 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 <

getch();

for (int i=0;i

delete [] matr;

}

//---------------------------------------------------------------------------

Download 227 Kb.

Do'stlaringiz bilan baham:
1   ...   10   11   12   13   14   15   16   17   18




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