Вы находитесь на странице: 1из 3

#include "calc.

h"
main()
{
int driver,mode;
driver=EGA;
mode=EGAHI;
initgraph(&driver,&mode,"\\borlandc\\bgi");
border border1(SCREEN,240,30,480,330);
output output1(&border1,20,20,220,60,BLUE,WHITE);
button button0(&border1,30,230,65,265,BLACK,"0");
button button1(&border1,30,180,,65,215,BLACK,"1");
button button2(&border1,78,180,113,215,BLACK,"2");
button button3(&border1,127,180,162,215,BLACK,"3");
button button4(&border1,30,130,65,165,BLACK,"4");
button button5(&border1,78,130,113,165.BLACK,"5");
button button6(&border1,127,130,162,165,BLACK,"6");
button button7(&border1,30,80,65,115,BLACK,"7");
button button8(&border1,78,80,113,115,BLACK,"8");
button button9(&border1,127,80,162,115,BLACK,"9");
button buttondiv(&border1,175,80,210,115,BLUE,"/");
button buttonmul(&border1,175,130,210,165,BLUE,"*");
button buttonsub(&border1,175,180,210,215,BLUE,"-");
button buttondot(&border1,78,230,113,265.BLACK,".");
button buttonclr(&border1,127,230,162,265,RED,"clr");
button buttonadd(&border1,175,230,210,265,BLUE,"+");
button buttonequals(&border1,175,230,210,265,BLUE,"=");
border1.display();
output1.display();
button7.display();
button4.display();
button1.display();
button8.display();
button5.display();
button2.display();
button9.display();
button6.display();
button3.display();
buttonsub.display();
buttonmul.display();
buttondiv.display();
buttonadd.display();
button0.display();
buttondot.display();
buttonclr.display();
output1.number(0.0);
const char esc=27;
char dstring[80];
char tempbuf[80];
int numchars=0;
char ch;
char oper;
boolean isfirst=true;
boolean chain=false;
double number1,number2;
double answer;
while((ch=getch())!=esc)
{
if(ch>='0'&&ch<='9')||ch=='.')
{
switch(ch)
{
case '0': button0.click();break;
case '1': button1.click();break;
case '2': button2.click();break;
case '3': button3.click();break;
case '4': button4.click();break;
case '5': button5.click();break;
case '6': button6.click();break;
case '7': button7.click();break;
case '8': button8.click();break;
case '9': button9.click();break;
case '.': buttondot.click();break;
}
dstring[numchars++]=ch;
dstring[numchars]='\0';
if(atof(dstring)>99999999999.99||numchars>11)
{
delay(100);sound(200);delay(300);nosound();
dstring[--numchars]='\0';
}
output1.text(dstring);
}
else
if(ch=='/'||ch=='*'||ch=='-'||ch=='+'||ch=='=')
{
strcpy(tempbuf,dstring);
numchars=0;
dstring[numchars]='\0';
output1.text(dstring);
if(isfirst)
{
number1=(chain)?answer:atof(tempbuf);
isfirst=false;
switch(ch)
{
case '/': buttondiv.click();oper='/';break;
case '*': buttonmul.click();oper='*';break;
case '-': buttonsub.click();oper='-';break;
case '+': buttonadd.click();oper='+';break;
case '=': buttonequals.click();oper='=';break;
}
else
{
buttonadd.click();
number2=atof(tempbuf);
switch(oper)
{
case '/': answer=number1/number2;break;
case '*': answer=number1*number2;break;
case '-': answer=number1-number2;break;
case '+': answer=number1+number2;break;
}
if(answer>999999999.99)
output1.Text("overflow!");
else
{
output1.number(answer);
number1=answer;
}
isfirst=true;
chain=true;
}
}
else if(ch=='C'||ch='c')
{
buttonclr.click();
isfirst=true;chain false;
numchars=0;
dstring[numchars]='\0';
output1.number(0.0);
}
else
{
delay(100);sound(200);delay(300);nosound();
}
}
closegraph();
}

Вам также может понравиться