All pastes #2047965 Raw Edit

Mine

public text v1 · immutable
#2047965 ·published 2011-04-18 23:07 UTC
rendered paste body
#include <stdio.h>
#include <math.h> //I had to google to learn about this header. It handles basic math operations.. I think. I'll try it.
//This will be my attempt at making a menu-based program.
//It will resemble a TI-BASIC program because that's all I know.
//Here we go!

const float pi = 3.14159265;

float AoC(float); //Area of a circle with a given radius
float CoC(float); //Circumference of a circle with a given radius
float RadiusFromArea(float); //Self explanatory
float RadiusFromCirc(float); //Radius of a circle with a given circumference
float AreaFromCirc(float); //Area of a circle with a given circumference
float CircFromArea(float); //Circumference of a circle with a given area


int main(void)
{
    int x;
//I'd like it to be a habit to separate variable declarations from statements.
    Main: //I know it is bad practice to use labels, but I don't know how else to do this. I will learn one day!
    printf("This program will try to solve for various parameters of \n of a circle depending on what is known. \n\n1. Radius is known, calculate Area. \n2. Radius is known, calculate Circumference.\n");
    printf("3. Area is known, solve for Radius. \n4. Circumference is known, solve for Radius. \n5. Area is known, solve for circumference. \n6. Circumference is known, solve for Area.\nMenu choice: ");
    scanf("%d", &x);

/* Here is an interesting little guy. switch. Syntax is the following:

    (declare variable, MUST BE INT)
    (display menu with several options)
    (prompt input for same variable)
    switch(variable)
    {
        case x: (colon is needed)
        {
            code goes here
            ends with
            break;
        }
        case x + 1...
        ...
        default: [this handles erroneous input or inputs that are out of the scope of the menu (in case someone is a smartass. LOOKING AT YOU ADRIAN.) ]
        {
          some sort of error handling and a throwback to the original menu
        }
    }
    rest of program
    */

    switch(x)
    {
        case 1:
        {
            float radius;
            float Area;

            printf("\nInput radius: ");
            scanf("%f",&radius); //scanf needs a %f now since radius is a floating point number. Oh! reminder. it is &variable because you are writing a value to the address of the variable.
            Area = AoC(radius);
            printf("The area is: %f", Area);
            break;
        }

        case 2:
        {
            float radius;
            float Circ;

            printf("\nInput radius: ");
            scanf("%f", &radius);
            Circ = CoC(radius);
            printf("The circumference is: %f", Circ);
            break;
        }

        case 3:
        {
            float Area;
            float RfA; //radius of a circle with a given area

            printf("\nInput Area: ");
            scanf("%f", &Area);
            RfA = RadiusFromArea(Area);
            printf("The radius is: %f", RfA);
            break;
        }

        case 4:
        {
            float Circ; //Circumference
            float RfC; //Radius of a circle with a given circumference

            printf("\nInput Circumference: ");
            scanf("%f", &Circ);
            RfC = RadiusFromCirc(Circ);
            printf("The radius is: %f", RfC);
            break;
        }

        case 5:
        {
            float Area;
            float CfA; //Circumference of a circle with a given area

            printf("\nInput Area: ");
            scanf("%f", &Area);
            CfA = CircFromArea(Area);
            printf("The circumference is: %f", CfA);
            break;
        }

        case 6:
        {
            float Circ; //Circumference
            float AfC; //Area of circle

            printf("\nInput Circumference: ");
            scanf("%f", &Circ);
            AfC = AreaFromCirc(Circ);
            printf("The area is: %f", AfC);
            break;
        }

        default:
        {
            printf("\nThat isn't a fucking menu option you nigger.\n\n"); //WELL IT ISN'T.
            goto Main;
            break;
        }
    }
    return 0;
}

//Tharr be functions ahead. This is where I define them I guess
float AoC(float radius) //Area of circle
{
    return pi*radius*radius;
}

float CoC(float radius) //Circumference of circle
{
    return 2*pi*radius;
}

//This next one is what required the math header. Square root, apparently, is not included in stdio.h. No big deal.
//For reference, the syntax is sqrt(x), where x is the number you wish to find the square root of
float RadiusFromArea(float Area)
{
    return sqrt(Area/pi);
}

float RadiusFromCirc(float Circ)
{
    return (Circ/(2*pi));
}

//I learned how to use another function! pow(x, y) = x raised to the y power. The more you know!
float AreaFromCirc(float Circ)
{
        return pow(pi*(Circ/(2*pi)), 2);
}


//Another instance of the sqrt function.
float CircFromArea(float Area)
{
    return (2*(sqrt(Area/pi)*pi));
}