Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SFML\Graphics.hpp>
- #include <iostream>
- void drawRectangle(double& a, double& b);
- void drawCircle(double& size);
- std::string drawOptionsAndGetSelected();
- void executeOptions(std::string& selected);
- double calculateFieldRect(double& a, double& b);
- double calculateFieldCircle(double& radious, double& pi);
- double calculatePerimeterRect(double& a, double& b);
- double calculatePerimeterCircle(double& radious, double& pi);
- int main()
- {
- while (1)
- {
- executeOptions(drawOptionsAndGetSelected());
- }
- }
- void drawRectangle(double & a, double & b)
- {
- sf::RenderWindow * window = new sf::RenderWindow;
- sf::RectangleShape * rectShape = new sf::RectangleShape;
- sf::Vector2f rectSize(a, b);
- int scale = 1;
- while (rectSize.x > 700 || rectSize.y > 700)
- {
- rectSize /= 2.f;
- scale++;
- }
- rectShape->setSize(rectSize);
- rectShape->setFillColor(sf::Color::Green);
- window->create(sf::VideoMode(rectSize.x, rectSize.y), "Rectangle", sf::Style::None);
- window->clear();
- window->draw(*rectShape);
- window->display();
- if (scale > 1)
- {
- std::cout << "Scale: 1:" << scale << "\n";
- }
- std::cin.get();
- std::cin.get();
- window->close();
- delete rectShape;
- delete window;
- }
- void drawCircle(double & radious)
- {
- sf::CircleShape * circleShape = new sf::CircleShape;
- sf::RenderWindow * window = new sf::RenderWindow;
- double circleRadious = radious;
- int scale = 1;
- while (circleRadious * 2 > 700)
- {
- circleRadious /= 2.;
- scale++;
- }
- circleShape->setRadius(circleRadious);
- circleShape->setFillColor(sf::Color::Green);
- window->create(sf::VideoMode(circleRadious * 2, circleRadious * 2), "Circle", sf::Style::None);
- window->clear();
- window->draw(*circleShape);
- window->display();
- if (scale > 1)
- {
- std::cout << "Scale: 1:" << scale << "\n";
- }
- std::cin.get();
- std::cin.get();
- window->close();
- delete circleShape;
- delete window;
- }
- std::string drawOptionsAndGetSelected()
- {
- std::string str;
- std::cout << "----------//////////||||||||||\\\\\\\\\\\\\\\\\\\\----------\n";
- std::cout << "\t\tCircle and Rectangle\n";
- std::cout << "\t\t\tMENU\n";
- std::cout << "1. Calculate rectangle field.\n";
- std::cout << "2. Calculate rectangle perimeter.\n";
- std::cout << "3. Calculate circle field.\n";
- std::cout << "4. Calculate circle perimeter.\n";
- std::cout << "5. Exit\n";
- std::cin >> str;
- return str;
- }
- void executeOptions(std::string& selected)
- {
- double *a, *b;
- double *radious;
- double *pi;
- switch (selected[0])
- {
- case '1':
- a = new double;
- b = new double;
- std::cout << "Side A:\n";
- std::cin >> *a;
- std::cout << "Side B: \n";
- std::cin >> *b;
- std::cout << "Field of rectangle: " << calculateFieldRect(*a, *b) << "\n";
- drawRectangle(*a, *b);
- delete a;
- delete b;
- break;
- case '2':
- a = new double;
- b = new double;
- std::cout << "Side A:\n";
- std::cin >> *a;
- std::cout << "Side B: \n";
- std::cin >> *b;
- std::cout << "Perimeter of rectangle: " << calculatePerimeterRect(*a, *b) << "\n";
- drawRectangle(*a, *b);
- delete a;
- delete b;
- break;
- case '3':
- radious = new double;
- pi = new double;
- std::cout << "Radious: \n";
- std::cin >> *radious;
- std::cout << "Pi: (3.14)\n";
- std::cin >> *pi;
- std::cout << "Field of circle: " << calculateFieldCircle(*radious, *pi);
- drawCircle(*radious);
- delete radious;
- delete pi;
- break;
- case '4':
- radious = new double;
- pi = new double;
- std::cout << "Radious: \n";
- std::cin >> *radious;
- std::cout << "Pi: (3.14)\n";
- std::cin >> *pi;
- std::cout << "Perimeter of circle: " << calculatePerimeterCircle(*radious, *pi);
- drawCircle(*radious);
- delete radious;
- delete pi;
- break;
- case '5':
- exit(0);
- break;
- default:
- std::cout << "Error: Bad option selected, try again.\n";
- }
- }
- double calculateFieldRect(double & a, double & b)
- {
- return a*b;
- }
- double calculateFieldCircle(double & radious, double & pi)
- {
- return radious*radious * pi;
- }
- double calculatePerimeterRect(double & a, double & b)
- {
- return 2*a + 2*b;
- }
- double calculatePerimeterCircle(double & radious, double & pi)
- {
- return 2*pi*radious;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement