logo

Psixolingvistikada matn va diskurs tushunchalarining lingvopragmatik xususiyatlari

Загружено в:

08.08.2023

Скачано:

0

Размер:

406.138671875 KB
MAVZU:   Sinfning virtual metodlari va Ularni ishlatish
mexanizmlari. Abstrakt sinflar, ularning mo’ljallanishi va
xususiyatlari
REJA :
1) Sinfning virtual metodlari   haqida umumiy tushuncha.
2) Abstrakt sinflarga  doir masalalar yechish.
3) Berilgan masalaning dasturiy qismi.
4) Xulosa. MAVZU :     Sinfning virtual metodlari va Ularni ishlatish
mexanizmlari. Abstrakt sinflar, ularning mo’ljallanishi va
xususiyatlari
                 Voris olish  va protected spetsifikatori. Oldingi darslarda biz C++ tilida
meros qanday ishlashi haqida gapirgan edik. Barcha misollarimizda biz ochiq
merosdan   foydalandik.   Ushbu   darsda   biz   merosning   ushbu   turini,
shuningdek,   ikkita   boshqa   turni   ko'rib   chiqamiz:   private   va   protected.
Shuningdek,   ushbu   meros   turlari   a'zolarga   kirishga   ruxsat   berish   yoki
cheklash   uchun   kirish   spesifikacilari   bilan   qanday   o'zaro   bog'lanishi   haqida
gaplashamiz. protected kirish spetsifikatori. Biz allaqachon sinf a'zolariga kim
kirishi mumkinligini belgilaydigan private va public kirish spetsifikatorlarini
ko'rib   chiqdik.   Eslatib   o tamiz,   public   a zolari   hamma   uchun   ochiq,   privateʻ ʼ
a zolarga   faqat   private   a zo   bilan   bir   xil   sinf   a zolari   kirishlari   mumkin.   Bu	
ʼ ʼ ʼ
shuni   anglatadiki,   avlod   sinflari   ajdod   sinfining   shaxsiy   a'zolariga   bevosita
kira olmaydi!  
class Parent { private:     int m_private;  public:     int m_public;  };  
Izoh: public = “ochiq”, private = “xususiy”, protected = “himoyalangan”  
            C   ++   da   biz   hali   gapirmagan   uchinchi   kirish   spetsifikatsiyasi   mavjud,
chunki   u   faqat   meros   kontekstida   foydalidir.   protected   kirish   spetsifikatori
sinf   a'zolariga   do'stona   va   avlod   sinflariga   kirish   imkonini   beradi.   Sinf
tanasidan   tashqarida   protected   a'zoga   kirish   yopiq .   Agar   siz   meros   turini
o'zingiz   belgilamagan   bo'lsangiz,   C++   da   standart   meros   turi   private   bo'ladi
(xuddi shunday sinf a'zolari uchun, agar boshqacha ko'rsatilmagan bo'lsa). Bu
bizga 9 ta kombinatsiyani beradi: 3 ta kirish spetsifikatsiyasi (public, private
va protected) va 3 ta meros turi (public, private va protected). Xo'sh, ikkalasi
o'rtasidagi   farq   nima?   Muxtasar   qilib   aytganda,   meros   olishda   ajdod
a'zosining   kirish   spetsifikatsiyasi   avlod   sinfida   (meros   turiga   qarab)
o'zgartirilishi   mumkin.   Boshqacha   qilib   aytganda,   ajdod   sinfida   public   yoki
protected a'zolar avlod sinfida private bo'lishi mumkin. 
Bu   biroz   chalkash   tuyulishi   mumkin,   ammo   bu   unchalik   yomon   emas.   Biz
buni hozir aniqlaymiz, ammo undan oldin quyidagi  qoidalarni  eslang:       Sinf
har   doim   o'zining   (meroslanmagan)   a'zolariga   kirish   huquqiga   ega.         Sinf
a'zosiga kirish uning kirish spetsifikatsiyasiga asoslanadi.    Avlod sinfi ajdod-
sinfdagi   ushbu   a'zolarning   kirish   spetsifikatsiyasi   asosida   ajdod-sinfning
meros qilib olingan a'zolariga kirish huquqiga ega. public turdagi meros. Ochiq
meros   -   eng   ko'p   qo'llaniladigan   meros   turlaridan   biri.   Siz   boshqa   turlarni
ko'rishingiz   yoki   ishlatishingiz   juda   kam   uchraydi,   shuning   uchun   asosiy
e'tibor   merosning   ushbu   turini   tushunishga   qaratilishi   kerak.   Yaxshiyamki,
ochiq meros barcha turdagi eng engil va eng oddiy hisoblanadi. Agar siz ajdod sinfidan   public   turida   meros   olsangiz,   meros   qolgan   public   a zolar   ochiqʼ
qoladi, meros qilib olingan protected a zolar. 	
ʼ
OOP (O bj e ct   O ri e nt e d   P r og ra mm i n g   -   Oby e k t ga   y o' na lt i r i l ga n
dast ur la sh )   -   b u   bi ro n   bi r   ma qs ad ga   yo 'n al t i r i l ga n   dast ur la sh   de g an
ma' no ni   ang lat adi .
P r ot s e du ra vi y   dast ur la sh   -   bu   ma' lu mo t la rg a   i s h lo v   be r ad i g an
pr ot se d ur al ar   y ok i   f unk t si ya la rn i   y oz i s h ,   o b' e k t g a   yo 'n al t i ri lg an
dast ur la sh   e s a   ma' lu mo t   va   fu nk t s i y al ar ni   o 'z   i ch i g a   ol ga n   ob 'e k t la rn i
ya ra t i sh  h a qi da.
Ob' e k t g a   yo 'n al t i ri lg an   da st u rl as h   pr ot se s su al   da st u rl as h d an   bi r   qat or
afz al li k l ar ga  e ga :
 O O P   t e z r o q   v a   b a j a r i l i s h i   o s o n r o q
 O O P   d a s t u r l a r n i n g   a n i q   t u z i l i s h i n i   t a ' m i n l a y d i
 O O P   C   + +   k o d i n i   D R Y   " D o n ' t   R e p e a t   Y o u r s e l f "   s a q l a s h g a   y o r d a m
b e r a d i   v a   k o d n i   s a q l a s h ,   o ' z g a r t i r i s h   v a   d i s k   r a s k a d r o v k a   q i l i s h n i
o s o n l a s h t i r a d i .
 O O P   k o d n i   k a m   v a   i s h l a b   c h i q a r i s h   v a q t i n i   q i s q a r t i r g a n   h o l d a   t o ' l i q
q a y t a   i s h l a t i l a d i g a n   i l o v a l a r n i   y a r a t i s h g a   i m k o n   b e r a d i .
 C   + +   -   b u   o b' e k t g a   y o' na lt i r i l ga n   da st u rl as h   t i l i .   C + +   d ast u rl as h   t i li da
h amm a   na rs a   u ni ng   x us us i y at lar i   v a   us ul la ri   bi la n   bi r   q at o rd a   si n fll ar   va
ob ye k t la r   bi lan   b og 'l i q .   C + +   d ast u rl as h   t i li da   bi z   si nf
ya ra t di k ,   My Cl a ss   no ml i   cl ass   ya ra t di k ,   sh u ni ng   u ch un   b un da n
fo yd al an i b   o by e k t   y ar at ami z.   O b'e k t ni   ya ra t i sh   uc h u n   My Cl a ss si n f
no mi ni ,  so 'n gr a   ob 'e k t  no mi ni  k o 'r sat i n g.
12 .Ustuvor navbat hosil qiling. Unga yangi element qo’shing.
#include <iostream>
#include <iterator>
#include <queue> // Queue kutubxonasini ulash
using namespace std;
int main() {
priority_queue <int> Navbat; // Navbat yaratish
int n;
cout << "Nechta son kiritasiz ? " << endl; cin>>n;
for (int h = 0; h < n; h++)
{ int a;
cout <<"Navbatning "<<h+1<<"- elementini kiriting = ";cin >> a; Navbat.push(a); // Navbatga element qo'shish
}
cout << endl;
cout << "Eng birinchi elementi: " << Navbat.top() << endl;
// Navbat.pop(); // Navbatdan element o'chirish
// cout << "O'chirilganidan keyingi birinchi element: " << Navbat.front() << 
endl;
if (!Navbat.empty()) cout << "Navbat bo'sh emas!";
cout<<"Navnatning elementlari : \n";
for (int i=0; i<n; i++)
{
cout<<Navbat.top()<<" ";
Navbat.pop();
}return 0;}
Distance (Masofa) nomli sinf hosil qiling. Uning maydonlari butun sonli fut va 
haqiqiy tipdagi dyum qiymatlaridan iborat. Bunday holda, dyum qiymati 12.0 dan 
oshmasligi kerak. Agar belgilangan shart bajarilmasa istisnolarni generatsiya qiling. 
#include <iostream> 
using namespace std; 
class Distance 
{ 
int m_fut; 
float m_dyum; 
public: 
class Dyum12_err{}; 
class Fut10_err{};  Distance() 
{ 
m_fut=0; 
m_dyum=0; 
} 
Distance(int a,float b) 
{ 
if(b >= 12) 
throw Dyum12_err(); 
if(a < 0) 
throw Fut10_err(); 
m_fut = a; 
m_dyum = b; 
} 
void setValue(int a,float b) 
{ 
if(b>=12) 
throw Dyum12_err(); 
if(a<0){ 
throw Fut10_err();} 
m_fut = a; 
m_dyum = b; } 
}; 
int main() 
{ try 
{ 
Distance distanca1; 
int a;// fut 
float b; // dyum 
cout<<"Futni kitiring a = "; 
cin>>a; 
cout<<"Dyumni kiriting b = "; 
cin>>b; 
Distance dis2(a,b); 
distanca1.setValue(a,b); 
} 
catch(Distance :: Dyum12_err) 
{ cout<<"Dyum qiymati xato kiritildi."<<endl; } 
catch(Distance :: Fut10_err) 
{ cout<<"Fut qiymati xato kiritildi."; } 
return 0; } 12 .(Shakl) va Triangle (Uchburchak) sinflari hosil qiling. Triangle 
sinfidan Shape meros olgan RightAngledTriangle (To’g’ri burchakli 
uchburchak), Equilateral triangle(Teng yonli uchburchak) sinfini hosil 
qiling.Avlod sinfga qo’shimcha metodlar hosil qiling.
#include<iostream>
#include<math.h>
using namespace std;
class Shape
{
protected:
    double m_a, m_b,m_c, m_h;
public:
    Shape(double a=0, double b=0, double c=0,double h=0)
    {
        m_a=a;
        m_b=b;
        m_c=c;
        m_h=h;     }
    virtual double area()
    {
        return 0;
    }
};
class Triangle : public Shape
{
    public:
    Triangle(double a=0,double b=0,double c=0) : Shape(a,b,c)
    {
    };
    double area()
    {
        float p=(m_a+m_b+m_c)/2;
        float s=sqrt(p*(p-m_a)*(p-m_b)*(p-m_c));
        float R=2*s/p;
        return R;
    }
};
class RightAngledTriangle : public Shape
{
public:
    RightAngledTriangle(double a=0,double b=0,double c=0) : Shape(a,b,c)
    {
    };
    double area()
    {
        float R1=(m_a+m_b-m_c)/2;         return R1;
    }
};
class Equilateraltriangle: public Shape//
{
    public:
    Equilateraltriangle(double a=1,double b=1,double h=1) : Shape(a,b,h){};
    double area()
    {
        float R2=m_a*m_h/(2*m_b+m_a);
        return R2;
    }
};
int main()
{
    int m_a,m_b,m_c,m_h;
    cout<<"Uchburchak tomonini kiriting a=";cin>>m_a;
    cout<<"Uchburchak tomonini kiriting b=";cin>>m_b;
    cout<<"Uchburchak tomonini kiriting c=";cin>>m_c;
    cout<<"Uchburchak balandligini kiriting h=";cin>>m_h;
    Shape *shakl[3]; //obektlar massivini hosil qilish
    Triangle uchburchak(3,4,5);
    RightAngledTriangle Togriburchakli(4,5,7);
    Equilateraltriangle Tengyonli(3,5,7);
    shakl[0]=&uchburchak;
    shakl[1]=&Togriburchakli;
    shakl[2]=&Tengyonli;
    cout<<"Uchburchak Radiusi R:"<<shakl[0]->area()<<" ga teng"<<endl;     cout<<"To'g'ri burchakli uchburchak Radiusi R1= :"<<shakl[1]->area()<<" 
ga teng"<<endl;
    cout<<"Teng yonli uchburchak Radiusi R2= :"<<shakl[2]->area()<<" ga 
teng"<<endl;
    return 0;
}
12 .Employee (Xodim) nomli sinf hosil qiling.
Xodimning FISH, maosh, staj,
 ustama miqdori maydonlari bo’lsin. Soliqlar:
 daromad solig’i 12%, pensiya fondi 1%,
  kasaba uyushma fondi 1%. Xodimning
  qo’lga oladigan maoshini hisoblaydigan metod hosil qiling.
   10 ta xodimning o’rtacha maoshini aniqlaydigan sinfdan t
   ashqaridagi funksiya e’lon qiling.
    Xodimlarning maoshini ekranda jadval ko’rinishida chop eting.
    Sinf shablonidan foydalaning.*/
#include <iostream>
using namespace std;
template<typename T,typename T1, typename T2>
class Employee {
    T m_name;
    T m_surname;
    T m_sharifi;
    T1 m_maosh;
    T2 m_staj;
    T1 m_ustama;
public:
    Employee()
    {
        m_name="NO";
        m_surname="NO";
        m_sharifi="NO";
        m_maosh=0;
        m_staj=0;
        m_ustama=0;
    }
    Employee(T name, T surname, T sharifi, T1 maosh, T1 ustama, T2 staj)
    {
        m_name=name;
        m_surname=surname;
        m_sharifi=sharifi;
        m_maosh=maosh;
        m_ustama=ustama;
        m_staj=staj;
    }
    void setAA(T name, T surname, T sharifi, T1 maosh, T1 ustama, T2 staj)
    {
        m_name=name;         m_surname=surname;
        m_sharifi=sharifi;
        m_maosh=maosh;
        m_ustama=ustama;
        m_staj=staj;
    }
    T1 getA()
    {
        return m_maosh+m_ustama-(m_maosh+m_ustama)*0.12-
(m_maosh+m_ustama)*0.01-(m_maosh+m_ustama)*0.01;
    }
};
float funksiya(float m_maosh, float m_ustama)
    {
        return m_maosh+m_ustama-(m_maosh+m_ustama)*0.12-
(m_maosh+m_ustama)*0.01-(m_maosh+m_ustama)*0.01;
    }
int main()
{
    Employee 
<string,float,int>obj("Diyorbek","Qurbonov","Azamat_qizi+",12344.12,2113.3,
5);
    cout<<"Qo'lga oladigan maoshi : "<<obj.getA()<<endl;
    string a,b,s;
    float x,y;
    int z;     cout<<"Ism kiriting : ";
    getline(cin,a);
    cout<<"Familiya kiriting : ";
    getline(cin,b);
    cout<<"Sharif kiriting : ";
    getline(cin,s);
    cout<<"Maoshni kiriting : ";
    cin>>x;
    cout<<"Ustamani kiriting : ";
    cin>>y;
    cout<<"Stajini kiriting : ";
    cin>>z;
    obj.setAA(a,b,s,x,y,z);
    cout<<"Qo'lga oladigan maoshi : "<<obj.getA()<<endl;
    float A=0;
    float B[10];
    for(int i=0;i<10; i++)
    {
        float a,b;
        cout<<i+1<<"-xodim maoshini kiriting : ";
        cin>>a;
        cout<<i+1<<"-xodim ustamasini kiriting : ";
        cin>>b;
        B[i]=funksiya(a,b);
        A+=B[i];
    }
    for(int i=0;i<10;i++)
    {
        cout<<i+1<<"-xodim qo'lga oladigan maoshi : "<<B[i];         cout<<endl;
    }
    cout<<endl;
    cout<<"10ta odamning o'rtacha maoshi : "<<A*0.1;
    return 0;
} Xulosa
   
          Men 203-guruh talabasi   Rahmatullayev  Furqat   bugungi labaratoriya darsi
davomida   c++   dasturlash   tili   yordamida   polimorfizm   prinsipini   amalga   oshirish
uchun virtual mexanizmlarini qo’llashga doir   masalalar va misollarni yechdm.  
         Ushbu ishda C++ dasturida sinf va vorislik komandalarni bajarilishini ko’rdik.
Xususan sinf yordamida yangi ajdod sinfni hosil qildik.
                  Oldingi darslarda biz mavjud sinflardan yangi sinflarni olish uchun merosdan
foydalanishni ko'rib chiqdik. Ushbu mavzudagi darslarda biz merosning eng muhim
va   kuchli   jihatlaridan   biri   -   virtual   funksiyalarga   e'tibor   qaratamiz.   Oldingi
darslardan   bilamizki,   avlod   sinfining   obyektini   yaratishda   ushbu   obyektni   tashkil
etuvchi   ikkita   qism   qurilgan:   ajdod   va   avlod.   Yangi   o’rganuvchilar   uchun   yana   bir
tuzoq. Konstruktorlar yoki destruktorlar tanasida virtual funktsiyalarni chaqirmaslik
kerak.   Nega?   Child   sinfining   obyektini   yaratganingizda,   avval   ushbu   obyektning
ajdodi, keyin esa avlodi yaratilishini unutmang? Agar virtual funktsiyani Parent sinfi
konstruktoridan   chaqirsangiz   ham,   yaratilgan   obyektning   pastki   qismi   hali
yaratilmagan bo'lsa ham, u holda ajdod o'rniga avlod metodini chaqirib bo'lmaydi,
chunki   avlod   obyekt   ishlash   uchun.   Child   sinf   metodi   bilan   hali   yaratilmagan.
Bunday   hollarda   usulning   asosiy   versiyasi   C++   da   chaqiriladi.   Xuddi   shunday
muammo   destruktorlar   bilan   ham   mavjud.   Agar   siz   virtual   funktsiyani   ajdod-sinf
destruktorining   tanasida   chaqirsangiz,   u   holda   Ajdod-sinfning   usuli   har   doim
chaqiriladi,   chunki   obyektning   pastki   qismi   allaqachon   yo'q   qilinadi.   "Agar   virtual
funktsiyalar bilan hamma narsa yaxshi bo'lsa, nega barcha usullarni virtual qilmaslik
kerak?"   -   deb   so'raysiz.   Javob:   "Bu   samarasiz!"   Virtual   metod   chaqiruvini   qayta
ishlash   va   bajarish   odatdagi   usul   chaqiruvini   qayta   ishlash   va   bajarishdan   ko'ra
ko'proq   vaqt   talab   etadi.   Bundan   tashqari,   kompilyator   bir   yoki   bir   nechta   virtual
funktsiyalarga   ega   bo'lgan   har   bir   sinf   obyekti   uchun   bitta   qo'shimcha   ko'rsatkich
ajratishi kerak. Shu nuqtaga qadar biz barcha virtual funktsiyalarimizning ta'riflarini
yozdik.   Biroq,   C++   sof   virtual   funksiyalar   (yoki   “mavhum   funksiyalar”)   deb
ataladigan   maxsus   turdagi   virtual   funksiyalarni   yaratishga   imkon   beradi,   ularda
umuman ta’rifi yo‘q! Ular avlod sinflari tomonidan qayta aniqlanar ekan.

MAVZU: Sinfning virtual metodlari va Ularni ishlatish mexanizmlari. Abstrakt sinflar, ularning mo’ljallanishi va xususiyatlari REJA : 1) Sinfning virtual metodlari haqida umumiy tushuncha. 2) Abstrakt sinflarga doir masalalar yechish. 3) Berilgan masalaning dasturiy qismi. 4) Xulosa.

MAVZU : Sinfning virtual metodlari va Ularni ishlatish mexanizmlari. Abstrakt sinflar, ularning mo’ljallanishi va xususiyatlari Voris olish va protected spetsifikatori. Oldingi darslarda biz C++ tilida meros qanday ishlashi haqida gapirgan edik. Barcha misollarimizda biz ochiq merosdan foydalandik. Ushbu darsda biz merosning ushbu turini, shuningdek, ikkita boshqa turni ko'rib chiqamiz: private va protected. Shuningdek, ushbu meros turlari a'zolarga kirishga ruxsat berish yoki cheklash uchun kirish spesifikacilari bilan qanday o'zaro bog'lanishi haqida gaplashamiz. protected kirish spetsifikatori. Biz allaqachon sinf a'zolariga kim kirishi mumkinligini belgilaydigan private va public kirish spetsifikatorlarini ko'rib chiqdik. Eslatib o tamiz, public a zolari hamma uchun ochiq, privateʻ ʼ a zolarga faqat private a zo bilan bir xil sinf a zolari kirishlari mumkin. Bu ʼ ʼ ʼ shuni anglatadiki, avlod sinflari ajdod sinfining shaxsiy a'zolariga bevosita kira olmaydi! class Parent { private: int m_private; public: int m_public; }; Izoh: public = “ochiq”, private = “xususiy”, protected = “himoyalangan” C ++ da biz hali gapirmagan uchinchi kirish spetsifikatsiyasi mavjud, chunki u faqat meros kontekstida foydalidir. protected kirish spetsifikatori sinf a'zolariga do'stona va avlod sinflariga kirish imkonini beradi. Sinf tanasidan tashqarida protected a'zoga kirish yopiq . Agar siz meros turini o'zingiz belgilamagan bo'lsangiz, C++ da standart meros turi private bo'ladi (xuddi shunday sinf a'zolari uchun, agar boshqacha ko'rsatilmagan bo'lsa). Bu bizga 9 ta kombinatsiyani beradi: 3 ta kirish spetsifikatsiyasi (public, private va protected) va 3 ta meros turi (public, private va protected). Xo'sh, ikkalasi o'rtasidagi farq nima? Muxtasar qilib aytganda, meros olishda ajdod a'zosining kirish spetsifikatsiyasi avlod sinfida (meros turiga qarab) o'zgartirilishi mumkin. Boshqacha qilib aytganda, ajdod sinfida public yoki protected a'zolar avlod sinfida private bo'lishi mumkin. Bu biroz chalkash tuyulishi mumkin, ammo bu unchalik yomon emas. Biz buni hozir aniqlaymiz, ammo undan oldin quyidagi qoidalarni eslang: Sinf har doim o'zining (meroslanmagan) a'zolariga kirish huquqiga ega. Sinf a'zosiga kirish uning kirish spetsifikatsiyasiga asoslanadi. Avlod sinfi ajdod- sinfdagi ushbu a'zolarning kirish spetsifikatsiyasi asosida ajdod-sinfning meros qilib olingan a'zolariga kirish huquqiga ega. public turdagi meros. Ochiq meros - eng ko'p qo'llaniladigan meros turlaridan biri. Siz boshqa turlarni ko'rishingiz yoki ishlatishingiz juda kam uchraydi, shuning uchun asosiy e'tibor merosning ushbu turini tushunishga qaratilishi kerak. Yaxshiyamki, ochiq meros barcha turdagi eng engil va eng oddiy hisoblanadi. Agar siz ajdod

sinfidan public turida meros olsangiz, meros qolgan public a zolar ochiqʼ qoladi, meros qilib olingan protected a zolar. ʼ OOP (O bj e ct O ri e nt e d P r og ra mm i n g - Oby e k t ga y o' na lt i r i l ga n dast ur la sh ) - b u bi ro n bi r ma qs ad ga yo 'n al t i r i l ga n dast ur la sh de g an ma' no ni ang lat adi . P r ot s e du ra vi y dast ur la sh - bu ma' lu mo t la rg a i s h lo v be r ad i g an pr ot se d ur al ar y ok i f unk t si ya la rn i y oz i s h , o b' e k t g a yo 'n al t i ri lg an dast ur la sh e s a ma' lu mo t va fu nk t s i y al ar ni o 'z i ch i g a ol ga n ob 'e k t la rn i ya ra t i sh h a qi da. Ob' e k t g a yo 'n al t i ri lg an da st u rl as h pr ot se s su al da st u rl as h d an bi r qat or afz al li k l ar ga e ga :  O O P t e z r o q v a b a j a r i l i s h i o s o n r o q  O O P d a s t u r l a r n i n g a n i q t u z i l i s h i n i t a ' m i n l a y d i  O O P C + + k o d i n i D R Y " D o n ' t R e p e a t Y o u r s e l f " s a q l a s h g a y o r d a m b e r a d i v a k o d n i s a q l a s h , o ' z g a r t i r i s h v a d i s k r a s k a d r o v k a q i l i s h n i o s o n l a s h t i r a d i .  O O P k o d n i k a m v a i s h l a b c h i q a r i s h v a q t i n i q i s q a r t i r g a n h o l d a t o ' l i q q a y t a i s h l a t i l a d i g a n i l o v a l a r n i y a r a t i s h g a i m k o n b e r a d i .  C + + - b u o b' e k t g a y o' na lt i r i l ga n da st u rl as h t i l i . C + + d ast u rl as h t i li da h amm a na rs a u ni ng x us us i y at lar i v a us ul la ri bi la n bi r q at o rd a si n fll ar va ob ye k t la r bi lan b og 'l i q . C + + d ast u rl as h t i li da bi z si nf ya ra t di k ,   My Cl a ss   no ml i cl ass ya ra t di k , sh u ni ng u ch un b un da n fo yd al an i b o by e k t y ar at ami z. O b'e k t ni ya ra t i sh uc h u n   My Cl a ss si n f no mi ni , so 'n gr a ob 'e k t no mi ni k o 'r sat i n g. 12 .Ustuvor navbat hosil qiling. Unga yangi element qo’shing. #include <iostream> #include <iterator> #include <queue> // Queue kutubxonasini ulash using namespace std; int main() { priority_queue <int> Navbat; // Navbat yaratish int n; cout << "Nechta son kiritasiz ? " << endl; cin>>n; for (int h = 0; h < n; h++) { int a; cout <<"Navbatning "<<h+1<<"- elementini kiriting = ";cin >> a;

Navbat.push(a); // Navbatga element qo'shish } cout << endl; cout << "Eng birinchi elementi: " << Navbat.top() << endl; // Navbat.pop(); // Navbatdan element o'chirish // cout << "O'chirilganidan keyingi birinchi element: " << Navbat.front() << endl; if (!Navbat.empty()) cout << "Navbat bo'sh emas!"; cout<<"Navnatning elementlari : \n"; for (int i=0; i<n; i++) { cout<<Navbat.top()<<" "; Navbat.pop(); }return 0;} Distance (Masofa) nomli sinf hosil qiling. Uning maydonlari butun sonli fut va haqiqiy tipdagi dyum qiymatlaridan iborat. Bunday holda, dyum qiymati 12.0 dan oshmasligi kerak. Agar belgilangan shart bajarilmasa istisnolarni generatsiya qiling. #include <iostream> using namespace std; class Distance { int m_fut; float m_dyum; public: class Dyum12_err{}; class Fut10_err{};

Distance() { m_fut=0; m_dyum=0; } Distance(int a,float b) { if(b >= 12) throw Dyum12_err(); if(a < 0) throw Fut10_err(); m_fut = a; m_dyum = b; } void setValue(int a,float b) { if(b>=12) throw Dyum12_err(); if(a<0){ throw Fut10_err();} m_fut = a; m_dyum = b; } }; int main() { try { Distance distanca1; int a;// fut float b; // dyum cout<<"Futni kitiring a = "; cin>>a; cout<<"Dyumni kiriting b = "; cin>>b; Distance dis2(a,b); distanca1.setValue(a,b); } catch(Distance :: Dyum12_err) { cout<<"Dyum qiymati xato kiritildi."<<endl; } catch(Distance :: Fut10_err) { cout<<"Fut qiymati xato kiritildi."; } return 0; }