Dasturdagi figure sinfi konstruktori kiritilgan parametrlarni o'z ichiga saqlamaydi, balki X va y o'zgaruvchilarga, masalan, I va j o'zgaruvchilariga tenglanadi
Download 13.83 Kb.
|
Diyor
Diyor Dasturdagi figure sinfi konstruktori kiritilgan parametrlarni o'z ichiga saqlamaydi, balki x va y o'zgaruvchilarga, masalan, i va j o'zgaruvchilariga tenglanadi. Bunaqa nomlangan o'zgaruvchilar esa konstruktorning ichida aniqlanmagan. Shuning uchun, figure sinfi uchun tekshirish yordamida xatolik yuzaga kelyapti. To'g'rilash uchun, figure sinfi konstruktoridan oldin kiritilgan i va j o'zgaruvchilarni x va y o'zgaruvchilariga o'zlashtirish kerak. Bunday: figure(double k, double l) { x = k; y = l; } Bundan tashqari, yuza funksiyalari ham to'g'rilanishi kerak. Uchburchakning yuzasi nisbiylikda x * y * 0.5 formula orqali hisoblanishi kerak, doira yuzasi esa 3.14 * x * x formula orqali hisoblanishi kerak. Shunday qilib, to'g'rilangan dastur quyidagicha bo'lishi kerak: #include #include #include using namespace std; class figure { protected: double x, y; public: figure(double k, double l) { x = k; y = l; } virtual double yuza() = 0; }; class uchburchak : public figure { public: uchburchak(double i, double j) : figure(i, j) {} double yuza() { return x * y * 0.5; } }; class turtburchak : public figure { public: turtburchak(double i, double j) : figure(i, j) {} double yuza() { return x * y; } }; class doira : public figure { public: doira(double i, double j = 0) : figure(i, j) {} double yuza() { return 3.14 * x * x; } }; // figure sinf obyektlarini yaratish. figure* factory() { switch (rand() % 3) { case 0: return new doira(rand() % 15); case 1: return new uchburchak(rand() % 15, rand() % 15); case 2: return new turtburchak(rand() % 15, rand() % 15); } return 0; }; int main() { figure* p; // asos sinfga ko'rsatkich int i; int t = 0, r = 0, c = 0; // 15 ta obyektlarni hosil qilsh va sanash for (i = 0; i < 15; i++) { p = factory(); // obyektni hosil qilish cout << "Obyektning tipi: " << typeid(*p).name(); cout << ". "; // obyektni tekshirish orqali sanash Download 13.83 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling