main
Código C++:
Ver original
#include <winbgim.h> #include <math.h> #include <ctype.h> #include "captura_numeros.h" //Aplicacion de la rutina de captura de datos numericos en modo grafico double captura_numeros(int, int); void dibujar_pantalla(double, double, char); void basicas(); main() { initwindow(1100,700); basicas(); closegraph(); return 0; } void dibujar_pantalla(double acumulado,double numero, char operacion){ char subcadena[30]; gcvt(acumulado,11,subcadena); settextstyle(0,0,3); outtextxy(10,25," "); settextstyle(0,4,3); setcolor(COLOR(254,254,0)); outtextxy(475,55,subcadena); setcolor(COLOR(254,254,254)); rectangle(20,20,480,60); settextstyle(0,0,1); setcolor(COLOR(254,0,0)); outtextxy(25,25,"Resultado"); settextstyle(0,4,3); setcolor(COLOR(254,0,0)); outtextxy(479,115," "); setcolor(COLOR(254,254,254)); rectangle(90,80,480,120); subcadena[0]=operacion; subcadena[1]='\0'; settextstyle(0,0,2); outtextxy(150,90,subcadena); settextstyle(0,6,2); } void basicas(){ char subcadena[30], operacion='c'; int posx, posy, primeraoperacion=0; double acumulado=0.0, numero=0.0; cleardevice(); while (operacion != 'S') { dibujar_pantalla(acumulado,numero,' '); if (primeraoperacion!=0) { setcolor(COLOR(0,254,0)); settextstyle(0,0,2); outtextxy(10,150,"+ suma"); outtextxy(10,170,"- resta"); outtextxy(10,190,"* multiplicacion"); outtextxy(10,210,"/ division"); setcolor(COLOR(250,150,0)); outtextxy(10,240,"C borrar"); outtextxy(10,260,"S Salir"); } dibujar_pantalla(acumulado,numero,operacion); { posx=470; posy=110; if(primeraoperacion==0) { numero=captura_numeros(posx,posy); acumulado=numero; primeraoperacion=1; } else { switch(operacion) { case '+' : numero=captura_numeros(posx,posy); acumulado=acumulado+numero; break; case '-' : numero=captura_numeros(posx,posy); acumulado=acumulado-numero; break; case '*' : numero=captura_numeros(posx,posy); acumulado=acumulado*numero; break; case '/' : numero=captura_numeros(posx,posy); acumulado=acumulado/numero; break; case 'i' : numero=captura_numeros(posx,posy); break; case 'C' : acumulado=0; primeraoperacion=0; break; case 'S' : break; default : setcolor(COLOR(254,0,254)); settextstyle(0,0,2); outtextxy(110,90,"Error, Opcion no Valida"); break; } } numero=0; } } } void waitForLeftMouseClick() { clearmouseclick(WM_LBUTTONDOWN); const int DELAY = 50; // Milliseconds of delay between checks int x, y; while (!ismouseclick(WM_LBUTTONDOWN)) delay(DELAY); getmouseclick(WM_LBUTTONDOWN, x, y); }
archivo adjunto .h
Código C++:
Ver original
double captura_numeros(int x, int y) { char digito,cadena[30]; int i,punto,negativo; double numero; digito='0'; i=0; punto=0; negativo=0; while (digito!=13)//valor de control Enter o sig linea { setcolor(RED); settextstyle(0,4,2); setcolor(RED); if (digito==8)//valor de control BackSpace { cadena[i]='\0'; i--; } { if (digito=='.') { if(punto==0) { cadena[i]=digito; i++; punto=1; } } else{ if(digito=='-') { if (i==0) { cadena[i]=digito; i++; } } else { cadena[i]=digito; i++; } } } cadena[i]='\0'; settextstyle(0,4,2); setcolor(COLOR(254,0,0)); outtextxy(x,y," "); outtextxy(x,y,cadena); } return (numero); }
muchas gracias