Войти Регистрация

Docx

  • Рефераты
  • Дипломные работы
  • Прочее
    • Презентации
    • Рефераты
    • Курсовые работы
    • Дипломные работы
    • Диссертациии
    • Образовательные программы
    • Инфографика
    • Книги
    • Тесты

Информация о документе

Цена 3000UZS
Размер 557.2KB
Покупки 0
Дата загрузки 11 Май 2025
Расширение pptx
Раздел Презентации
Предмет Информатика и ИТ

Продавец

Bohodir Jalolov

Dinamik obyektlar. Dinamik massivlar

Купить
Dinamik obyektlar. Dinamik massivlar Lokal va global obyektlarning xotiradagi hayot vaqti. C++ dasturlash tilida dasturchi xotiradan foydalanishda bir-biridan farq qiluvchi har xil turdagi obyektlardan foydalanishi mumkin. Masalan, global o’zgaruvchilar dastur ish faoliyatini boshlaganda yaratiladi va dastur ihini yakunlashi bilan xotiradan bo’shatiladi. Lokal o’zgaruvchilar esa, belgilangan dastur kodi blokida yaratiladi va ushbu kod yakunlanishi bilan xotira bo’shatiladi. Undan tashqari lokal o’zgaruvchi statik ko’rishda ham bo’lishi mumkin. 05/11/2025 Lokal va global obyektlarning xotiradagi hayot vaqti.2 Global obyekt Lokal obyekt Lokal (block) obyekt Dinamik obyektlar C++ da local va global obyektlardan tashqari, dinamik obyektlar ham yaratish mumkin. Dinamik obyektlarning hayotiylik davri ularning dastur kodining qaysi blokida yaratilshiga bo’g’liq emas. Dinamik obyektlar xotiraning doimiy emas, balki dinamik sohasida joylashtiriladi (ayrim adabiyotlarda free store deb nomlangan) Dinamik obyektlarni ishlatish uchun new va delete operatorlaridan foydalanish kerak. new operatori dinamik xotiradan joy ajratadi va bu obyektga uning ko’rsatkichini qaytaradi. Delete operatori dinamik obyektga ko’rsatkichni oladi va uni xotiradan o’chiradi. 05/11/2025 Dinamik obyektlar3 Dinamik obyektlar uchun xotira ajratilishi Dinamik obyekni yaratish: int *ptr = new int; Bu yerda new operatori dinamik xotirada int tipidagi yangi obyekt yaratib, uning ko’rsatgichini unga qaytaradi. Obyektning qiymati hozircha aniqlanmagan. Dinamik obyektni yaratish paytida uni initsalizasiya qilish ham mumkin: int *p1 = new int(); // boshlang’ich qiymat- 0 std::cout << &#34;p1: &#34; << *p1 << std::endl; // 0 int *p2 = new int(12); std::cout << &#34;p2: &#34; << *p2 << std::endl; // 12 05/11/2025 Dinamik obyektlar uchun xotira ajratilishi4 Dinamik obyekt uchun ajratilgan xotirani o’cherish(bo’shatish) Dinamik obyektlar xotiradan aniq ko’rsatilgan komanda ishlatilmasa o’chirilmaydi. Dinamik obyektdan foydalanish tugagandan so’ng, ularni xotiradan delete operatori orqalishi o’cherish mumkin: int * p1 = new int (12); cout << &#34;p1: &#34; << *p1 << std::endl; // 12 delete p1; 05/11/2025 Dinamik obyekt uchun ajratilgan xotirani o’cherish(bo’shatish)5 Listing 1.1. Ob&#39;ektni o&#39;chirilgandan keyin ko&#39;rsatgich bo&#39;yicha ishlatish yoki o&#39;chirish // dastur code visual studio 2019 dasturlash muhitida yozilgan #include <iostream> using namespace std; int main() { { int * p1 = new int (12); cout << *p1 << endl; // 12 delete p1; // xatolik yuzaga keladi! cout << *p1 << endl; // p1 ko&#39;rsatkichi o&#39;chirilgan! delete p1; // p1 ko&#39;rsatkichi o&#39;chirilgan! } } 05/11/2025 Listing 1.1.6 xatolik 05/11/2025 Xatolik oynasi7 Listing 1.2. Dinamik obyektlardan qayta foydalanish. #include <iostream> using namespace std; // dastur code visual studio 2019 dasturlash muhitida yozilgan int main() { { int * p1 = new int (12); int * p2 = p1; delete p1; // p1 va p2 o&#39;chirildi p1 = new int (11); // p1 ni yangi obyektga murojat qilyapti cout << *p1 << endl; // 11 delete p1; return 0; } } 05/11/2025 Listing 1.2. Dinamik obyektlardan qayta foydalanish.8 Dinamik massivlar C++ tilidagi individual dinamik ob&#39;ektlardan tashqari biz dinamik massivlardan ham foydalanishimiz mumkin. Dinamik massiv uchun xotirani ajratish uchun new operator ham ishlatiladi, shundan so&#39;ng kvadrat qavs ichida massivda nechta ob&#39;ekt bo&#39;lishi ko&#39;rsatiladi: int * numbers = new int [4]; // 4 ta sondan iborat bo’lgan massiv Keyingi misolda to&#39;rtta int elementli massiv e’lon qilingan, lekin ularning har biri initsalizatsiya qilinmagan. Shuningdek keying satrlarda biz ularni initsalizatsiya qilishimiz ham mumkin: int * n1 = new int [4]; // elimentlari aniqlanmagan int * n2 = new int [4](); // har bir eliment 0 ga teng qilib e’lon qilindi int * n3 = new int [4]{ 1, 2, 3, 4 }; // massiv elimentlari 1, 2, 3, 4 05/11/2025 Dinamik massivlar9 Listing 1.3. Dinamik massiv bilan ishlashDinamik massivni yaratgandan so&#39;ng, biz ko&#39;rsatgich yordamida u bilan ishlashimiz, uning elementlarini olishimiz va o&#39;zgartirishimiz mumkin: // dastur code visual studio 2019 dasturlash muhitida yozilgan #include <iostream> using namespace std; int main() { { int n = 5; // massiv elimentlari soni int * p = new int [n] { 1, 2, 3, 4, 5 }; for ( int * q = p; q != p + n; q++) { cout << *q << &#34;\\t&#34; ; } } } 05/11/2025 Listing 1.3. Dinamik massiv bilan ishlash10 Dinamik massivni o’chirish Dinamik massivni o&#39;chirish va uni xotiradan bo&#39;shatish uchun delete operatorining maxsus shakli qo&#39;llaniladi: delete [] dinamik massivga ko’rsatkich; Listing 1.4. Dinamik massivdan foydalanish va uni xotiradan bo’shatish; #include <iostream> using namespace std; int main() { int n = 5; // massiv o&#39;lchami int * p = new int [n] { 1, 2, 3, 4, 5 }; // massiv 1, 2, 3, 4 elimentlari bilan to&#39;ldirildi for ( int * q = p; q != p + n; q++) { std::cout << *q << &#34;\\t&#34; ; } std::cout << std::endl; delete[] p; return 0; } 05/11/2025 Dinamik massivni o’chirish11 Listing 1.5. Ikki o’lchovli dinamik massivlar bilan ishlash #include <iostream> #include <ctime> #include <iomanip> using namespace std; int main() { srand(time(0)); // tasodifiy sonlarni generatsiya qilinish // ikki o’lchovli dinamik massivni yaratish float ** ptrarray = new float * [2]; // massivda 2 ta ustun for ( int count = 0; count < 2; count++) ptrarray[count] = new float [5]; // va 5 ta ustun // Massivni to’ldirish for ( int count_row = 0; count_row < 2; count_row++) for ( int count_column = 0; count_column < 5; count_column++) ptrarray[count_row][count_column] = (rand() % 10 + 1) / float ((rand() % 10 + 1)); // massivni 1 dan 10 gacha bo’lgan sonlar bilan to’ldirish // massivni chop etish for ( int count_row = 0; count_row < 2; count_row++) { for ( int count_column = 0; count_colu Masala. nxn Kvadrat massivning diagonallardagi raqamlar yig&#39;indisini (alohida - alohida) hisoblang. Kiruvchi ma’lumotlar: n soni mos ravishda nxn massiv va bu sonlar tasodifiy sanlardan to’ldirishingiz ham mumkin. 05/11/202513 Kiruvchi ma’lumotlar Chiquvchi ma’lumotlar 4 411 1327 134 475 30 424 303 151 419 235 248 166 90 42 318 237 184 36 05/11/202514 Kiruvchi ma’lumotlar Chiquvchi ma’lumotlar 4 411 1327 134 475 30 424 303 151 419 235 248 166 90 42 318 237 184 36 134+151+90+36= 411424+419+166+318=1 327 Masalani echish uchun tavsiya: 1. 1-diagonal bo’yicha topish uchun ustun va satr elimentlari indeksi teng bo’lganlarni qo’shib chiqamiz. 2. Biz birinchi ustundan va oxirgi qatordan boshlab va teskari (birinchi qator, oxirgi ustun) tomon harakatlanadigan massivning elementlarini ishlatadigan siklni tashkil etib, qo’shib borishimiz mumkin. 05/11/202515 1-echim. Sonlarni foydalanuvchi kiritadi: #include <iostream> using namespace std; int main() { int n; int m = 0; int c = 0; cin >> n; int ** x = new int * [n]; for ( int i = 0; i < n; i++) x[i] = new int [n]; for ( int i = 0; i < n; i++) { for ( int j = 0; j < n; j++) cin >> x[i][j]; } for ( int i = 0; i < n; i++) { m += x[i][i]; c += x[i][n - 1 - i]; } for ( int i = 0; i < n; i++) delete[] x[i]; delete[] x; cout << m << &#34; &#34; << c; } 05/11/202516 2-usul. nxn massivni avtomatik tarzda tasodifiy sonlar bilan to’ldiramiz: #include <iostream> #include <ctime> #include <iomanip> using namespace std; int main() { int n; int m = 0; int c = 0; cout << &#34;n=&#34; ; cin >> n; srand(time(0)); int ** x = new int * [n]; for ( int i = 0; i < n; i++) x[i] = new int [n]; cout << &#34;Hosil bo&#39;lgan massiv \\n&#34; ; for ( int i = 0; i < n; i++) { for ( int j = 0; j < n; j++) { x[i][j] = srand(10); cout << setw(6) << x[i][j]; } cout << endl; } for ( int i = 0; i < n; i++) { m += x[i][i]; c += x[i][n - 1 - i]; } for ( int i = 0; i < n; i++) delete[] x[i]; delete[] x; cout << &#34;Natija \\n&#34; << m << &#34; &#34; << c; system(&#34;pause&#34;); return 0; } 05/11/202517 Topshiriqlar. 1. Dinamik massivning elementlari yig‘indisini toping. 2. Dinamik massivdagi barcha manfiy elimentlarni ishorasini almashtiring. Dastur yakunida massivni o’zini va bajarilgan amallar sonini ekranda chiqaring. 3. 2 o’lchovli massivni ustunlari va satrlarni sonini foydalanuvchi kiritgan holda, massiv elimentlarni 0 dan 1 gacha bo’lgan haqiqiy sonlar bilan to’ldirib, ekranga chiqaring; 4. Massivdagi barcha toq sonlarning yigindisini juft sonlar yig’indisiga nisbatini toping. 05/11/202518
Купить
  • Похожие документы

  • Operatsion tizimlarda journaling file system
  • I/O scheduling algoritmlari
  • O‘rta Osiyo kutubxonalarining o‘rganilish masalalari
  • Funksiyalar va arrow function
  • Tashkilot xodimlari ma’lumotlarini jamlovchi tizim

Подтвердить покупку

Да Нет

© Copyright 2019-2026.

  • Инструкция по снятию с баланса
  • Контакты
  • Инструкция использования сайта
  • Инструкция загрузки документов
  • O'zbekcha