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.
Sana15.03.2023
Hajmi13.83 Kb.
#1269359
Bog'liq
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