Código de un programa en C++ de una Calculadora Cientifíca

Código de un programa en C++ de una calculadora Científica:Calculadora Cientifica quice85

Guarden lo con cualquier nombre esta bien claro con la extensión de cpp espero que les sirva de algo este pequeño programa en c++:

#include <string.h>
#include <ctype.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <dos.h>
#include <conio.h>
#include <stdio.h>

#define tamano 100

void pushoper(char item[], char rango[], char etiqueta[]);            /*pila*/
void popoper(char item[], char rango[], char etiqueta[]);

/*pila||cola : pila por arriba..., cola por abajo...*/
void pushtemp(char como[], char item[], char rango[], char etiqueta[]);
void poptemp(char como[], char item[], char rango[], char etiqueta[]);

void pushsufija(char item[], char rango[], char etiqueta[]);        /*cola*/
void popsufija(char item[], char rango[], char etiqueta[]);

void pushval(double v);                                           /*pila*/
void popval(double *v);

void clear(void); /*pilas y colas*/
void clvar(void); /*variables*/

void explora(char expresion[]);
void acomodar(void);                /*En forma polaca inversa*/

void evalua(void);

void signo(void);
void potencia(void);
void xrooty(void);
void logneperiano(void);
void logbriggs(void);
void antlogneperiano(void);
void antlogbriggs(void);
void seno(void);
void coseno(void);
void tangente(void);
void arcoseno(void);
void arcocoseno(void);
void arcotangente(void);
void raiz(void);
void cuadrado(void);
void inv(void);
void factorial(void);
void absoluto(void);
void multiplicacion(void);
void division(void);
void suma(void);
void resta(void);
void asignacion(void);

void pantalla(void);
void teclas(char mensaje[], char col, char ren, char espacio);
void centrar(char mensaje[], char ren);
void mensaje(char cadena[]);
void marco(char x1, char y1, char x2, char y2);
void marco2(char x1, char y1, char x2, char y2);
void raton(int ax, int bx, int cx, int dx);
void ratonh(int ah,int al,int bh,int bl,int ch,int cl,int dh,int dl);
void tc(char color);
void tb(char color);
void registros(void);
void ventana(void);
void ventana_mens(void);

struct pila_cola {
                        char token[25];        /* espacios para n£mero £ operador */
                        char priority[15];
                        char type[15];
                      } oper [tamano], temp [tamano], sufija [tamano];

struct varia {
                  char nombre[25];
                  double valor;
                 } variable [tamano];

double valores[tamano], x=0.0, y=0.0, resultado=0.0, ans=0.0,
         pi=3.141592653589793238462643;

int topoper=-1,toptemp=-1,topsufija=-1,puntsufija=-1,
     topcopia=-1,topvariable=-1,topval=-1;

char formula[127]="",tempcad[127]="", elemento[25], prioridad[15], 
      tipo[15], finderecha='', angulo='g', asigna[25], *tokens [][50] =
{
 "þ"        ,    "0"    ,    "utiler¡a" ,

 "("        ,    "1"    ,    "izquierdo" ,
 "["        ,    "1"    ,    "izquierdo" ,
 "{"        ,    "1"    ,    "izquierdo" ,

 ")"        ,    "1"    ,    "derecho" ,
 "]"        ,    "1"    ,    "derecho" ,
 "}"        ,    "1"    ,    "derecho" ,

 "ñ"        ,    "2"    ,    "unitario" ,            /* signo menos [Alt-241] */

 "^"        ,    "3"    ,    "binario" ,                /* potencia [Alt-94] */
 "©"        ,    "3"    ,    "binario" ,                /* raiz universal [Alt-169] */
 "LN"        ,    "3"    ,    "unitario" ,
 "LOG"    ,    "3"     ,    "unitario" ,            /* logaritmo base 10 */
 "EXP"    ,    "3"    ,    "unitario" ,            /* antilogaritmo natural */
 "ALOG"    ,    "3"    ,    "unitario",                /* antilogaritmo base 10 */
 "SEN"    ,    "3"    ,    "unitario" ,
 "COS"    ,    "3"    ,    "unitario" ,
 "TAN"    ,    "3"    ,    "unitario" ,
 "ASEN"    ,    "3"    ,    "unitario" ,
 "ACOS"    ,    "3"    ,    "unitario" ,
 "ATAN"    ,    "3"    ,    "unitario" ,
 "RAIZ"    ,    "3"    ,    "unitario" ,
 "CUAD"    ,    "3"    ,    "unitario" ,
 "INV"    ,    "3"    ,    "unitario" ,
 "!"        ,    "3"    ,    "unitario" ,
 "ABS"    ,    "3"    ,    "unitario" ,

 "*"        ,    "4"    ,    "binario" ,
 "/"        ,    "4"    ,    "binario" ,

 "+"        ,    "5"    ,    "binario" ,
 "-"        ,    "5"    ,    "binario" ,

 "="        ,    "6"    ,    "binario"
};

union REGS E, S, izq, der, pos, posR;  /* Entrada Salida : de los Registros... */

/*úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúPRINCIPALúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú*/
void main(void) {
    int L,i,cont,parentesis;
    char op=1, ban=0, caden[127]="", borrar=0, color;

    raton(0,0,0,0);    /* restablecer y obtener el ESTADO del rat¢n... */
    if (S.x.ax==0) { printf("\nRat¢n NO Disponible\n");
        getch();
        exit(1);
    }
    tb(0);tc(9);clrscr();
    centrar("CALCULADORA CIETIFICA",1);
    pantalla();

    raton(7,0,16,616);    /*fijar los l¡mites HORIZONTALES */
    raton(8,0,88,176);    /*fijar los l¡mites VERTICALES */
    raton(4,0,316,132);     /*fijar la POSICIàN del apuntador del rat¢n*/
    raton(1,0,0,0);        /*MOSTRAR*/
    raton(26,256,256,3);       /*fijar SENSIBILIDAD en decimal...*/
    /*raton(27,0,0,0);*/    /*devuelve sensibilidad en hexadecimal...*/
    /*gotoxy(1,1);registros();*/

    ventana();clrscr();/*Para establecer color en RESULTADO*/
/*    window(1,1,10,3);tc(3);tb(0);clrscr();  Para establecer color en esq izq*/
    ventana_mens();clrscr();/*Para establecer color en mensajes*/
    clear(); /*BORRA LAS PILAS, LA COLA Y VARIABLES*/

    while (op) {
        raton(5,0,0,0);    /*informaci¢n sobrre el  bot¢n IZQUIERDO*/
        izq=S;
        raton(5,1,0,0);   /*informaci¢n sobre el bot¢n DERECHO*/
        der=S;
        posR=pos;
        raton(3,0,0,0);    /*posici¢n y estado del BOTON*/
        pos=S;

        if ((posR.x.cx!=pos.x.cx||posR.x.dx!=pos.x.dx)&&(borrar)) {
            ventana();clrscr();borrar=0;
        }
        if (izq.x.bx > 0 || der.x.bx > 0) {
            while ( izq.x.bx >= 1) {
                ban=1;
                izq.x.bx--;
            }
            while ( der.x.bx >= 1) {
                ban=1;
                der.x.bx--;
            }
        }
        else ban=0;

        ventana_mens();
        if ( (pos.x.cx >= 16 && pos.x.cx <= 64) &&
              (pos.x.dx >= 160 && pos.x.dx <= 176) ) {
                mensaje("úúúADIOSúúú");delay(1000);
                break;
              }
        if ( (pos.x.cx >=16  && pos.x.cx <=64 ) &&
              (pos.x.dx >=88  && pos.x.dx <=104 ) )
            {
              mensaje("RESULTADO ANTERIOR");
       if (ban) {
                    ventana();
                    strcat(formula,"Ans");
                    printf("%s",formula);
                }
              continue;
            }
        if ( (pos.x.cx >=16  && pos.x.cx <=64 ) &&
              (pos.x.dx >=112  && pos.x.dx <=128 ) )
            {
              mensaje("ESPACIO");
              if (ban) {
                    ventana();
                    strcat(formula," ");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=16  && pos.x.cx <=64 ) &&
              (pos.x.dx >=136  && pos.x.dx <=152 ) )
            {
              mensaje("GRADOS / RADIANES");
              if (ban) {
                    if (angulo=='g') {
                        angulo='r';
                        clreol();printf("RADIANES");
                    }
                    else {
                        angulo='g';
                        clreol();printf("GRADOS");
                    }
              }
              continue;
            }
        if ( (pos.x.cx >=80  && pos.x.cx <=128 ) &&
              (pos.x.dx >=88  && pos.x.dx <=104 ) )
            {
              mensaje("LOGARITMO NATURAL");
       if (ban) {
                    ventana();
                    strcat(formula,"Ln");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=80  && pos.x.cx <=128 ) &&
              (pos.x.dx >=112  && pos.x.dx <=128 ) )
            {
              mensaje("LOGARITMO BRIGGS");
       if (ban) {
                    ventana();
                    strcat(formula,"Log");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=80 && pos.x.cx <= 128 ) &&
              (pos.x.dx >= 136 && pos.x.dx <= 152 ) )
            {
              mensaje("SENO");
       if (ban) {
                    ventana();
                    strcat(formula,"Sen");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=80  && pos.x.cx <=128 ) &&
              (pos.x.dx >=160  && pos.x.dx <=176 ) )
            {
              mensaje("ARCO SENO");
       if (ban) {
                    ventana();
                    strcat(formula,"Asen");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=136  && pos.x.cx <=184 ) &&
              (pos.x.dx >=88  && pos.x.dx <=104 ) )
            {
              mensaje("EXPONENCIAL [ e ]");
       if (ban) {
                    ventana();
                    strcat(formula,"Exp");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=136  && pos.x.cx <=184 ) &&
              (pos.x.dx >=112  && pos.x.dx <=128 ) )
            {
              mensaje("ANTILOGARITMO BRIGGS");
       if (ban) {
                    ventana();
                    strcat(formula,"Alog");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=136  && pos.x.cx <=184 ) &&
              (pos.x.dx >=136  && pos.x.dx <=152 ) )
            {
              mensaje("COSENO");
       if (ban) {
                    ventana();
                    strcat(formula,"Cos");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=136  && pos.x.cx <=184 ) &&
              (pos.x.dx >=160  && pos.x.dx <=176 ) )
            {
              mensaje("ARCO COSENO");
       if (ban) {
                    ventana();
                    strcat(formula,"Acos");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=192  && pos.x.cx <=240 ) &&
              (pos.x.dx >=88  && pos.x.dx <=104 ) )
            {
              mensaje("ELEVACIàN AL CUADRADO");
       if (ban) {
                    ventana();
                    strcat(formula,"CUAD");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=192  && pos.x.cx <=240 ) &&
              (pos.x.dx >=112  && pos.x.dx <=128 ) )
            {
              mensaje("RAIZ CUADRADA");
       if (ban) {
                    ventana();
                    strcat(formula,"RAIZ");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=192  && pos.x.cx <=240 ) &&
              (pos.x.dx >=136  && pos.x.dx <=152 ) )
            {
              mensaje("TANGENTE");
       if (ban) {
                    ventana();
                    strcat(formula,"Tan");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=192  && pos.x.cx <=240 ) &&
              (pos.x.dx >=160  && pos.x.dx <=176 ) )
            {
              mensaje("ARCO TANGENTE");
       if (ban) {
                    ventana();
                    strcat(formula,"Atan");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=256  && pos.x.cx <=288 ) &&
              (pos.x.dx >=88  && pos.x.dx <=104 ) )
            {
              mensaje("NUMERO SIETE");
       if (ban) {
                    ventana();
                    strcat(formula,"7");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=256  && pos.x.cx <=288 ) &&
              (pos.x.dx >=112  && pos.x.dx <=128 ) )
            {
              mensaje("NUMERO CUATRO");
       if (ban) {
                    ventana();
                    strcat(formula,"4");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=256  && pos.x.cx <=288 ) &&
              (pos.x.dx >=136  && pos.x.dx <=152 ) )
            {
              mensaje("NUMERO UNO");
        if (ban) {
                    ventana();
                    strcat(formula,"1");
                    printf("%s",formula);
                }
        continue;
            }
        if ( (pos.x.cx >=256  && pos.x.cx <=288 ) &&
              (pos.x.dx >=160  && pos.x.dx <=176 ) )
            {
              mensaje("NéMERO CERO");
              if (ban) {
                    ventana();
                    strcat(formula,"0");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=296  && pos.x.cx <=328 ) &&
              (pos.x.dx >=88  && pos.x.dx <=104 ) )
            {
              mensaje("NéMERO OCHO");
       if (ban) {
                    ventana();
                    strcat(formula,"8");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=296  && pos.x.cx <=328 ) &&
              (pos.x.dx >=112  && pos.x.dx <=128 ) )
            {
              mensaje("NéMERO CINCO");
       if (ban) {
                    ventana();
                    strcat(formula,"5");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=296  && pos.x.cx <=328 ) &&
              (pos.x.dx >=136  && pos.x.dx <=152 ) )
            {
              mensaje("NéMERO DOS");
       if (ban) {
                    ventana();
                    strcat(formula,"2");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=296  && pos.x.cx <=328 ) &&
              (pos.x.dx >=160  && pos.x.dx <=176 ) )
            {
              mensaje("PUNTO DECIMAL");
       if (ban) {
                    ventana();
                    strcat(formula,".");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=336  && pos.x.cx <=368 ) &&
              (pos.x.dx >=88  && pos.x.dx <=104 ) )
            {
              mensaje("NéMERO NUEVE");
       if (ban) {
                    ventana();
                    strcat(formula,"9");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=336  && pos.x.cx <=368 ) &&
              (pos.x.dx >=112  && pos.x.dx <=128 ) )
            {
              mensaje("NéMERO SEIS");
       if (ban) {
                    ventana();
                    strcat(formula,"6");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=336  && pos.x.cx <=368 ) &&
              (pos.x.dx >=136  && pos.x.dx <=152 ) )
            {
              mensaje("NéMERO TRES");
       if (ban) {
                    ventana();
                    strcat(formula,"3");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=336  && pos.x.cx <=368 ) &&
              (pos.x.dx >=160  && pos.x.dx <=176 ) )
            {
              mensaje("EXPONENTE");
       if (ban) {
                    ventana();
                    strcat(formula,"E");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=384  && pos.x.cx <=416 ) &&
              (pos.x.dx >=88  && pos.x.dx <=104 ) )
            {
              mensaje("BORRAR TODO");
       if (ban) {
                    ventana();
                    gotoxy(1,wherey());clreol();
                    strcpy(formula,tempcad);
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=384  && pos.x.cx <=416 ) &&
              (pos.x.dx >=112  && pos.x.dx <=128 ) )
            {
              mensaje("MULTIPLICACIàN");
       if (ban) {
                    ventana();
                    strcat(formula,"*");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=384  && pos.x.cx <=416 ) &&
              (pos.x.dx >=136  && pos.x.dx <=152 ) )
            {
              mensaje("SUMA");
           if (ban) {
                    ventana();
                    strcat(formula,"+");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=384  && pos.x.cx <=416 ) && 
              (pos.x.dx >=160  && pos.x.dx <=176 ) )
            {
              mensaje("SIGNO MENOS");
           if (ban) {
                    ventana();
                    strcat(formula,"ñ");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=424  && pos.x.cx <=456 ) && 
              (pos.x.dx >=88  && pos.x.dx <=104 ) )
            {
              mensaje("BORRAR UN CARACTER");
              if (ban) {
                    ventana();
                    if ( strlen(formula)>0) {
                        formula[strlen(formula)-1]='';
                        gotoxy(wherex()-1,wherey());clreol();
                        printf("%s",formula);
                    }
                }
                continue;
            }
        if ( (pos.x.cx >=424  && pos.x.cx <=456 ) && 
              (pos.x.dx >=112  && pos.x.dx <=128 ) )
            {
              mensaje("DIVISIàN");
           if (ban) {
                    ventana();
                    strcat(formula,"/");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=424  && pos.x.cx <=456 ) && 
              (pos.x.dx >=136  && pos.x.dx <=152 ) )
            {
              mensaje("RESTA");
           if (ban) {
                    ventana();
                    strcat(formula,"-");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=424  && pos.x.cx <=456 ) && 
              (pos.x.dx >=160  && pos.x.dx <=176 ) )
            {
              mensaje("CONSTANTE Pi");
           if (ban) {
                    ventana();
                    strcat(formula,"Pi");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=488  && pos.x.cx <=536 ) && 
              (pos.x.dx >=88  && pos.x.dx <=104 ) )
            {
              mensaje("POTENCIA");
           if (ban) {
                    ventana();
                    strcat(formula,"^");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=488  && pos.x.cx <=536 ) && 
              (pos.x.dx >=112  && pos.x.dx <=128 ) )
            {
              mensaje("PARNTESIS IZQUIERDO");
           if (ban) {
                    ventana();
                    strcat(formula,"( ");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=488  && pos.x.cx <=536 ) && 
              (pos.x.dx >=136  && pos.x.dx <=152 ) )
            {
              mensaje("INVERSO");
           if (ban) {
                    ventana();
                    strcat(formula,"Inv");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=488  && pos.x.cx <=536 ) && 
              (pos.x.dx >=160  && pos.x.dx <=176 ) )
            {
              mensaje("FACTORIAL");
           if (ban) {
                    ventana();
                    strcat(formula,"!");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=552  && pos.x.cx <=600 ) && 
              (pos.x.dx >=88  && pos.x.dx <=104 ) )
            {
              mensaje("RAÖZ UNIVERSAL [ XrootY ]");
           if (ban) {
                    ventana();
                    strcat(formula,"©");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=552  && pos.x.cx <=600 ) && 
              (pos.x.dx >=112  && pos.x.dx <=128 ) )
            {
              mensaje("PARNTESIS DERECHO");
           if (ban) {
                    ventana();
                    strcat(formula," )");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=552  && pos.x.cx <=600 ) && 
              (pos.x.dx >=136  && pos.x.dx <=152 ) )
            {
              mensaje("VALOR ABSOLUTO");
           if (ban) {
                    ventana();
                    strcat(formula,"Abs");
                    printf("%s",formula);
                }
                continue;
            }
        if ( (pos.x.cx >=544  && pos.x.cx <=616 ) && 
              (pos.x.dx >=160  && pos.x.dx <=176 ) )
            {
              mensaje("EVALUAR EXPRESIàN");
              if ((ban)&&(strlen(formula)>0)) {
                    ventana();
                    printf("%s",formula);
               strcpy(caden,tempcad);
                    parentesis=0;
                    L=strlen(formula);

                    for( i=0 ; i<L; i++ )
                    if ((formula[i]=='(')||(formula[i]=='{')||(formula[i]=='[')) parentesis++;
                    else if ((formula[i]==')')||(formula[i]=='}')||(formula[i]==']')) parentesis--;

                    if (parentesis!=0)
                     {
                          printf("\n   Error : Los par‚ntesis no est n balanceados, verificar f¢rmula...\n");
                        clear();
                        printf("%s",formula);
                        continue;
                     }

                    cont=-1;
                    for( i=0 ; i<L; i++ )
                         {
                            if (  (formula[i]!='')&&( (isalnum(formula[i])!=0)
                                    ||(formula[i]=='(')||(formula[i]==')')
                                    ||(formula[i]=='{')||(formula[i]=='}')
                                    ||(formula[i]=='[')||(formula[i]==']')
                                    ||(formula[i]=='ñ')||(formula[i]=='^')
                                    ||(formula[i]=='©')||(formula[i]=='=')
                                    ||(formula[i]=='!')||(formula[i]=='.')
                                    ||(formula[i]=='*')||(formula[i]=='/')
                                    ||(formula[i]=='+')||(formula[i]=='-') ) )
                                {
                                     cont++;
                                    caden[cont]=formula[i];
                                    caden[cont+1]='';
                                } 
                        } 
                    strcpy(formula,caden);

                    strupr(formula); 

                    explora(formula); /*Traduce la forma infija a la forma polaca postfija(sufija)*/
                    tc(15);clreol();printf("\n Forma Polaca :");
                    color=9;
                    while (topsufija>-1&&puntsufija<=topsufija)
                        {
                            popsufija(elemento,prioridad,tipo);
                            if (color==8) color=9;
                            if (color==16) color=1;
                            tc(color);clreol();printf("   %s",elemento);
                     color++;
                        }
                    evalua();           /*Evalua la forma sufija (almacenada en la cola sufija)*/
                    tc(15);clreol();printf("\n =  %20.12G\n",resultado);
                    clear();
                    strcpy(formula,tempcad); /* Restablece formula : "" */
                    borrar=1;
              } 
                continue;
            }
        else mensaje("");
    } /*while (op) */

    raton(2,0,0,0);     /*OCULTAR*/
    /*registros();*/
    window(1,1,80,25);
    clrscr();
}

/*úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúFUNCIONESúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú*/

void ventana(void) {
    window(1,3,80,9);tc(14);tb(0);
}

void ventana_mens(void) {
    window(1,25,80,25);tc(14);tb(0); 
}  

void raton(int ax, int bx, int cx, int dx) {
    E.x.ax=ax;
    E.x.bx=bx;
    E.x.cx=cx;
    E.x.dx=dx;
    int86(0x33,&E,&S);
}

void ratonh(int ah,int al,int bh,int bl,int ch,int cl,int dh,int dl) {
    E.h.ah=ah;
    E.h.al=al;
    E.h.bh=bh;
    E.h.bl=bl;
    E.h.ch=ch;
    E.h.cl=cl;
    E.h.dh=dh;
     E.h.dl=dl;
    int86(0x33,&E,&S);
}

void registros(void) {
    printf("Registros : Ax %X   ||   Bx %X   ||   Cx %X   ||   Dx %X\n",
                S.x.ax,S.x.bx,S.x.cx,S.x.dx);
    getch();
}

void tc(char color){
    textcolor(color);
}

void tb(char color){
    textbackground(color);
}

void marco(char x1, char y1, char x2, char y2) {
    char cont;
    gotoxy(x1,y1); printf("Ú");
    gotoxy(x2,y1); printf("¿");
    gotoxy(x2,y2); printf("Ù");
    gotoxy(x1,y2); printf("À");
    for (cont=x1+1;cont<=x2-1;cont++) {
        gotoxy(cont,y1); printf("Ä");
        gotoxy(cont,y2); printf("Ä");
    }
    for (cont=y1+1;cont<=y2-1;cont++) {
        gotoxy(x1,cont); printf("³");
        gotoxy(x2,cont); printf("³");
    }
}

void marco2(char x1, char y1, char x2, char y2) {
    char cont;
    gotoxy(x1,y1); printf("É");
    gotoxy(x2,y1); printf("»");
    gotoxy(x2,y2); printf("¼");
    gotoxy(x1,y2); printf("È");
    for (cont=x1+1;cont<=x2-1;cont++) {
        gotoxy(cont,y1); printf("Í");
        gotoxy(cont,y2); printf("Í");
    }
    for (cont=y1+1;cont<=y2-1;cont++) {
        gotoxy(x1,cont); printf("º");
        gotoxy(x2,cont); printf("º");
    }
}

void centrar(char mensaje[], char ren) {
    div_t di;
    di=div(strlen(mensaje),2);
    /*printf("%d    %d",di.quot,di.rem);*/  
    gotoxy( 40-di.quot,ren);
    printf("%s",mensaje);  
}

void teclas(char mensaje[], char col, char ren, char espacio) {
    marco(col-2,ren-1,col+espacio+1,ren+1);
    gotoxy(col,ren);printf("%s",mensaje);
}  

void pantalla(void) { 
    marco2(2,11,79,24);
    window(33,12,47,23);tc(12);tb(1);clrscr();
    teclas("7",3,2,1);teclas("8",8,2,1);teclas("9",13,2,1);
    teclas("4",3,5,1);teclas("5",8,5,1);teclas("6",13,5,1);
    teclas("1",3,8,1);teclas("2",8,8,1);teclas("3",13,8,1);
    teclas("0",3,11,1);teclas(".",8,11,1);teclas("EE",13,11,1);

    window(49,12,58,14);tc(13);tb(4);clrscr();
    teclas("AC",3,2,1);teclas("C®",8,2,1);

    window(49,15,58,21);tc(11);tb(1);clrscr();
    teclas("*",3,2,1);teclas("/",8,2,1);
    teclas("+",3,5,1);teclas("-",8,5,1);

    window(49,21,58,23);tc(13);tb(1);clrscr();
    teclas("ñ",3,2,1);teclas("Pi",8,2,1);

    window(60,12,78,23);tc(9);tb(1);clrscr();
    teclas(" ^",5,2,3);teclas(" ©",13,2,3);
    teclas(" (",5,5,3);teclas(" )",13,5,3);
    teclas("Inv",5,8,3);teclas("Abs",13,8,3);
    teclas(" !",5,11,3);teclas("EVALéA",12,11,6);

    window(11,12,31,23);tc(9);tb(1);clrscr();
    teclas("Ln",3,2,3);teclas("Exp",10,2,3);teclas("Cuad",17,2,3);
    teclas("Log",3,5,3);teclas("ALog",10,5,3);teclas("Ra¡z",17,5,3);
    teclas("Sen",3,8,3);teclas("Cos",10,8,3);teclas("Tan",17,8,3);
    teclas("ASen",3,11,3);teclas("ACos",10,11,3);teclas("ATan",17,11,3);

    window(3,12,9,23);tc(9);tb(1);clrscr();
    teclas("ANS",3,2,3);teclas("Spc",3,5,3);teclas("G/R",3,8,3);teclas("Exit",3,11,3);
}

void mensaje(char cadena[])
{
    if (posR.x.cx!=pos.x.cx||posR.x.dx!=pos.x.dx) { 
    tc(14);gotoxy(1,1);clreol();
    centrar(cadena,1);
    }
}

void pushoper(char item[], char rango[], char etiqueta[])
{
 if (topoper<tamano)
  {
    topoper++;
    strcpy(oper[topoper].token,item);
    strcpy(oper[topoper].priority,rango);
    strcpy(oper[topoper].type,etiqueta);
  }
 else printf("\nPila Oper llena.");
}

void popoper(char item[], char rango[], char etiqueta[])
{
 if (topoper>-1)
  {
    strcpy(item,oper[topoper].token);
    strcpy(rango,oper[topoper].priority);
    strcpy(etiqueta,oper[topoper].type);
    topoper--;
  }
 else printf("\nNo hay elementos en la pila Oper.");
}

void pushtemp(char como[], char item[], char rango[], char etiqueta[])
{
 int i;
 if (strcmp (como,"pila")==0)
  {
    if (toptemp<tamano)
     {
      toptemp++;
      strcpy(temp[toptemp].token,item);
      strcpy(temp[toptemp].priority,rango);
      strcpy(temp[toptemp].type,etiqueta);
     }
    else printf("\nCola|Pila Temp llena.");
  }
 else if (strcmp (como,"cola")==0)
         {
          if (toptemp<tamano)
            {
             i=++toptemp;
             while(i>0)
              {
                strcpy(temp[i].token,temp[i-1].token);
                strcpy(temp[i].priority,temp[i-1].priority);
                strcpy(temp[i].type,temp[i-1].type);
                i--;
              }
             strcpy(temp[0].token,item);
             strcpy(temp[0].priority,rango);
             strcpy(temp[0].type,etiqueta);
            }
          else printf("\nCola|Pila Temp llena.");
         }
}

void poptemp(char como[], char item[], char rango[], char etiqueta[])
{
 int i;
 if (strcmp (como,"cola")==0)
  {
    if (toptemp>-1)
     {
      strcpy(item,temp[0].token);
      strcpy(rango,temp[0].priority);
      strcpy(etiqueta,temp[0].type);
      for (i=1; i<toptemp+1; i++)
        {
         strcpy(temp[i-1].token,temp[i].token);
         strcpy(temp[i-1].priority,temp[i].priority);
         strcpy(temp[i-1].type,temp[i].type);
        }
      toptemp--;
     }
    else printf("\nNo hay elementos en la Cola Temp.");
  }
 else if (strcmp (como,"pila")==0)
         {
        if (toptemp>-1)
            {
             strcpy(item,temp[toptemp].token);
             strcpy(rango,temp[toptemp].priority);
             strcpy(etiqueta,temp[toptemp].type);
             toptemp--;
            }
          else printf("\nNo hay elementos en la pila Temp.");
         }
}

void pushsufija(char item[], char rango[], char etiqueta[])
{
 if (topsufija<tamano)
  {
    topsufija++;
    strcpy(sufija[topsufija].token,item);
    strcpy(sufija[topsufija].priority,rango);
    strcpy(sufija[topsufija].type,etiqueta);
  }
 else printf("\nCola Sufija llena.");
}

/*esta cola ser  permanente pues aqu¡ estar  guardada la cola polaca...*/
void popsufija(char item[], char rango[], char etiqueta[])
{
 if (topsufija>-1&&puntsufija<=topsufija)
  {
    puntsufija++;
    strcpy(item,sufija[puntsufija].token);
    strcpy(rango,sufija[puntsufija].priority);
    strcpy(etiqueta,sufija[puntsufija].type);
  }
 else printf("\nNo hay elementos en la Cola Sufija.");
}

void pushval(double v)
{
 if (topval<tamano)
  {
    topval++;
    valores[topval]=v;
  }
 else printf("\nPila de Valores llena");
}

void popval(double *v)
{
 if (topval>-1)
  {
    *v=valores[topval];
    valores[topval]=0.0;
    topval--;
  }
 else printf("\n   Error de SUMAS DINµMICAS : no hay ELEMENTO en la pila de valores...");
}

void clear(void)
{
 int i;
 for (i=0; i<tamano+1; i++)
  {
    oper[i].token[0]='';
    oper[i].priority[0]='';
    oper[i].type[0]='';
   temp[i].token[0]='';
    temp[i].priority[0]='';
    temp[i].type[0]='';
   sufija[i].token[0]='';
    sufija[i].priority[0]='';
    sufija[i].type[0]='';
    valores[i]=0.0;
  }
 /*clvar(); poner si se quieren borrar ala vez las variables tambi‚n*/
 topoper=-1;
 toptemp=-1;
 topsufija=-1;
 puntsufija=-1;
 topval=-1;
}

void clvar(void)
{
 int i;
 for (i=0; i<tamano+1; i++)
  {
    variable[i].nombre[0]='';
    variable[i].valor=0.0;
  }
 topvariable=-1;
}

void explora(char expresion[])
{
 int  L,i,cont;
 char cadena[127]="",cad[127]="",extrae[1]="";
 char **p;

 L=strlen(expresion);

 finderecha='';

 cont=-1;
 for( i=0 ; i<L; i++ )
  {
    cont++;
    cadena[cont]=expresion[i];    cadena[cont+1]='';
    if (cont>0) cad[cont-1]=cadena[cont-1]; cad[cont]='';/*guarda cadena antes de un token*/
    extrae[0]=expresion[i];    extrae[1]='';

      p= (char **) tokens;
      do
        {
         if (!strcmp (*p, extrae))
          {
            if (cont>0)
             {
              if ( (strcmp(*p,"ñ")==0) && (cad[cont-1]=='E') ) { cadena[cont]='-';break; }
              else pushtemp("pila" ,cad, "|", "argumento");          /*  ARGUMENTOS  */
             }
            pushtemp("pila", extrae, *(p+1), *(p+2));                                /*  OPERADORES  */
            cont=-1;    /* PARA REINICIAR CADENA A NULO ... */
            break;
          }
         else
          if (!strcmp (*p, cadena))
            {
             pushtemp("pila", cadena, *(p+1), *(p+2));                      /*  OPERADORES  */
             cont=-1;    /* PARA REINICIAR CADENA A NULO ... */
             break;
            }
         p = p+3;
        }
      while (*p) ;
    acomodar();
  }/*úúúúúúúúúúúúúúúúúúúúúúúúúúfor( i=0 ; i<L; i++ )úúúúúúúúúúúúúúúúúúúúú*/

 if (!*p) pushtemp("pila", cadena, "|", "argumento");                      /*  ARGUMENTOS  */
 finderecha='f';
 acomodar();

}/*úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúexploraúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú*/

void acomodar(void)
{
 char op, existe;

 while (toptemp>-1)
  {
    poptemp("cola",elemento,prioridad,tipo);existe='\1';
    if (strcmp (tipo, "argumento")==0) op=0;
    else if (strcmp (tipo, "unitario")==0) op=1;
          else if (strcmp (tipo, "binario")==0) op=1;
                 else if (strcmp (tipo, "izquierdo")==0) op=2;
                        else if (strcmp (tipo, "derecho")==0) op=3;
                              else op=5; /*para default*/
    switch(op)
     {
      case 0: pushsufija(elemento,prioridad,tipo);            /*argumento*/
                break;
      case 1:do /*no se necesita distinci¢n entre operadores unitarios-binarios*/
                  {
                    if (topoper<0) finderecha='1';
                    else if (strcmp(oper[topoper].type,"izquierdo")==0) finderecha='1';
/* SI SON DE PRIORIDAD 3 [UNITARIOS], SE EVALéAN DE DERECHA A IZQUIERDA
  DE LO CONTRARIO DE EVALéAN DE IZQUIERDA A DERECHA. */
                          else if ( (strcmp(oper[topoper].priority,prioridad)==0)&&(strcmp(prioridad,"3")==0) )
                                     { if (strcmp(oper[topoper].priority,prioridad)>=0) finderecha='1'; /*se puede poner solo finderecha='1', omitiendo el if... se pierde de vista que >=0 evalua de der a izq*/}
                                 else if (strcmp(oper[topoper].priority,prioridad)>0) finderecha='1'; /* izq a der */
                                        else
                                         {
                                          if (existe)
                                            {
                                             pushtemp("cola",elemento,prioridad,tipo);/*resguarda el operador en temp metiendolo como si no fuera aun extraido*/
                                             existe='';
                                            }
                                          finderecha='';
                                          popoper(elemento,prioridad,tipo);
                                          pushsufija(elemento,prioridad,tipo);
                                          if (topoper>-1) popoper(elemento,prioridad,tipo);
                                          else
                                            {
                                             poptemp("cola",elemento,prioridad,tipo);
                                             existe='\1';
                                            }
                                         }
                  }
                 while (finderecha!='1');
                 /* el break de case 2 trabaja pushoper(),com£n a case 1 y case 2*/
      case 2: pushoper(elemento,prioridad,tipo);          /*izquierdo*/
                break;
      case 3: popoper(elemento,prioridad,tipo);           /*derecho*/
                while ((strcmp(tipo,"izquierdo"))!=0)
                 {
              pushsufija(elemento,prioridad,tipo);
              popoper(elemento,prioridad,tipo); /*para descartar izquierdo*/
                 }
                break;
      default: printf("\n%s  %s  %s  TIPO NO PROCESADO.",elemento,prioridad,tipo);
                sleep(3);
     }    /*úúúúúúúúúúúúswitch(op)úúúúúúúúúúúú*/
  } /*úúúúúúúúúúúúúúúúúúwhile (toptemp>-1)úúúúúúúúúúúúúúúúú*/

 if (finderecha=='f')
     while (topoper>-1)
     {
      popoper(elemento,prioridad,tipo);
     pushsufija(elemento,prioridad,tipo);
     }

}/*úúúúúúúúúúúúúúúúúúúúúúúúúúúvoid acomodar(void)úúúúúúúúúúúúúúúúúúúúúúúúúúúú*/

void evalua(void)
{
 int i;
 char bandera='';

  puntsufija=-1;   /*restablece el puntero de la cola sufija*/

  while (topsufija>-1&&puntsufija<=topsufija)
    {
    bandera='';
     popsufija(elemento,prioridad,tipo);

     if ( strcmp(tipo,"argumento")==0)
         {
          if (strcmp(elemento,"CLEAR")==0) { clear(); return; }
          else if (strcmp(elemento,"CLVAR")==0) { clvar(); return; }
            else if (strcmp(elemento,"VAR")==0)
                    {
                     printf("\n");
                     for (i=0; i<=topvariable; i++)
                        printf("||   %s   %f  ",variable[i].nombre,variable[i].valor);
                     return;
                    }
             else    if (strcmp(elemento,"PI")==0) pushval(pi);
              else if (strcmp(elemento,"ANS")==0) pushval(ans);
                else if (strcmp(sufija[topsufija].token,"=")==0 && puntsufija==0) strcpy(asigna,elemento);
                 else
                  {
                    for (i=0; i<=topvariable; i++)
                     if (strcmp(elemento,variable[i].nombre)==0)
                      {
                        pushval(variable[i].valor);
                        bandera='\1';
                        break;
                      }
                    if (bandera=='') pushval(atof(elemento));
                  }
         } /*"argumento"*/
     else if ( strcmp(elemento,"ñ")==0) signo();
      else if ( strcmp(elemento,"^")==0) potencia();
        else if ( strcmp(elemento,"©")==0) xrooty();
         else if ( strcmp(elemento,"LN")==0) logneperiano();
          else if ( strcmp(elemento,"LOG")==0) logbriggs();
            else if ( strcmp(elemento,"EXP")==0) antlogneperiano();
             else if ( strcmp(elemento,"ALOG")==0) antlogbriggs();
              else if ( strcmp(elemento,"SEN")==0) seno();
                else if ( strcmp(elemento,"COS")==0) coseno();
                 else if ( strcmp(elemento,"TAN")==0) tangente();
                  else if ( strcmp(elemento,"ASEN")==0) arcoseno();
                    else if ( strcmp(elemento,"ACOS")==0) arcocoseno();
                     else if ( strcmp(elemento,"ATAN")==0) arcotangente();
                      else if ( strcmp(elemento,"RAIZ")==0) raiz();
                        else if ( strcmp(elemento,"CUAD")==0) cuadrado();
                         else if ( strcmp(elemento,"INV")==0) inv();
                          else if ( strcmp(elemento,"!")==0) factorial();
                            else if ( strcmp(elemento,"ABS")==0) absoluto();
                             else if ( strcmp(elemento,"*")==0) multiplicacion();
                              else if ( strcmp(elemento,"/")==0) division();
                                else if ( strcmp(elemento,"+")==0) suma();
                                 else if ( strcmp(elemento,"-")==0) resta();    
/*úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúfUNCIONESúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú*/
    } /*while (topsufija>-1)*/
 if (topval>0) printf("\n     Error de SUMAS DINµMICAS : quedaron ELEMENTOS en la pila de valores...");
 else if (topval==0) { popval(&resultado); ans=resultado;}
        else printf("\n   Error de SUMAS DINµMICAS : no hay ELEMENTO en la pila de valores...");
}/*úúúúúúúúúúúúúúúúúúúúúúúúúúúúvoid evalua(void)úúúúúúúúúúúúúúúúúúúúúúúúúúúúú*/

void signo(void)
{
 popval(&x);
 resultado=-x;
 pushval(resultado);
}

void potencia(void)  /*tener en cuenta que valores se trabaja como pila*/
{                            /*base-exponente*/
 popval(&y);
 popval(&x);
 resultado=pow(x,y);
 pushval(resultado);
}

void xrooty(void) /*raiz-argumento*/
{                    
double yabs, xint, xfrac, xpar;
char ban=0;     
 popval(&y);
 popval(&x);     
 xfrac=modf(x, &xint);
 xpar=fmod(xint,2);  
 yabs=fabs(y);

 if(y<0&&(xfrac!=0||xpar==0)) {
    printf("   |   ©   Ra¡z no definida...   ");
    resultado=0;
   return;
 }
 if(y<0&&(xfrac!=0||xpar!=0)) { y=yabs;ban=1; }

 resultado=1/x;
 resultado=pow(y,resultado);
 if (ban) resultado=-resultado;
 pushval(resultado);
}

void logneperiano(void)
{
 popval(&x);
 if(x<=0) {
    printf("   |   Ln de cantidad negativa no definido...   ");
    resultado=0;
    return;
 }
 else {
    resultado=log(x);
    pushval(resultado);
 }
}

void logbriggs(void)
{
 popval(&x);
 if(x<=0) {
    printf("   |   Log de cantidad negativa no definido...   ");
    resultado=0;
    return;
 }
 else {
    resultado=log10(x);
    pushval(resultado);
 }
}

void antlogneperiano(void)
{
 popval(&x);
 resultado=exp(x);
 pushval(resultado);
}

void antlogbriggs(void)
{
 popval(&x);
 resultado=pow(10,x);
 pushval(resultado);
}

void seno(void)
{
 double radianes;

 popval(&x);
 if (angulo!='r') radianes=pi*x/180;
 else radianes=x;
 resultado=sin(radianes);
 pushval(resultado);
}

void coseno(void)
{
 double radianes;

 popval(&x);
 if (angulo!='r') radianes=pi*x/180;
 else radianes=x;
 resultado=cos(radianes);
 pushval(resultado);
}

void tangente(void)
{
 double radianes;

 popval(&x);
 if (angulo!='r') radianes=pi*x/180;
 else radianes=x;
 if (radianes==pi/2||radianes==3/2*pi) {
    printf("   |   Tan   Pi/2 : infinito...   ");
    resultado=0;
    return;
 }
 else {
    resultado=tan(radianes);
    pushval(resultado);
 }
}

void arcoseno(void)
{
 double xabs;
 popval(&x);
 xabs=fabs(x);
 if(xabs<0||xabs>1) {
    printf("   |   argumento de Asen fuera de rango [0,1]...   ");
    resultado=0;
    return;
 }
 else if(x==1) resultado=pi/2;
        else if(x==-1) resultado=3/2*pi;
              else resultado=asin(x);

 if (angulo!='r') resultado=180*resultado/pi;
 pushval(resultado);
}

void arcocoseno(void)
{
 double xabs;
 popval(&x);
 xabs=fabs(x);
 if(xabs<0||xabs>1) {
    printf("   |   argumento de Acos fuera de rango [0,1]...   ");
    resultado=0;
    return;
 }
 else if(x==0) resultado=pi/2;
        else if(x==-1) resultado=pi;
              else resultado=acos(x);

 if (angulo!='r') resultado=180*resultado/pi;
 pushval(resultado);
}

void arcotangente(void)
{
 popval(&x);
 resultado=atan(x);
 if (angulo!='r') resultado=180*resultado/pi;
 pushval(resultado);
}

void raiz(void)
{
 popval(&x);
 if(x<0) {
    printf("   |   Ra¡z de cantidad negativa no definida...   ");
    resultado=0;
    return;
 }
 else {
    resultado=sqrt(x);
    pushval(resultado);
 }
}

void cuadrado(void)
{
 popval(&x);
 resultado=pow(x,2);
 pushval(resultado);
}

void inv(void)
{
 popval(&x);
 if(x<0) {
    printf("   |   Inv : divisi¢n entre cero no definida...   ");
    resultado=0;
    return;
 }
 else {
    resultado=1/x;
    pushval(resultado);
 }
}

void factorial(void)
{
 double entero;
 int i;

 popval(&x);
 if(x<0) {
    printf("   |   ! de cantidad negativa no definido...   ");
    resultado=0;
    return;
 }
 else {
    y=modf(x,&entero);
    resultado=1;
    for (i=2; i<entero+1; i++) resultado*=i;
    pushval(resultado);
 }
}

void absoluto(void)
{
 popval(&x);
 resultado=fabs(x);
 pushval(resultado);
}

void multiplicacion(void)
{
 popval(&y);
 popval(&x);
 resultado=x*y;
 pushval(resultado);
}

void division(void)
{
 popval(&y);
 popval(&x);
 if(y==0) {
    printf("   |   / Divisi¢n entre cero no definida...   ");
    resultado=0;
    return;
 }
 else {
    resultado=x/y;
    pushval(resultado);
 }
}

void suma(void)
{
 popval(&y);
 popval(&x);
 resultado=x+y;
 pushval(resultado);
}

void resta(void)
{
 popval(&y);
 popval(&x);
 resultado=x-y;
 pushval(resultado);
}

Bueno cualquier cosa si no puedes correr bien el programa me puedes preguntar…..

Anuncios

Acerca de quice85

Hola soy ingeniero en sistemas computacionales me dedico a dar clases, talleres de programación, diseño gráfico, diseño y programación de páginas WEB, mantenimiento, animación y ofimática. Mi nombre es Elfego Emilio Quintana de la Cruz (quice85). Correo: E-mail:quice85@outlook.com E-mail alternativo: quice85@hotmail.com o quice85@gmail.com. Facebook: Emilio Quintana o quice85. Twitter@: Emilio Quintana o quice85. Youtube: quice85. Empresa: SIEE (Sistemas Informáticos Eléctricos Electrónicos).
Esta entrada fue publicada en C++, Enlaces. Guarda el enlace permanente.

8 respuestas a Código de un programa en C++ de una Calculadora Cientifíca

  1. esperanza de los Santos Quintana alumna de IUDEN TURNO SABADOS CARRERA LIA dijo:

    waaa profe que interesante su pagina hay mucho que aprender de usted felicidades. Esperanza de los Santos Quintana IUDEM sabados LIA

  2. daniel garcia flores dijo:

    no me deja lo pegue en el c++ y dice que tiene 26 errores

  3. Alberto Rodríguez dijo:

    Gracias por subir este código es muy interesante, le faltaba la libreria graphics.h y corregir algunas declaraciones char que seguro por cambio de fuente se daño, con ello compila pero aún así no corre correctamente, me aparece la calculadora pero cuando le doy una operación solo me copia el primer dígito que ingrese. Por favor si fuera tan amable de mandarme el código para ver que más me falto. conraduni@gmail.com.

  4. Lizeth Gandarillas Parra dijo:

    Agregue la librería graphics pero me aparece un error, dice q no es soportado por windows… podría indicarme q más hacer

    • Alberto Rodríguez dijo:

      Hola Lizeth, yo estoy usando el Turbo C++ 3.0, un programa bien antiguo y para eso uso el virtual box donde me cree una maquina virtual windows xp 32 bits, pero aún así no me corre correctamente, como dije en mi anterior comentario, si quieres llegar a donde yo he llegado además de agregar la librería graphics.h tienes que darle espacio a varias variables char ejemplo char bandera=”, debería decir char bandera=’ ‘, pero aún asi no estoy seguro si esta bien.

  5. ivan martinez dijo:

    no me lo ejecuta que debo hacer

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s