martes, 8 de septiembre de 2015

Test Itaú

Test Itaú



46182619-2


<?php

/*    Este fichero ha sido descargado desde:
   http://www.elrincondelc.com

 * calc.c:  Lame-brain Calculator -
 *
 *  For simplicity in parsing, this program
 *  reads lines of the form:
 *
 *      value operation
 *
 *  where the value is optional in some cases.
 *  For example, the following script computes
 *  the integer part of sqrt(1 + 3.4*3.4):
 * 
 *      3.4 =
 *      3.4 *
 *      1 +
 *      sqrt
 *      floor
 */

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>

#define LINSIZ 40

char *getline(char *);

main()
{
    double  reg = 0.0;
    char    line[LINSIZ];

    while (getline(line) != NULL)
    {
        char *op;
        double val;


        /* Parse command string */
        val = strtod(line,&op);
        while (isspace(*op))
            ++op;
        strupr(op);

        /* Perform operation */
        errno = 0;
        if (*op == '+')
            reg += val;
        else if (*op == '-')
            reg -= val;
        else if (*op == '*')
            reg *= val;
        else if (*op == '/')
        {
            if (val != 0)
                reg /= val;
            else
            {
                puts("ERROR>>> invalid divisor");
                continue;
            }
        }
        else if (*op == '=')
            reg = val;
        else if (*op == '^')
        {
            if (val == 0.0)
                reg = 1.0;
            else if (val == 0.5)
                reg = sqrt(reg);
            else
                reg = pow(reg,val);
        }
        else if (strncmp(op,"NEGATE",1) == 0)
            reg = -reg;
        else if (strncmp(op,"MOD",1) == 0)
        {
            if (val == 0.0)
            {
                puts("ERROR>>> invalid modulus");
                continue;
            }
            else
                reg = fmod(reg,val);
        }
        else if (strncmp(op,"CEIL",1) == 0)
            reg = ceil(reg);
        else if (strncmp(op,"FLOOR",1) == 0)
            reg = floor(reg);
        else if (strncmp(op,"ROUND",1) == 0)
            reg = (reg < 0.0) ? ceil(reg - 0.5)
                              : floor(reg + 0.5);
        else if (strncmp(op,"SQRT",1) == 0)
            reg = sqrt(reg);
        else if (strncmp(op,"QUIT",1) == 0)
            exit(0);
        else if (*op != '\0')
        {
            puts("ERROR>>> invalid operation");
            continue;
        }

        if (errno)
            perror("ERROR>>>");
        else
            printf("\t%s => %g\n",line,reg);
    }
    return 0;
}

char *getline(char *buf)
{
    fputs("Calc> ",stdout);
    fflush(stdout);
    return gets(buf);
}

/* Output:
Calc> 3.4 =
        3.4 = => 3.4
Calc> 3.4 *
        3.4 * => 11.56
Calc> 1 +
        1 + => 12.56
Calc> sqrt
        SQRT => 3.54401
Calc> round
        FLOOR => 3
Calc> q
*/

No hay comentarios:

Publicar un comentario