RSS

Category Archives: C++

area of Circle

#include <iostream>

using namespace std;

class Circle{
    private:
        double radius, area;
    public:
        Circle(double r){
            radius = r;
        }
        void setRadius(double r);
        double getRadius();
        double AreaOfCircle();

};

class Cylinder: public Circle{
    private:
        double height;
    public:
        Cylinder(double r,double h);
        double SArea();
        double Volume();
        void details();
};

void Circle::setRadius(double r){
    radius = r;
}
double Circle::getRadius(){
    return radius;
}
double Circle::AreaOfCircle(){
    area = 3.142 * radius * radius;
    return area;
}
Cylinder::Cylinder(double r,double h) : Circle(r){
    height = h;
}
double Cylinder::SArea(){
    double surface_area = 3.142 * 2 * getRadius()* height + AreaOfCircle();
    return surface_area;
}
double Cylinder::Volume(){
    double volume = AreaOfCircle() * height;
    return volume;
}
void Cylinder::details(){
    cout<<"Cylinder details: "<<endl;
    cout<<"Radius: "<<getRadius()<<endl;
    cout<<"Height: "<<height<<endl;
    cout<<"Area of circle: "<<AreaOfCircle()<<endl;
    cout<<"Surface Area: "<<SArea()<<endl;
    cout<<"Volume: "<<Volume()<<endl;

}
int main()
{
    Cylinder one(7, 10);
    one.details();
    return 0;
}


 
Leave a comment

Posted by on July 24, 2012 in C++

 

A look at operator overloading and alot of C++ stuff

Main.cpp

#include <iostream>
#include "Rational.h"
using namespace std;

int main()
{
    Rational half(1,2), two_thirds(2,3), four_fifths(4,5);
    Rational third(1,3), one(1,1), two(2,1);
    Rational answer;

    answer = third * half;
    answer.printRational();

    answer = half + four_fifths / two * (third + one); //does bodmas
    answer.printRational();

    (half + third).printRational();

    third.add(two).printRational();


    return 0;
}

The header:
Rational.h

#ifndef RATIONAL_H
#define RATIONAL_H


class Rational{
    public:
        Rational();
        Rational(int, int);
        //Operator overloading. This four are the main methods
        Rational operator+(Rational);
        Rational operator-(Rational);
        Rational operator*(Rational);
        Rational operator/(Rational);
        Rational operator()(Rational);

        //This others just call the four above
        Rational add(Rational);
        Rational Subtract(Rational);
        Rational multiply(Rational);
        Rational divide(Rational);
        Rational add(int, int);
        Rational Subtract(int, int);
        Rational multiply(int, int);
        Rational divide(int, int);
        //This are used within the methods
        void simplify();
        void printRational();
        void improper();
        int GCD(int, int);
    private:
    //a is the numerator and d the denominator. whole keeps the whole number part
        int a, b, whole;

};

#endif // RATIONAL_H

and the meat of the code:
Rational.cpp

#include "Rational.h"
#include <iostream>

using namespace std;

Rational::Rational()
{
    a = 0;
    b = 1;
    whole =0;
}
int Rational::GCD(int a, int b){
    if(a%b == 0)
        return b;
    else
        return GCD(b, a%b);
}
Rational::Rational(int x, int y){
    a = x;
    if(y != 0){
        b = y;
    }else{
        //Validation
        cout<<"Denominator cannot be zero";
        b =1;
    }
    whole=0;
    simplify();
}

void Rational::simplify(){
        //get the whole part of the fraction
        whole = a/b;
        //first get the greatest common divisor of the two
        int gcd = GCD(a , b);
        a = a%b;
        a = a / gcd; //numerator
        b = b / gcd; //denominator

}
void Rational::improper(){
    if(whole != 0)
        a = whole * b + a;
}

void Rational::printRational(){
    simplify();
    // if no whole number no need to print 0, if b is zero just print the whole part
    if(whole ==0 && a != 0)
        cout<<a<<"/"<<b<<endl;
    else if(a== 0)
        cout<<whole<<endl;
    else
        cout<<whole<<" "<<a<<"/"<<b<<endl;
}
//overloading the addition operator. An addition sign between two objects
//of Rational class will cause this method to be executed
Rational Rational::operator+(Rational frac){
    Rational obj; //Initialise an object from Rational class;
    improper(); //Change to improper fractions to get rid of the whole number part
    frac.improper();
    obj.b = b * frac.b;        // a/b + c/d = (ad + cb)/bd
    obj.a = a * frac.b + frac.a * b;

    return obj;  //return the object with its a and b values altered
}
Rational Rational::operator-(Rational frac){
    Rational obj; //Similar as above
    improper();
    frac.improper();
    obj.b = b * frac.b;  // a/b - c/d = (ad - bc)/bd
    obj.a = a * frac.b - frac.a * b;

    return obj;
}
Rational Rational::operator*(Rational frac){
    Rational obj;
    improper();
    frac.improper();
    obj.b = b * frac.b;  // a/b * c/d = ac/bd
    obj.a = a * frac.a;

    return obj;
}
Rational Rational::operator/(Rational frac){
    Rational obj;
    improper();
    frac.improper();
    obj.a = a * frac.b; //a/b / c/d = ad / bc
    obj.b = b * frac.a;

    return obj;
}
//Overloading the brackets will allow:
// third * (half + third)
Rational Rational::operator()(Rational frac){
    //the object pointed to by 'this'(thats this object) multiplied by another
    //object
    Rational obj = *this * frac; //the * has been overloaded

    return obj;
}
Rational Rational::multiply(Rational frac){
    Rational obj = *this /frac; //Using operator overloading use this object divided by frac and return the new object
    return obj;
}
Rational Rational::add(Rational frac){
    Rational obj = *this + frac;
    return obj;
}
Rational Rational::Subtract(Rational frac){
    Rational obj = *this - frac;
    return obj;
}
Rational Rational::divide(Rational frac){
    Rational obj = *this / frac;
    return obj;
}
Rational Rational::add(int x, int y){
    Rational obj,frac(x,y);
    obj = *this + frac;

    return obj;
}
Rational Rational::Subtract(int x, int y){
    Rational obj,frac(x,y);
    obj = *this - frac;

    return obj;
}
Rational Rational::multiply(int x, int y){
    Rational obj,frac(x,y);
    obj = *this * frac;

    return obj;
}
Rational Rational::divide(int x, int y){
    Rational obj,frac(x,y);
    obj = *this / frac;

    return obj;
}

 
Leave a comment

Posted by on July 23, 2012 in C++