buenas tardesillas, estoy tratando de hacer una calculadora en c++ con entorno grafico borland. y no se como poner funciones ni nada de eso. les dejo lo que tengo. por favor ayudenme.
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);
acumulado
=sin(acumulado
); 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 originaldouble 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);
digito
=getch();//Getch: captura el valor de una tecla if (digito==8)//valor de control BackSpace
{
cadena[i]='\0';
i--;
}
if(isdigit(digito
) || digito
=='.' || digito
=='-') {
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