Guruh: 921-22 Topshirdi: Rustamov Umidbek


Download 16.99 Kb.
Sana17.06.2023
Hajmi16.99 Kb.
#1549722
Bog'liq
mustaqil ish-5


Dasturlash2
Mustaqil ish

Guruh:921-22


Topshirdi:Rustamov Umidbek

Mavzu: Xotirani taqsimlash va unga qo’yiladigan talablar


C++ da malloc (), calloc (), free () va realloc () dan foydalanib dinamik xotirani taqsimlash.
C++ strukturalangan til bo'lganligi sababli dasturlash uchun bir qator qat'iy qoidalarga ega. Ulardan biri array(massiv)ning o'lchamlarini o'zgartirishni o'z ichiga oladi. Array bu doimiy xotiraning adreslarida saqlanadigan elementlar to'plamidir.
Ko'rinib turibdiki, yuqorida ko'rsatilgan massivning uzunligi (o'lchami) 9. Ammo bu uzunlikni (o'lchamni) o'zgartirish zarurati bo'lsa nima bo'ladi. Masalan:
Agar ushbu massivga faqat 5 ta elementni kiritish kerak bo'lgan vaziyat mavjud bo'lsa. Bu holda, qolgan 4 ta indeks shunchaki ushbu massivda xotirani ortiqcha egallab turadi. Shunday qilib, massivning uzunligini (o'lchamini) 9 dan 5 gacha kamaytirish talab etiladi.
Boshqa vaziyatni ko'rib chiqamiz. Bunda barcha 9 ta indeks bilan to'ldirilgan 9 ta elementdan iborat massiv mavjud. Ammo bu massivga yana 3 ta elementni kiritish kerak. Bunday holda 3 ta indeks ko'proq talab qilinadi. Shunday qilib, massiv uzunligini (o'lchami) 9 dan 12 gacha o'zgarishi kerak.
Ushbu jarayon C++ da dinamik xotirani taqsimlash deb nomlanadi . Shuning uchun, C++ da dinamik xotirani taqsimlash protsedura sifatida aniqlanishi mumkin, bunda ma'lumotlar strukturasi (Array kabi) ish vaqti davomi(runtime)da o'zgaradi.
C++ da malloc (), calloc (), free () va realloc () dan foydalanib dinamik xotirani taqsimlash.
Ushbu vazifalarni bajarish uchun C++ ba'zi funksiyalarga ega. C++ dasturlashda dinamik xotirani taqsimlash osonlashtirish uchun  sarlavha faylida belgilangan C++ tomonidan taqdim etilgan 4 kutubxona funktsiyalari mavjud . Ular:
malloc()
calloc()
free()
realloc()
C++ malloc () metodi
"malloc" yoki "xotira ajratish" metodi belgilangan hajmga ega bo'lgan bitta katta hajmli xotirani dinamik ravishda ajratish uchun ishlatiladi. U har qanday shakldagi ko'rsatgichga o’tkazilishi mumkin bo'lgan void tipidagi ko'rsatgichni qaytaradi.
Sintaksis: ptr = (cast-type*) malloc(byte-size)
C++ malloc () metod
XULOSA
Hayotda masalalarni yechishda uning algoritmini tuzishdan boshlash maqsadga muvofiq bo’ladi. Masala algoritmni tuzgan shaxs istalgan dasturlashda masalani yechish mumkin bo’ladi, albatta undan shu dasturlash tili sintaksisini bilish kifoya qiladi.
Masalani yechish algoritmni tuzish, so’zlar, matematik formulalar, grafiklar va jadvallar asosida amalga oshirish mumkin.
Algoritmlarni chiziqli, tarmoqlanuvchi va takrorlanuvchi ko’rinishda ifodalash mumkin.

Misol:
#include


#include
using namespace std;
int main() {
int *ptr, n;
cout << "Massiv o'lchamini kiriting: ";
cin >> n;
ptr = (int*) malloc(n * sizeof(int));
if (ptr == NULL) {
cout << "Xotira yig'ilmadi.\n";
exit(0);
}
cout << "Massiv elementlarini kiriting:\n";
for(int i = 0; i < n; i++) {
cin >> *(ptr + i);
}
cout << "Kiritilgan massiv:\n";
for(int i = 0; i < n; i++) {
cout << *(ptr + i) << " ";
}
free(ptr);
return 0;
}
Bu koddagi malloc() funksiyasi, n * sizeof(int) o'lchamli xotira blokini ajratadi. Agar malloc() funksiyasi xotira yig'ilmasa, dastur exit(0) orqali tugatiladi.
Quyidagi kod esa, calloc() funksiyasini ishlatib bir massiv yaratadi:
#include
#include
using namespace std;
int main() {
int *ptr, n;
cout << "Massiv o'lchamini kiriting: ";
cin >> n;
ptr = (int*) calloc(n, sizeof(int));
if (ptr == NULL) {
cout << "Xotira yig'ilmadi.\n";
exit(0);
}
cout << "Massiv elementlarini kiriting:\n";
for(int i = 0; i < n; i++) {
cin >> *(ptr + i);
}
cout << "Kiritilgan massiv:\n";
for(int i = 0; i < n; i++) {
cout << *(ptr + i) << " ";
}
free(ptr);
return 0;
}
Bu koddagi calloc() funksiyasi, n * sizeof(int) o'lchamli xotira blokini nolga teng qiymatlar bilan ajratadi. Qolgan kod esa malloc() koddagi kabi ishlaydi.

Download 16.99 Kb.

Do'stlaringiz bilan baham:




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