Aminjonov Axrorbek 616-21 gurux talabasi 5-dedlayn javoblari



Download 79,2 Kb.
bet3/3
Sana01.05.2023
Hajmi79,2 Kb.
#934077
1   2   3
Bog'liq
Aminjonov Axrorbek 616-21 guruh

+, -, *, /, %, &, |, ^, <<, >>

  • Ushbu binar operatsiyalar qaytayuklanishi mumkin




  • ==, !=, <, >, <=, >=

  • Bu taqqoslash operatsiyalari qayta yuklanishi mumkin. C# (< va >, <= va >=, == va != shu kabi) “shunga o`xshash” operatsiyalarga birgalikdagi qayta yuklashni talab qiladi




  • []

  • [] operatsiyasi qayta yulanishi mumkin emas. Biroq, indeksatorlar shunga o'xshash funktsiyani taklif qilishadi.




  • ()

  • () operatsiyasi qayta yulanishi mumkin emas. Shu bilan bir xil funktsionallik maxsus konversiya usullari bilan ta'minlanadi




  • +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=

  • Qisqartirilgan amallar qayta yuklanmaydi; lekin ular mos binar operatsiyalarni qayta yuklash bilan avtomat yuz beradi









Binar operatorlarni qayta yuklash


  • namespace ConsoleApplication1

  • {

  • class MyArr

  • {

  • // Uch o`lchovli fazoda koordinatalar

  • public int x, y, z;

  • public MyArr(int x = 0, int y = 0, int z = 0)

  • {

  • this.x = x;

  • this.y = y;

  • this.z = z;

  • }

2 Har qanday binar amal ikki usul bilan aniqlanadi, yoki bir parametrli kompanenta funktsiya sifatida yoki global yoki do’stona global ikki parametrli funktsiya. Birinchi holda x*y ifoda h. Operator*(y) murojaatni ikkinchi holda esa Operator*(x*y) murojaatni bildiradi.

Binar '=', '[ ]', '->' amallar semantikasiga ko’ra Operator=, Operator[ ], Operator-> global funktsiya bo’lolmaydi. Balkim nostatik kompanenta funktsiyasi bo’lishi lozim.

Har qanday amal '$' sinf ob'ektlari uchun ikki usulda aniqlanadi yoki parametrsiz komponenta funktsiya yoki bir parametrli (balkim do’stona) global funktsiya. Prefiks amal uchun xz ifoda , postfiks amal uchun Z ifoda komponenta funktsiya z.operator*( ) yoki global funktsiya operator*(z) chaqirilishini bildiradi. C++ tilida ba'zi amallarni boshqa amallarning kombinatsiyasi sifatida aniqlanadi.

Misol uchun j+m butun son uchun m+=1ni bu amal bo’lsa m=m+1 ni bildiradi. Bunday avtomatik almashtirishlar qo’shimcha yuklangan amallar uchun bajarilmaydi. Misol uchun umumiy holda operator*=() ta'rifni operator*( ) ta'rif va operator=( ) ta'rifdan keltirib chiqarib bo’lmaydi.

Agar ifodada foydalanuvchi kiritgan sinf ob'ekti qatnashmasa uning ma'nosini o’zgartirib bo’lmaydi. Misol uchun faqat ko’rsatkichlarga ta'sir qiluvchi amallarni kiritish mumkin emas.

Agar operatsiya funktsiyaning birinchi parametri standart tip bo’lishi kerak bo’lsa, bunday operatsiya-funktsiya kompanenta-funktsiya bulolmaydi. Misol uchun aa- biror sinf ob'ekti bo’lsin va uning uchun '+' amali qo’llangan bo’lsin. AA+2 ifoda uchun yoki AA.operator(2) yoki operator+(AA,2) ifoda chaqirilishi mumkin. 2++AA ifoda uchun operator+(AA,2) chaqirilishi mumkin lekin z. operator+(AA) hatoga olib keladi. Amallar kengaytirilganda ular uchun har hil tiplar qolib inatsiyasini oldindan nazarda tutish lozim. Lekin operatsiya-funktsiyalarga murojaat qilinganda standart tiplar almashinuvchi qoidalari ishlatiladi, shuning uchun tiplarning hamma kombinatsiyalarini hisobga olish zarurati yuq. Kupgina hollarda binar amallar uchun qo’yidagi hollarni hisobga olish etarlidir.


#include
using namespace std;
class sonlar {
private:
public:
int butun ;
float xaqiqiy ; };
istream &operator>> (istream &k, sonlar &x)
{cout<<"butun sonlar"; k>>x.butun ;
cout<<"xaqiqiy sonlar"; k>>x.xaqiqiy ;
} sonlar operator + (sonlar x,sonlar y)
{ sonlar z;
z.butun = x.butun + y.butun;
z.xaqiqiy = x.xaqiqiy + y.xaqiqiy;
return z;
} ostream &operator<<(ostream &k, sonlar &x)
{ k<} int main()
{ sonlar a,b,c;
cout <<"a="; cin>>a; cout<<"b="; cin>>b; c= a+b; cout <return 0;}

S ++ tilining ajoyib hususiyatlaridan biri standart amallarni yangi ma'lumotlar turlariga kullash imkoniyatidir. Masalan satrlani ulashni S1=S2 kurinishda belgilash ancha ulaydir. Bu amalni simvolli massivlarga yoki satrli konstantalarga qo’llashning iloji yo’q. Lekin S1 va S2 ni biror sinf ob'ektlari sifatida (masalan Stroka sinf) tavsiflansab ular uchun amalini kiritish mumkin bo’ladi. Amalni ma'lumotlarning yangi tipiga qo’llash uchun dasturchi “ operatsiya – funktsiya “ deb ataluvchi mahsus funktsiyani kiritishi lozim. Operatsiya – funktsiya ta'rifi qo’yidagicha.

Qaytariluvchi_ma'lumot_tini operator operatsiya_belgisi

( operatsiya-funktsiya-parametrlari-spetsifikatsiyasi )

{ operatsiya-funktsiya-tanasi-operatorlari }

Kerak bo’lganda bu funktsiya operator prototipini kiritish mumkin.

Qaytariluvchi-ma'lumot-tipi+operator operatsiya-belgisi

{ operatsiya-funktsiya-parametrlari-spetsifikatsiyasi )

Misol uchun * amalni biror T sinfga tegishli ob'ektlarga qo’llash uchun qo’yidagicha funktsiya e'lon qilishi mumkin:

T operator * ( Tx,Ty )

Bu usulda ta'riflangan operatsiya qo’shimcha yuklangan (inglizchasiga-overload) deb ataladi. Agar T sinf uchun yuqorida keltirilgan turdagi funktsiya e'lon qilingan bo’lsa, A*V ifoda operator (A,V) sifatida qaraladi. Sinf ob'ektlariga funktsiya-operatorni qo’llash uchun operatsiya-funktsiya yoki sinf kompanenta funktsiyasi yoki do’stona funktsiya bo’lishi, eki parametrlardan birortasi sinf tipiga ega bo’lishi kerak. Qo’yidagi misolda amalini satrlarga qo’llash usuli kursatilgan. Buning uchun len – satr uzunligi , ch-simvolli massivga ko’rsatkich parametrlardan iborat. Streko sinfidan foydalanamiz. Bu sinfda ikki konstruktor mavjuddir. Birinchisi yaratilaetgan ob'ekt uchun hotiradan satr sifatida joy ajratadi. Ikkinchisi haqiqiy parametr asosida ob'ekt yaratadi. Sinfdan tashkarida operatsiya-funktsiyani qo’yidagicha S bilan aniqlaymiz:

Strka & operator + (stroka & A, stroka & B),

Bu operatsiya-funktsiya ‘+’ amalini stroka sinfiga tegishli ob'ektlarga qo’llash uchun ishlatiladi. Funktsiya operatsiya tanasi asosiy dasturdan keyin keltirilgan, shuning uchun asosiy dasturda bu funktsiyaning prototipi joylashtirilgan.





7. : Аsоsi uchburchаkdаn ibоrаt bo’lgаn prizmаni ifоdаlоvchi klаss yarаting
#include
using namespace std;
class uchprizma
{ public: float a; float b; float c; float v;
uchprizma ();
void kiritish()
{
cout<<" eni ni kiriting=";
cin>>a;
cout<<" bo'yini kiriting=";
cin>>b;
cout<<" balandligini kiriting=";
cin>>c;
} void chiqarish()
{ cout<<" uchburchak prizma hajmi=";
v=(a*b*c)/2;
cout<~uchprizma(){cout<<" obekt o'chirildi\n";}
float yuza(); };
uchprizma::uchprizma(){cout<<" obyekt yaratildi\n";}
int main()
{ uchprizma s;
s.kiritish();
s.chiqarish(); return 0; }.

Download 79,2 Kb.

Do'stlaringiz bilan baham:
1   2   3




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish