Namangan davlat universiteti amaliy matematika kafedrasi


malloc() funksiyasidan farqli ravishda calloc()


Download 0.52 Mb.
bet27/50
Sana15.03.2023
Hajmi0.52 Mb.
#1270223
1   ...   23   24   25   26   27   28   29   30   ...   50
Bog'liq
Amaliy mashg amaliy matematika 1 kurs

malloc() funksiyasidan farqli ravishda calloc() funksiyasi massiv uchun joy ajratishdan tashqari massiv elementlarini 0 qiymati bilan initsializatsiya qiladi. Bu funksiya sintaksisi
void * calloc (size_t num, size_t size) ;
ko’rinishda bo‘lib, num parametri ajratilgan sohada nechta element borligini, size har bir element o‘lchamini bildiradi.
Free() xotirani bo‘shatish funksiyasi o‘chiriladigan xotira bo‘lagiga ko‘rsatkich bo‘lgan yagona parametrga ega bo‘ladi:
void free (void * blok)
free() funksiyasi parametrining void turida bo‘lishi ixtiyoriy turdagi xotira bo‘lagini o‘chirish imkonini beradi.
Quyidagi programmada 10 ta butun sondan iborat dinamik massiv yaratish, unga qiymat berish va o‘chirish amallari bajarilgan.
#include
#include
int main()
{
int * pVector;
if ((pVector=(int*)malloc(10*sizeof(int)))==NULL)
{
cout<<”Xotira yetarli emas!!!”;
return 1;
}
// ajratilgan xotira sohasini to‘ldirish
for(int i=0; i<10; i++) * (pVector+i)=i;
// vektor elementlarini chop etish
for(int i=0; i<10; i++) cout<<*(pVector+i)<<”end1”;
// ajratilgan xotira bo‘lagini qaytarish (o‘chirish)
free (pVector) ;
return 0;
}
Keyingi programmada nxn o‘lchamli haqiqiy sonlar massivining bosh diagonalidan yuqorida joylashgan elementlar yig‘indisini hisoblash masalasi yechilgan.
#include
#include
int main()
{
int n ;
float * pMatr, s=0;
cout<<”A(n,n): n=”;
cin>>n;
if((pMatr=(float*)malloc(n*n*sizeof(float)))==NULL)
{
cout<< Xotira yetarli emas!!!”;
return 1;
}
for(int i=0; i
for(int j=0; j>*(pMatr+i*n+j);
for(int i=0; i
for(int j=i+1; j
cout<<”Matritsa bosh diaonalidan yuqoridagi”;
cout<<”elementlar yig’indisi S=”<
return 0;
}
new operatori yordamida, massivga xotira ajratishda. Obyekt turidan keyin kvadrat qavs ichida obyektlar soni ko‘rsatiladi. Masalan, butun turdagi 10 ta sondan iborat massivga joy ajratish uchun
pVector=new int[10];
ifodasi yozilishi kerak. Bunga qarama-qarshi ravishda, bu usulda ajratilgan xotirani bo‘shatish uchun
delete []pVector;
ko‘rsatmasini berish kerak bo‘ladi.
Ikki o‘lchamli dinamik massivni tashkil qilish uchun
int **a;
ko’rinishidagi «ko‘rsatkichga ko‘rsatkich» ishlatiladi.
Boshda massiv satrlari soniga qarab ko‘rsatkichlar massiviga dinamik xotiradan joy ajratish kerak:
a=new int *[m] // bu yerda m massiv satrlari soni
Keyin, har bir satr uchun takrorlash operatori yordamida xotira ajratish va ularning boshlang‘ich adreslarini a massiv elementlariga joylashtirish zarur bo‘ladi:
for(int i=0; i
Shuni qayd etish kerakki, dinamik massivning har bir satri xotiraning turli joylarida joylashishi mumkin.
Ikki o‘lchamli massivni o‘chirishda oldin massivning har bir elementi (satri), so‘ngra massivning o‘zi yo‘qotiladi:
for (i=0;i
delete [] a [i] ;
delete [] a;
Matritsani vektorga ko‘paytirish masalasi uchun dinamik massivlardan foydalanishga misol:
void main()
{
int n,m;
int I,j; float s;
cout<<”\n n=”;cin>>n; // matritsa satrlari soni
cout<<”\n m=”;cin>>m; // matritsa ustunlari soni
float *b=new float[m];
float *c=new float[n];
// ko‘rsatkichlar massiviga xotira ajratish
float **a=new float *[n];
for(int i=0; i
a[i]=new float[m]; //dinamik xotira ajratish
for(j=0; j>b[j];
for(i=0; i
for(j=0;j>a[i,j];
for(i=0;i
{
for(j=0,s=0; j
c[i]=s;
}
for(i=0; i
delete[]b;
delete[]c;
for(i=0; i
delete[]a;
return;
}

Download 0.52 Mb.

Do'stlaringiz bilan baham:
1   ...   23   24   25   26   27   28   29   30   ...   50




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