Home > OS >  using a class n times with a for loop c
using a class n times with a for loop c

Time:05-16

I'm trying to learn classes, so here I want to create n-number Triangle and Rectangle types, input a,b,c, also input from user and then cout them.. im trying to get n-number of Triangle and Rectangle with for loop but at the end I get print only the biggest S() and P() which user had entered.. for example if I user says n=2 so there will be 2 Triangles and 2 Rectangles .. Rectangle a1 = 1, b1 = 2; Rectangle a2 = 3, b2 = 4.. ill get s() output s = 12 and again s = 12 instead of s = 2 and s = 12 enter image description here Im sorry for the worst description ever ..

    class Rectangle
{
protected:
    int a, b;
    
    virtual double S()
    {
        return a*b;
    }
    
    virtual double P()
    {
        return (2*a)   (2*b);
    }
    
public:
    Rectangle (int aa, int bb) {a = aa; b = bb;}
    
    virtual void Input()
    {
        cout << " enter a: "; cin >> a;
        cout << " enter b: "; cin >> b;
        cout << endl;
    }
    
    virtual void Print()
    {
        cout << " Rectangle S = " << S() << endl;
        cout << " Rectangle P = " << P() << endl;
        cout << endl;
    }
};

    int main()
{
    int n;
    cout << " enter number of triangles and rectangles... "; cin >> n;
    cout << endl;
    Rectangle rectangle(1, 1);
    Triangle triangle(1,1,1);
    
    for (int i=0; i<n; i  )
    {
        rectangle.Input();
    }

        for (int i=0; i<n; i  )
    {
        rectangle.Print();
    }
    

CodePudding user response:

You are overwriting the same variable every time you call Input(). Instead, create a vector of rectangles.

#include <vector>

class Rectangle {
    // ...
};

int main()
{
    // ...
    
    std::vector<Rectangle> rectangles(n);    
    for (int i=0; i<n; i  )
    {
        rectangles[i].Input();
    }

    for (int i=0; i<n; i  )
    {
        rectangles[i].Print();
    }
}

You need to add a default constructor for Rectangle so that you can use it with vector.

For example:

Rectangle() { a = 0; b = 0; }
Rectangle(int aa, int bb) {a = aa; b = bb;}
  • Related