Member 12661619 Ответов: 1

Это простая программа на C++, включающая в себя наследование


Я изучаю наследование, и когда я выполняю эту программу, я не получаю правильных результатов. Плз помогите.

Что я уже пробовал:

#include "iostream.h"

class variables
{
public:
 //square
 int a;
 //rect
 int l,b;

};

class square : public variables
{
public:

void s()
{
 cout<<"You chose square. Enter the side of the square. \n";
 cin>>a;
 }

};

class rectangle : public variables
{
public:

void  r()
{
 cout<<"You chose rectangle. Enter the length and breadth of the rectangle. \n";
 cin>>l>>b;
 }

};


class calculate : public variables
{
public:

void as()   //as=area of square
{
cout<<a*a;
}
void ar()   //ar=area of rectangle
{
cout<<l*b;
}
void ps()   //ps=perimeter of square
{
cout<<4*a;
}
void pr()   //pr=perimeter of rectangle
{
cout<<(2*l+2*b);
}


};

int main()
{
 calculate obj;
 square q;
 rectangle t;
 int n;
 cout<<"Welcome to the maths page\n";
 cout<<"Choose the shape\n";
 cout<<"\n1) Square \n2) Rectangle (1-2)\n";
 cin>>n;

 switch (n)
 {
  case 1: q.s();
			cout<<"Area of the square = ";
			obj.as();
			cout<<"Perimeter of the square = ";
			obj.ps();
			break;
 case 2: t.r();
			cout<<"Area of the rectangle = ";
			obj.ar();
			cout<<"Perimeter of the rectangle = ";
			obj.pr();
			break;

 }
 return 0;

}

Richard MacCutchan

Какой результат вы получаете и почему они не правы?

Посмотрев на ваш код, я думаю, что вам нужно перечитывать свои справочники по классам и наследованию. Или поискать в Google учебники.

Patrice T

Покажите пример ввода с фактическим выходом и правильным выходом.

1 Ответов

Рейтинг:
2

KarstenK

Если вы внимательно прочтете свой код, то увидите: в обоих случаях вы даете один и тот же вывод коммандос.

Сделайте какой-нибудь рисунок о наследстве. Я предполагаю, что ваш расчет должен наследоваться от прямоугольника,но не непосредственно от переменной.

Совет: научитесь работать с указателями, тогда наследование и приведение типов станут интересными.