13. struct — tuzilmalar

Oldingi boblarda int, double, string kabi ma'lumot turlarini o‘rgandik.

Masalan, o‘quvchining ma'lumotlarini saqlash uchun:

string ism = "Ali";
int yosh = 18;
double ball = 95.5;

Bu usul ishlaydi.

Lekin bir o‘quvchiga tegishli ma'lumotlar ko‘payib ketsa, ularni bir joyda saqlash qulayroq bo‘ladi.

Buning uchun C++ da struct ishlatiladi.


struct nima?

struct — bir nechta turdagi ma'lumotlarni bitta nom ostida birlashtirish imkonini beradi.

Masalan, o‘quvchi haqida:

ism
yosh
ball

ma'lumotlarini bitta struct ichida saqlashimiz mumkin.


Oddiy struct

Masalan:

struct Talaba {
    string ism;
    int yosh;
    double ball;
};

Bu yerda Talaba nomli yangi ma'lumot turi yaratildi.

Uning ichida:

ism
yosh
ball

bor.


struct dan foydalanish

struct yaratgandan keyin undan o‘zgaruvchi yaratishimiz mumkin.

Talaba talaba1;

Endi talaba1 ichida:

ism
yosh
ball

mavjud.


Qiymat berish

Qiymat berish uchun . belgisidan foydalanamiz.

talaba1.ism = "Ali";
talaba1.yosh = 18;
talaba1.ball = 95.5;

Endi ma'lumotlarni chiqarish mumkin:

cout << talaba1.ism << endl;
cout << talaba1.yosh << endl;
cout << talaba1.ball;

Natija:

Ali
18
95.5

To‘liq misol

#include <iostream>
#include <string>

using namespace std;

struct Talaba {
    string ism;
    int yosh;
    double ball;
};

int main() {
    Talaba talaba1;

    talaba1.ism = "Ali";
    talaba1.yosh = 18;
    talaba1.ball = 95.5;

    cout << "Ism: " << talaba1.ism << endl;
    cout << "Yosh: " << talaba1.yosh << endl;
    cout << "Ball: " << talaba1.ball;

    return 0;
}

Bir nechta struct o‘zgaruvchilari

Bir xil struct dan bir nechta obyekt yaratish mumkin.

Masalan:

Talaba talaba1;
Talaba talaba2;

Keyin:

talaba1.ism = "Ali";
talaba1.yosh = 18;

talaba2.ism = "Vali";
talaba2.yosh = 19;

Endi ikkita talabaning ma'lumotlari alohida saqlanadi.


struct ni boshlang‘ich qiymatlar bilan yaratish

Qiymatlarni darhol berish ham mumkin.

Masalan:

Talaba talaba1 = {"Ali", 18, 95.5};

Bu yerda:

ism  = "Ali"
yosh = 18
ball = 95.5

bo‘ladi.


struct va string

struct ichida turli xil ma'lumot turlaridan foydalanish mumkin.

Masalan:

struct Kitob {
    string nom;
    string muallif;
    int yil;
};

Keyin:

Kitob kitob1;

kitob1.nom = "C++";
kitob1.muallif = "Ali";
kitob1.yil = 2025;

struct va cin

Foydalanuvchidan struct ichidagi ma'lumotlarni ham olish mumkin.

Masalan:

struct Talaba {
    string ism;
    int yosh;
};

Keyin:

Talaba talaba;

cout << "Ism: ";
cin >> talaba.ism;

cout << "Yosh: ";
cin >> talaba.yosh;

cout << talaba.ism << " " << talaba.yosh;

struct va for

Bir nechta struct obyektlarini massivda saqlash mumkin.

Masalan:

Talaba talabalar[3];

Endi uchta talabaning ma'lumotlarini saqlashimiz mumkin.

Masalan:

talabalar[0].ism = "Ali";
talabalar[1].ism = "Vali";
talabalar[2].ism = "Hasan";

Ularni for bilan chiqarish:

for (int i = 0; i < 3; i++) {
    cout << talabalar[i].ism << endl;
}

Natija:

Ali
Vali
Hasan

struct qayerda foydali?

Tasavvur qiling, dasturimizda ko‘plab talabalar bor.

Har bir talabaning:

ism
yosh
ball

ma'lumotlari mavjud.

struct yordamida ularni tartibli saqlashimiz mumkin.

Masalan:

struct Talaba {
    string ism;
    int yosh;
    double ball;
};

Bu dastur kodini tushunarliroq qiladi.


struct va funksiya

struct obyektini funksiyaga berish ham mumkin.

Masalan:

void chiqar(Talaba talaba) {
    cout << talaba.ism << endl;
    cout << talaba.yosh << endl;
    cout << talaba.ball << endl;
}

Keyin:

chiqar(talaba1);

Bu talaba1 ma'lumotlarini chiqaradi.


struct va pointer

Pointerlar bilan struct ham ishlashi mumkin.

Masalan:

Talaba talaba1;

Talaba* ptr = &talaba1;

Pointer orqali ma'lumotga murojaat qilish mumkin.

cout << ptr->ism;

Bu yerda -> belgisi ishlatilmoqda.

Hozircha -> ni chuqur o‘rganish shart emas.

Muhimi, struct va pointer birga ishlashi mumkinligini bilish.


struct va class

C++ da struct va class bir-biriga juda o‘xshash.

Masalan:

struct Talaba {
    string ism;
    int yosh;
};

Keyinchalik:

class Talaba {
    string ism;
    int yosh;
};

kabi yozishni ham o‘rganamiz.

class C++ ning obyektga yo‘naltirilgan dasturlash imkoniyatlarining asosiy qismidir.

Hozircha struct ni ma'lumotlarni bir guruhga birlashtirish vositasi sifatida tushunib oling.


Amaliy mashqlar

1-mashq

Quyidagi ma'lumotlarni saqlaydigan struct yarating:

ism
yosh
shahar

Keyin ularni ekranga chiqaring.


2-mashq

Kitob nomli struct yarating.

Unda:

nom
muallif
yil

bo‘lsin.


3-mashq

Talaba nomli struct yarating.

Unda:

ism
yosh
ball

bo‘lsin.

Foydalanuvchidan ushbu ma'lumotlarni oling.


4-mashq

3 ta Talaba obyektini massivda saqlang.

Keyin ularning ismlarini for yordamida chiqaring.


5-mashq

Mahsulot nomli struct yarating.

Unda:

nom
narx
soni

bo‘lsin.

Mahsulotning umumiy narxini hisoblang.

Masalan:

narx = 10
soni = 5

Natija:

50

Muhim narsalarni eslab qoling

struct bir nechta ma'lumotni bitta guruhga birlashtiradi.

Masalan:

struct Talaba {
    string ism;
    int yosh;
    double ball;
};

struct dan obyekt yaratish:

Talaba talaba1;

Ma'lumotga murojaat qilish:

talaba1.ism
talaba1.yosh
talaba1.ball

struct ichida turli xil ma'lumot turlaridan foydalanish mumkin.

Bir nechta struct obyektlarini massivda saqlash ham mumkin.

struct katta dasturlarda ma'lumotlarni tartibli saqlashga yordam beradi.