Вычисления площадей различных фигур C++

Создать базовый Kласс Shape с виртуальной функцией Area. Создать производные классы Triangle, Rectangle, Circle...

#include <iostream>
#include <fstream>
using namespace std;

class Shape
{
  public:
    string name;
    double width, height, radius;
  public:
    void set_data (double a, double b)
    {
        width = a;
        height = b;
    }
    virtual double area() = 0;
};

class Rectangle: public Shape
{
public:
    double area ()
    {
        return (width * height);
    }
};

class Triangle: public Shape
{
public:
    double area ()
    {
        return (width * height)/2;
    }
};

class Circle : public Shape
{
  public:
    double area ()
    {
        return 3.1415 * (radius * radius);
    }
};

int main()
{
    int N;
    cin >> N;

    Rectangle Rect;
    Triangle Tri;
    Circle Circ;
    string* S = new string[N];

    if(N == 1) {
      cin >> Rect.name >> Rect.height >> Rect.width;
      cout << Rect.area();

      return 0;
    } 
    else
{
    for(int i = 0; i < N; i++)
    {
        cin >> S[i];

        if(S[i] == "Rectangle")
        {
            cin >> Rect.height;
            cin >> Rect.width;
        }
         else if(S[i] == "Triangle")
             {
                 cin >> Tri.height;
                 cin >> Tri.width;
             }
             else if(S[i] == "Circle")
                  {
                      cin >> Circ.radius;
                  } 

    }
}
    cout << Rect.area() << " " << Tri.area() << " " << Circ.area();

  delete [] S;

    return 0;
}

код работает в первых двух тестах а в третьем дает ошибку...
нужно вводить N количество и вывести все площади в порядке возрастания...

Примеры
====== Тест #1 =======
Входные данные:
1
Rectangle 4 3

Результат работы:
12
Правильный ответ:
12
Вывод проверяющей программы:
OK

====== Тест #2 =======
Входные данные:
3
Triangle 4 6
Rectangle 2 3
Circle 3

Результат работы:
6 12 28.2735
Правильный ответ:
6 12 28.2735
Вывод проверяющей программы:
OK

====== Тест #3 =======
Входные данные:
5
Triangle 4 6
Rectangle 2 3
Circle 4
Triangle 7 11
Triangle 3 5

Результат работы:
6 7.5 50.264
Правильный ответ:
6 7.5 12 38.5 50.264
Вывод проверяющей программы:
Неправильный ответ!

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.