MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNALOGIYALARI UNIVERSITETI TELEKOMUNIKATSIYALAR FAKULTETI
DASTURLASH fanidan
1- LABORATORIYA ISHI
Bajardi: 008-3-guruh 1-bosqich talabasi
Jumayev Alpomish
Tekshirdi: Dasturlash fani o’qituvchisi
Rustamova Mohichehra Yaxshibayevna
TOSHKENT 2023
Noma’lum turlar va noma’lum nomlar fazosi
Ishning maqsadi: C++ dasturlash tilida obyektga yo’naltirilgan dasturlash tamoyilaridan foydalanib noma’lum nomlar fazosini tashkil qilish ko’nikmalarini shakllantirish.
Masalaning qo’yilishi:
Variantda berilgan class, konstruktor va class maydonlari yordamida noma’lum nomlar fazosini yarating. Class da obyektlar massivi ustida quyidagi funksiyalarni bajaruvchi 3 ta static metod yozing:
- Qidirish metodi
- Saralash metodi
- O’zgartirish metodi
Yuqoridagi metodlar uchun class maydonlaridan ixtiyoriysi tanlansin.
14.Eshik va deraza class larini yarating va ularni bog’lovchi funksiyalar yarating.
|
Kodi:
#include
#include
using namespace std;
namespace eshik_deraza_nomlarfazosi { //yangi nomlar fazosi
class Eshik {
protected: int eni,
buyi,
qalinligi,
hajmi;
string materiali;
public: Eshik() {}
Eshik(int eni, int buyi, int qalinligi, string materiali) {
this -> eni = eni;
this -> buyi = buyi;
this -> qalinligi = qalinligi;
this -> materiali = materiali;
this -> hajmi = eni * buyi * qalinligi;
}
static void qidirish(Eshik * massiv, int n, string material) { //qidirish materiali bo'yicha
for (int i = 0; i < n; i++) {
if (massiv[i].materiali == material) massiv[i].print();
}
}
static void saralash(Eshik * massiv, int n) { //saralash yuzasi(eni*bo'yi*hajmi) bo'yicha
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (massiv[i].hajmi > massiv[j].hajmi)
swap(massiv[i], massiv[j]);
}
}
}
void edit(int eni, int buyi, int qalinligi, string materiali) { //o'zgartirish metodi
this -> eni = eni;
this -> buyi = buyi;
this -> qalinligi = qalinligi;
this -> materiali = materiali;
this -> hajmi = eni * buyi * qalinligi;
}
void print() {
cout << "\nEni va buyi:" << eni << "x" << buyi <<
"\nQalinligi:" << qalinligi <<
"\nMateriali:" << materiali <<
"\nHajmi:" << hajmi << endl;
}
};
class Deraza: public Eshik {
public: Deraza() {}
Deraza(int eni, int buyi, int qalinligi, string materiali) {
this -> eni = eni;
this -> buyi = buyi;
this -> qalinligi = qalinligi;
this -> materiali = materiali;
this -> hajmi = eni * buyi * qalinligi;
}
};
};
int main() {
using namespace eshik_deraza_nomlarfazosi; //Yangi hosil qilingan nomlar fazosidan foydalanish
int n, m;
cout << "Nechta Eshik haqida ma'lumot kiritmoqchisiz?\nn=";
cin >> n;
Eshik * eshiklar = new Eshik[n];
cout << n << " ta eshik ma'lumotlarini kiriting:\n";
for (int i = 0; i < n; i++) {
int eni, buyi, qalinligi;
string materiali;
cout << "\nEshik eni va bo'yini probel bn kiriting:";
cin >> eni >> buyi;
cout << "\nEshikning qalinligini kiriting:";
cin >> qalinligi;
cout << "\nEshik materiali:";
cin >> materiali;
eshiklar[i] = Eshik(eni, buyi, qalinligi, materiali);
}
cout << "\nEshiklarni hajmi bo'yicha saralash:\n";
eshiklar[0].saralash(eshiklar, n);
//Ekranga chiqarish:
for (int i = 0; i < n; i++) {
eshiklar[i].print();
}
cout << "\nQidirish:\nMaterialni kiriting:";
string man;
cin >> man;
eshiklar[0].qidirish(eshiklar, n, man);
cout << "Nechta Deraza haqida ma'lumot kiritmoqchisiz?\nn=";
cin >> n;
Deraza * derazalar = new Deraza[n];
cout << n << " ta deraza ma'lumotlarini kiriting:\n";
for (int i = 0; i < n; i++) {
int eni, buyi, qalinligi;
string materiali;
cout << "\nDeraza eni va bo'yini probel bn kiriting:";
cin >> eni >> buyi;
cout << "\nDeraza qalinligini kiriting:";
cin >> qalinligi;
cout << "\nDeraza materiali:";
cin >> materiali;
derazalar[i] = Deraza(eni, buyi, qalinligi, materiali);
}
cout << "\nDerazalarni saralash hajmi bo'yicha:\n";
derazalar[0].saralash(derazalar, m);
//Ekranga chiqarish:
for (int i = 0; i < m; i++) {
derazalar[i].print();
}
cout << "\nQidirish:\nMaterialni kiriting:";
cin >> man;
derazalar[0].qidirish(derazalar, m, man);
return 0;
};
Natijasi:
Do'stlaringiz bilan baham: |