CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 6 of 6
  1. #1
    Join Date
    Jul 2011
    Posts
    5

    calculate dimensions of a circle in c++

    Code:
    #ifndef CIRCLE_H
    #define CIRCLE_H
    
    class Circle {
    public:
      //constructors
      Circle();
      Circle(double r);
      //setter
      void setRadius(double r);
      //getter
      double getRadius();
      //calculate the diameter of a circle
      double computeDiameter()const;
      //calculate the area of a circle
      double computeArea()const;
      //calculate the Circumference of a circle
      double computeCircumference()const;
      //checks if radius of circle is bigger
      **bool isBigger(const Circle& other) const;**
    
    private:
      //private data members
      double m_Radius;
    };
    
    #endif // CIRCLE_H
    
    
    
    #include "circle.h"
    #include "math.h"
    #include <iostream>
    #include <QString>
    #include <sstream>
    using namespace std;
    
    Circle::Circle()
    {
      m_Radius =  0;
    }
    
    Circle::Circle(double r)
    {
      m_Radius = r;
    }
    
    void Circle::setRadius(double r){
        m_Radius = r ;
    }
    
    double Circle::getRadius(){
        return m_Radius;
    }
    
    double Circle::computeDiameter()const{
        return 2* m_Radius;
    }
    
    double Circle::computeArea()const {
        return ( m_Radius* m_Radius*M_PI);
    }
    
    double Circle::computeCircumference()const {
        return (2* m_Radius*M_PI);
    }
    
    
    #include <iostream>
    #include <QTextStream>
    #include "circle.h"
    using namespace std;
    
    int main(){
        QTextStream cout(stdout);
    
        Circle c1,c2;     // input
        c1.setRadius(3);
        c2.setRadius(7);
    
        cout << "Circle with radius " << c1.getRadius() << " has: " << endl;
        cout<< "Diameter " << c1.computeDiameter() << " cm " <<endl;
        cout<< "Area " << c1.computeArea() << " cm" <<endl;
        cout<< "Circumference " << c1.computeCircumference()<< " cm " <<endl<<endl;
    
        cout << "Circle with radius " << c2.getRadius() << " has: " << endl;
        cout<< "Diameter " << c2.computeDiameter() << " cm " <<endl;
        cout<< "Area " << c2.computeArea() << " cm" <<endl;
        cout<< "Circumference " << c2.computeCircumference()<< " cm " <<endl<<endl;
    
    return 0;
    }
    The function isBigger() returns true (or false) if the radius of the Circle instance on which the function is invoked is bigger (or smaller) than the radius of the Circle instance passed to the function.: Can someone help me to implement this function?
    Last edited by annitaz; July 4th, 2013 at 03:48 AM.

  2. #2
    Join Date
    May 2001
    Location
    Germany
    Posts
    1,158

    Re: calculate dimensions of a circle in c++

    First of all, please use code tags when posting source code.

    Then, never place a "using" directive in a header file. For a discussion, see this link: http://stackoverflow.com/questions/5...e-in-c-headers

    What is your problem with the isBigger function? It is quite forward to implement.

  3. #3
    Join Date
    Jul 2011
    Posts
    5

    Re: calculate dimensions of a circle in c++

    I added this code in main

    [code]if(c1.isBigger(c2))
    cout << "circle 1 is bigger" << endl;
    else
    cout << "circle 2 is bigger" << endl;[\code]


    and it works. What do u think? The function is:

    [code]bool Circle::isBigger(const Circle& other) const {
    return m_Radius > other.m_Radius;
    }[\code]

  4. #4
    Join Date
    Jul 2011
    Posts
    5

    Re: calculate dimensions of a circle in c++

    I added this code in main

    Code:
    if(c1.isBigger(c2))
    	      cout << "circle 1 is bigger"  << endl;
    	    else
    	      cout << "circle 2 is bigger"  << endl;

    and it works. What do u think? The function is:

    Code:
    bool Circle::isBigger(const Circle& other) const {
    	    return m_Radius > other.m_Radius;
    	}

  5. #5
    Join Date
    May 2001
    Location
    Germany
    Posts
    1,158

    Re: calculate dimensions of a circle in c++

    Yes, that's what I was thinking of, but didn't want to post because it is so simple.

  6. #6
    2kaud's Avatar
    2kaud is offline Super Moderator Power Poster
    Join Date
    Dec 2012
    Location
    England
    Posts
    7,822

    Re: calculate dimensions of a circle in c++

    1) There is no need to have two constructors in this case. Just have one with a default argument of 0.

    2) getRadius should be const as it only returns a value

    3) isBigger would usually be implemented via overloading the > operator. Also the <, == and != operators would also be overloaded allowing statements like c1 > c2 and c2 != c1. A possible way of doing this is

    Code:
    #include <iostream>
    using namespace std;
    
    const double M_PI = 3.1416;
    
    class Circle {
    public:
    
    	//constructors
    	Circle(double r = 0);
    
    	//setter
    	void setRadius(double r);
    
    	//getter
    	double getRadius() const;
    
    	//calculate the diameter of a circle
    	double computeDiameter() const;
    
    	//calculate the area of a circle
    	double computeArea() const;
    
    	//calculate the Circumference of a circle
    	double computeCircumference() const;
    
    	//checks if radius of circle is bigger
    	bool isBigger(const Circle& other) const;
    
    	//operator overloads
    	bool operator> (const Circle& other) const;
    	bool operator< (const Circle& other) const;
    	bool operator== (const Circle& other) const;
    	bool operator!= (const Circle& other) const;
    
    private:
    	//private data members
    	double m_Radius;
    };
    
    Circle::Circle(double r)
    {
    	m_Radius =  r;
    }
    
    void Circle::setRadius(double r)
    {
    	m_Radius = r ;
    }
    
    double Circle::getRadius() const
    {
        return m_Radius;
    }
    
    double Circle::computeDiameter() const
    {
    	return 2 * m_Radius;
    }
    
    double Circle::computeArea() const 
    {
    	return m_Radius * m_Radius * M_PI;
    }
    
    double Circle::computeCircumference() const 
    {
    	return 2 * m_Radius * M_PI;
    }
    
    bool Circle::isBigger(const Circle& other) const
    {
    	    return m_Radius > other.m_Radius;
    }
    
    
    bool Circle::operator >(const Circle& other) const
    {
    	return m_Radius > other.m_Radius;
    }
    
    bool Circle::operator <(const Circle& other) const
    {
    	return m_Radius < other.m_Radius;
    }
    
    bool Circle::operator ==(const Circle& other) const
    {
    	return m_Radius == other.m_Radius;
    }
    
    bool Circle::operator !=(const Circle& other) const
    {
    	return m_Radius != other.m_Radius;
    }
    
    int main(){
    Circle c1,c2;     // input
    
    	c1.setRadius(3);
    	c2.setRadius(7);
    
    	cout << "Circle with radius " << c1.getRadius() << " has: " << endl;
    	cout<< "Diameter " << c1.computeDiameter() << " cm " << endl;
    	cout<< "Area " << c1.computeArea() << " cm" << endl;
    	cout<< "Circumference " << c1.computeCircumference()<< " cm " << endl << endl;
    
    	cout << "Circle with radius " << c2.getRadius() << " has: " << endl;
    	cout << "Diameter " << c2.computeDiameter() << " cm " <<endl;
    	cout << "Area " << c2.computeArea() << " cm" <<endl;
    	cout << "Circumference " << c2.computeCircumference() << " cm " << endl << endl;
    
    	if (c1.isBigger(c2))
    		cout << "circle 1 is bigger"  << endl;
    	else
    		cout << "circle 2 is bigger"  << endl;
    
    	if (c1 < c2) 
    		cout << "circle 2 is bigger"  << endl;
    	else
    		cout << "circle 1 is bigger"  << endl;
    
    	if (c1 != c2) 
    		cout << "circle 1 is not equal to c2"  << endl;
    	else
    		cout << "circle 1 is equal to c2"  << endl;
    
    	return 0;
    }
    All advice is offered in good faith only. All my code is tested (unless stated explicitly otherwise) with the latest version of Microsoft Visual Studio (using the supported features of the latest standard) and is offered as examples only - not as production quality. I cannot offer advice regarding any other c/c++ compiler/IDE or incompatibilities with VS. You are ultimately responsible for the effects of your programs and the integrity of the machines they run on. Anything I post, code snippets, advice, etc is licensed as Public Domain https://creativecommons.org/publicdomain/zero/1.0/ and can be used without reference or acknowledgement. Also note that I only provide advice and guidance via the forums - and not via private messages!

    C++23 Compiler: Microsoft VS2022 (17.6.5)

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured