Shape Area Calculator

Hey guys, so i'm building a pretty basic calculator program that calculates the area of generic shapes (triangles, rectangles, and squares); for some reason though, my program is having troubles as soon as it hits the if/else code in the int main section. When I enter triangle, rectangle, or square, it just spits back out the "Sorry, that's not one of the options. Please re-enter and try again." error line I created. When I isolate and run just the stuff inside the if/else statements it works great, but I have no idea why it won't just understand my if (shape == triangle).... . PLEASE HELP ME! Feel free to copy and paste my code into your simulator and then just change what you deem necessary to make it work, or comment if you see my mistake. Thanks

Works now! Finished code, free to use:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include <iostream>
using namespace std;


class figure {
protected:
    double x, y;
public:
    void set_dim(double i, double j=0) {
        x = i;
        y = j;
    }
    virtual void show_area() {
        cout << "No area computation defined ";
        cout << "for this class.\n";
    }
} ;

class tri : public figure {
public:
    void show_area() {
        cout << "Triangle with height ";
        cout << x << " and base " << y;
        cout << " has an area of ";
        cout << x * 0.5 * y << ".\n";
    }
};

class rec : public figure {
public:
    void show_area() {
        cout << "Square with dimensions ";
        cout << x << "x" << y;
        cout << " has an area of ";
        cout << x *  y << ".\n";
    }
};
class circ : public figure {
public:
    void show_area() {
        cout << "Circle with radius ";
        cout << x;
        cout << " has an area of ";
        cout << 3.14 * x * x << ".\n";
    }
} ;

int main()
{
    string triangle;
    string rectangle;
    string circle;
    string shape;
    int height, base, height1, width, radius;
   
    figure *p; // create a pointer to base type
    
    
    cout << "Hi, i'm Jarvis. ";
    cout << "I'm a computer generated program that finds areas of basic figures. ";
    cout << "To start, first, give me a shape (it can be a triangle, rectangle, or circle):";
    
    cin >> shape;
    
    if (shape =="triangle") {
            tri t; // create objects of derived types;
            cout << "What is the base of the triangle?: ";
            cin >> base;
            cout << "What is the height of the triangle? (top to bottom): ";
            cin >> height;
            p = &t;
            p->set_dim(height, base);
            p->show_area();
        }
        else
            if (shape =="rectangle") {
            rec s;
            cout << "What is the width of the rectangle?: ";
            cin >> width;
            cout << "What is the height of the rectangle?: ";
            cin >> height1;
            p = &s;
            p->set_dim(height1, width);
            p->show_area();
        }
        else
            if (shape =="circle") {
            circ c;
            cout << "What is the radius of the circle?: ";
            cin >> radius;
            p = &c;
            p->set_dim(radius);
            p->show_area();
        }
        else
            cout << "Sorry, that's not one of the options. Please re-enter and try again.";
    
    return 0;
}
Last edited on
put the shape names in if else between quotes like this

1
2
if(shape=="triangle")
{  . . . }


or you may use strcmp() function
Thank you so much!! Such a simple fix, and now my program runs great. I think I was mixing up code languages again.
Topic archived. No new replies allowed.