Return to Snippet

Revision: 59472
at September 10, 2012 05:07 by OdnetninI


Initial Code
// Includes of the System
#include <stdio.h>
#include <inttypes.h>
#include <math.h>

// Float variables of numbers
float a = 0;
float b = 0;

// Float variable of result
float result = 0;

// Check Variable
uint8_t lastresult = 0;
uint8_t error = 0;

// Define PI
#define PI 3.14159265
#define RADIAN (PI/180)
#define GRADOS (180/PI)

/*
    Fuction AskNumbers
    Ask for the numbers
*/
void AskNumbers ()
{
    if (lastresult == 0 )
    {
        printf("Elige el primer Número: ");
        scanf("%f", &a);
        printf("Elige el segundo Número: ");
        scanf("%f", &b);
    }
    else if (lastresult == 1)
    {
        a = result;
        printf("Elige el segundo Número (El Primero es el Resultado anterior): ");
        scanf("%f", &b);
    }
    else if (lastresult == 2)
    {
        b = result;
        printf("Elige el Primer Número (El Segundo es el Resultado anterior): ");
        scanf("%f", &a);
    }
}

/*
    Fuction PrintfOptions
    Printf the Options
*/
void PrintfOptions ()
{
    printf("Basic Calculator by OdnetninI\n");
    printf("-----------------------------\n");
    printf(" 1. Suma\n");
    printf(" 2. Resta\n");
    printf(" 3. Multiplicación\n");
    printf(" 4. División\n");
    printf(" 5. Potencia\n");
    printf(" 6. Coseno\n");
    printf(" 7. Seno\n");
    printf(" 8. Tangente\n");
    printf(" 9. Logaritmo Base 10\n");
    printf("10. Raíz Cuadrada\n");
    printf("11. Grados a Radianes\n");
    printf("12. Radianes a Grados\n");
    printf("99. Salir\n");
    printf("-----------------------------\n");
}

/*
    Main
    Init point of System
*/
int main()
{
    // Temporal vairables
    uint8_t salir = 0;
    uint8_t opcion = 0;

    // Main While
    while(salir == 0)
    {
        // Printf the Options
        PrintfOptions();

        // Ask for the option
        printf("Elija su Opción: ");
        scanf("%d", &opcion);

        // Check if answer is correct
        if (opcion > 0 && opcion < 6)
            AskNumbers();

        else if (opcion >= 6 && opcion < 13)
        {
            if (lastresult == 0 )
            {
                printf("Elige el Número: ");
                scanf("%f", &a);
            }
            else
            {
                a = result;
            }
        }

        // Make the operation
        switch (opcion)
        {
            case 1:
                printf("%5.2f + %5.2f = %5.2f\n", a, b, a + b);
                result = a + b;
                break;

            case 2:
                printf("%5.2f - %5.2f = %5.2f\n", a, b, a - b);
                result = a - b;
                break;

            case 3:
                printf("%5.2f * %5.2f = %5.2f\n", a, b, a * b);
                result = a * b;
                break;

            case 4:
                printf("%5.2f / %5.2f = %5.2f\n", a, b, a / b);
                result = a / b;
                break;

            case 5:
                result = a;
                for (float i = 0; i < b-1; i++)
                    result *= a;
                printf("%5.2f ^ %5.2f = %5.2f\n", a, b, result);
                break;

            case 6:
                result = cos (a*PI/180);
                printf("cos(%5.2f) = %5.2f\n", a, result);
                break;

            case 7:
                result = sin (a*PI/180);
                printf("sin(%5.2f) = %5.2f\n", a, result);
                break;

            case 8:
                result = tan (a*PI/180);
                printf("tan(%5.2f) = %5.2f\n", a, result);
                break;

            case 9:
                result = log10 (a);
                printf("log10(%5.2f) = %5.2f\n", a, result);
                break;

            case 10:
                result = sqrt (a);
                printf("Raiz Cuadrada(%5.2f) = %5.2f\n", a, result);
                break;

            case 11:
                result = a * RADIAN;
                printf("%5.2f = %5.2f radianes\n", a, result);
                break;

            case 12:
                result = a * GRADOS;
                printf("%5.2f = %5.2f Grados\n", a, result);
                break;

            case 99:
                salir = 1;
                error = 1;
                return 0;
                break;

            default:
                printf("Operación Desconocida\n");
                error = 1;
                break;
        }

        // Ask for go out
        printf("¿Desea salir? [0:No, 1:Si]");
        scanf("%d", &opcion);

        // Check the answer
        if (opcion == 1)
            salir = 1;

        else
        {
            salir = 0;
            if (error == 0)
            {
                printf("¿Quieres conservar el resultado? [0:No, 1:Resultado es A, 2: Resultado es B]");
                scanf("%d", &opcion);
                if (opcion == 1) lastresult = 1;
                else if (opcion == 2) lastresult = 2;
                else lastresult = 0;
            }
            error = 0;
        }

        // New Line
        printf("\n");
    }

    // Exit of the program
    return 0;
}

Initial URL

                                

Initial Description
Two new fuctions and two bugs repaired

Initial Title
Calculator V 2.9

Initial Tags

                                

Initial Language
C