Untitled
unknown
plain_text
a year ago
6.2 kB
11
Indexable
/* *************************************************************** * Program Title: Area Program csc102 H001 * Program Name: w10178836-P02.cpp * Name: Sarah Mirza * StuID: w10178836 * Date: 18 March 2024 * * Objectives/Description: To calculate the area and perimeter of the given figures. * Input: shape names and their measurements. * Output: area and perimeter * **************************************************************** */ /* ************************************************* * Function Names: square, rectangle, circle, triangle and trapezoid (all individual functions). * Function Description: it askes for the required measurements and then calculate the area and parameter of the specific shape. * Function Parameters: width, height, lenght(1,2,3,4), and radius. * Paramter type, name and use. the parameters are all double& * What is returned, if anything. Nothing is returned since they are void functions. * ************************************************* */ #include <iostream> #include <cmath> #include <limits> #include <string> using namespace std; const double pi = 3.14159265358979323846; void getValidInput(double& input, const string& prompt) { cout << prompt; while (!(cin >> input)) { cout << "Invalid input. Please enter a numerical value." << endl; cin.clear(); cin.ignore(numeric_limits<streamsize>::max(), '\n'); cout << prompt; } } class Square { private: double side; public: Square() : side(0.0) {} void setSide(double s) { side = s; } double getArea() const { return side * side; } double getPerimeter() const { return 4 * side; } }; class Rectangle { private: double length; double width; public: Rectangle() : length(0.0), width(0.0) {} void setDimensions(double l, double w) { length = l; width = w; } double getArea() const { return length * width; } double getPerimeter() const { return 2 * (length + width); } }; class Triangle { private: double side1; double side2; double height; public: Triangle() : side1(0.0), side2(0.0), height(0.0) {} void setDimensions(double s1, double s2, double h) { side1 = s1; side2 = s2; height = h; } double getArea() const { return 0.5 * side1 * height; } double getPerimeter() const { return side1 + side2 + height; } }; class Circle { private: double radius; public: Circle() : radius(0.0) {} void setRadius(double r) { radius = r; } double getArea() const { return pi * radius * radius; } double getPerimeter() const { return 2 * pi * radius; } }; class Trapezoid { private: double base1; double base2; double side1; double side2; double height; public: Trapezoid() : base1(0.0), base2(0.0), side1(0.0), side2(0.0), height(0.0) {} void setDimensions(double b1, double b2, double s1, double s2, double h) { base1 = b1; base2 = b2; side1 = s1; side2 = s2; height = h; } double getArea() const { return 0.5 * (base1 + base2) * height; } double getPerimeter() const { return base1 + base2 + side1 + side2; } }; int main() { string usershape; while (true) { cout << "Choose a shape to calculate its area and perimeter, or type 'quit' to exit. Shapes available: square, rectangle, triangle, circle, trapezoid: "; cin >> usershape; if (usershape == "quit") { cout << "Program ended."; break; } if (usershape == "square") { Square square; double side; getValidInput(side, "Enter side length: "); square.setSide(side); cout << "Area: " << square.getArea() << endl; cout << "Perimeter: " << square.getPerimeter() << endl; } else if (usershape == "rectangle") { Rectangle rectangle; double length, width; getValidInput(length, "Enter length: "); getValidInput(width, "Enter width: "); rectangle.setDimensions(length, width); cout << "Area: " << rectangle.getArea() << endl; cout << "Perimeter: " << rectangle.getPerimeter() << endl; } else if (usershape == "triangle") { Triangle triangle; double side1, side2, height; getValidInput(side1, "Enter side 1 length: "); getValidInput(side2, "Enter side 2 length: "); getValidInput(height, "Enter height length: "); triangle.setDimensions(side1, side2, height); cout << "Area: " << triangle.getArea() << endl; cout << "Perimeter: " << triangle.getPerimeter() << endl; } else if (usershape == "circle") { Circle circle; double radius; getValidInput(radius, "Enter radius: "); circle.setRadius(radius); cout << "Area: " << circle.getArea() << endl; cout << "Perimeter: " << circle.getPerimeter() << endl; } else if (usershape == "trapezoid") { Trapezoid trapezoid; double base1, base2, side1, side2, height; getValidInput(base1, "Enter length of base 1: "); getValidInput(base2, "Enter length of base 2: "); getValidInput(side1, "Enter length of side 1: "); getValidInput(side2, "Enter length of side 2: "); getValidInput(height, "Enter height: "); trapezoid.setDimensions(base1, base2, side1, side2, height); cout << "Area: " << trapezoid.getArea() << endl; cout << "Perimeter: " << trapezoid.getPerimeter() << endl; } else { cout << "Shape not recognized." << endl; } } return 0; }
Editor is loading...
Leave a Comment