294 lines
4.2 KiB
C++
294 lines
4.2 KiB
C++
|
Simple Calculator in C++
|
|||
|
|
|||
|
|
|||
|
#include"stdio.h"
|
|||
|
#include"conio.h"
|
|||
|
#include"dos.h"
|
|||
|
#include"stdlib.h"
|
|||
|
#include"string.h"
|
|||
|
|
|||
|
void DISPNUM(char *);
|
|||
|
void main()
|
|||
|
{
|
|||
|
clrscr();
|
|||
|
|
|||
|
_setcursortype(0);
|
|||
|
gotoxy(30,19);
|
|||
|
textcolor(GREEN+BLINK);
|
|||
|
cprintf("SIMPLE CALCULATOR");
|
|||
|
gotoxy(50,21);
|
|||
|
textcolor(BLUE+BLINK);
|
|||
|
cprintf("Hello World");
|
|||
|
getch();
|
|||
|
// clrscr();
|
|||
|
|
|||
|
int x=30,y=10;
|
|||
|
|
|||
|
textcolor(WHITE);
|
|||
|
gotoxy(x,y);
|
|||
|
cprintf("7 8 9");
|
|||
|
gotoxy(x,y+2);
|
|||
|
cprintf("4 5 6");
|
|||
|
gotoxy(x,y+4);
|
|||
|
cprintf("1 2 3");
|
|||
|
gotoxy(x,y+6);
|
|||
|
cprintf("0");
|
|||
|
|
|||
|
textcolor(RED);
|
|||
|
gotoxy(x+5,y+6);
|
|||
|
cprintf(". =");
|
|||
|
|
|||
|
|
|||
|
textcolor(GREEN);
|
|||
|
x=x+15;
|
|||
|
gotoxy(x,y);
|
|||
|
cprintf("/");
|
|||
|
|
|||
|
gotoxy(x,y+2);
|
|||
|
cprintf("*");
|
|||
|
|
|||
|
gotoxy(x,y+4);
|
|||
|
cprintf("-");
|
|||
|
|
|||
|
gotoxy(x,y+6);
|
|||
|
cprintf("+");
|
|||
|
|
|||
|
//Draw The For Calc//
|
|||
|
x=28;y=5;
|
|||
|
gotoxy(x,y);
|
|||
|
|
|||
|
textcolor(WHITE);
|
|||
|
|
|||
|
// <20> & <09> //
|
|||
|
cprintf("%c",218);
|
|||
|
gotoxy(28+20,y);
|
|||
|
cprintf("%c",191);
|
|||
|
// <20> & <09> //
|
|||
|
|
|||
|
//Horiz. Boundary
|
|||
|
for(x=29;x<=28+19;x++)
|
|||
|
{
|
|||
|
gotoxy(x,y);
|
|||
|
cprintf("%c",196);
|
|||
|
gotoxy(x,y+12);
|
|||
|
cprintf("%c",196);
|
|||
|
}
|
|||
|
//End of Horiz. Bound
|
|||
|
|
|||
|
// <20> & <20> //
|
|||
|
cprintf("%c",217);
|
|||
|
x=28;y=y+12;
|
|||
|
gotoxy(x,y);
|
|||
|
cprintf("%c",192);
|
|||
|
//End of <20> & <20> //
|
|||
|
|
|||
|
//Vertic. Bound.
|
|||
|
|
|||
|
for(y=6;y<=16;y++)
|
|||
|
{
|
|||
|
gotoxy(x,y);
|
|||
|
cprintf("%c",179);
|
|||
|
gotoxy(x+20,y);
|
|||
|
cprintf("%c",179);
|
|||
|
}
|
|||
|
//End of Vertic Bou.
|
|||
|
|
|||
|
y=6;
|
|||
|
|
|||
|
for(x=30;x<=30+16;x++)
|
|||
|
{
|
|||
|
gotoxy(x,y);
|
|||
|
cprintf("%c",196);
|
|||
|
gotoxy(x,y+2);
|
|||
|
cprintf("%c",196);
|
|||
|
}
|
|||
|
|
|||
|
gotoxy(30,y+1);
|
|||
|
cprintf("%c %c",179,179);
|
|||
|
|
|||
|
gotoxy(30,y);
|
|||
|
cprintf("%c",218);
|
|||
|
gotoxy(30+16,y);
|
|||
|
cprintf("%c",191);
|
|||
|
|
|||
|
|
|||
|
gotoxy(30,y+2);
|
|||
|
cprintf("%c",192);
|
|||
|
gotoxy(30+16,y+2);
|
|||
|
cprintf("%c",217);
|
|||
|
|
|||
|
|
|||
|
//End of Vertic Bound.
|
|||
|
|
|||
|
//OutPut at X=30,Y=8//
|
|||
|
|
|||
|
|
|||
|
char ch;
|
|||
|
char operand1[15]="",operand2[15]="",BLANK[15]=" ";
|
|||
|
char operator1,first='y';
|
|||
|
long double num1=0,num2=0;
|
|||
|
int i=0,ERROR=0; //Digits
|
|||
|
int MAX=10;
|
|||
|
DISPNUM(0);
|
|||
|
do
|
|||
|
{
|
|||
|
ch=getch();
|
|||
|
if(ch=='x1b')
|
|||
|
{
|
|||
|
for(int i=1000;i>=200;i=i-50)
|
|||
|
{
|
|||
|
sound(i);
|
|||
|
delay(100);
|
|||
|
}
|
|||
|
nosound();
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
//Numeric//
|
|||
|
if((ch>='0')&&(ch<='9'))
|
|||
|
{
|
|||
|
if(i<MAX)
|
|||
|
{
|
|||
|
if(first=='y')
|
|||
|
{
|
|||
|
operand1[i]=ch;
|
|||
|
DISPNUM(operand1);
|
|||
|
i++;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
operand2[i]=ch;
|
|||
|
DISPNUM(operand2);
|
|||
|
i++;
|
|||
|
}
|
|||
|
}
|
|||
|
else //More than 8 digit
|
|||
|
{
|
|||
|
ERROR=1;
|
|||
|
}
|
|||
|
}
|
|||
|
else if(ch=='.')
|
|||
|
{
|
|||
|
if(first=='y')
|
|||
|
{
|
|||
|
if(strchr(operand1,'.')==NULL)
|
|||
|
{
|
|||
|
operand1[i]=ch;
|
|||
|
i++;
|
|||
|
}
|
|||
|
DISPNUM(operand1);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if(strchr(operand2,'.')==NULL)
|
|||
|
{
|
|||
|
operand2[i]=ch;
|
|||
|
i++;
|
|||
|
}
|
|||
|
DISPNUM(operand2);
|
|||
|
}
|
|||
|
}
|
|||
|
//Non Numeric
|
|||
|
else if (ch=='*')
|
|||
|
{
|
|||
|
operator1='*';
|
|||
|
first='n';
|
|||
|
i=0;
|
|||
|
}
|
|||
|
else if (ch=='/')
|
|||
|
{
|
|||
|
operator1='/';
|
|||
|
first='n';
|
|||
|
i=0;
|
|||
|
}
|
|||
|
else if (ch=='+')
|
|||
|
{
|
|||
|
operator1='+';
|
|||
|
first='n';
|
|||
|
i=0;
|
|||
|
}
|
|||
|
else if (ch=='-')
|
|||
|
{
|
|||
|
operator1='-';
|
|||
|
first='n';
|
|||
|
i=0;
|
|||
|
}
|
|||
|
else if ((ch=='=')||(ch=='
|
|||
|
'))
|
|||
|
{
|
|||
|
//Store in Floating
|
|||
|
if(strcmpi(operand1,BLANK)!=0)
|
|||
|
{
|
|||
|
num1=_atold(operand1);
|
|||
|
}
|
|||
|
if(strcmpi(operand2,BLANK)!=0)
|
|||
|
{
|
|||
|
num2=_atold(operand2);
|
|||
|
}
|
|||
|
//Now Calculate
|
|||
|
switch (operator1)
|
|||
|
{
|
|||
|
case '+':
|
|||
|
num1=num1+num2;
|
|||
|
break;
|
|||
|
case '-':
|
|||
|
num1=num1-num2;
|
|||
|
break;
|
|||
|
case '*':
|
|||
|
num1=num1*num2;
|
|||
|
break;
|
|||
|
case '/':
|
|||
|
num1=num1/num2;
|
|||
|
break;
|
|||
|
}
|
|||
|
//ltoa(num1,operand1,10);
|
|||
|
gcvt(num1,12,operand1);
|
|||
|
DISPNUM(operand1);
|
|||
|
i=0;
|
|||
|
first='y';
|
|||
|
|
|||
|
strcpy(operand1,BLANK);
|
|||
|
strcpy(operand2,BLANK);
|
|||
|
}
|
|||
|
else //Invalid Choice
|
|||
|
{
|
|||
|
ERROR=1;
|
|||
|
}
|
|||
|
|
|||
|
//Beep On ERROR else ------ //
|
|||
|
if (ERROR==0)
|
|||
|
{
|
|||
|
sound(920);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
sound(100);
|
|||
|
ERROR=0;
|
|||
|
}
|
|||
|
delay(250);
|
|||
|
nosound();
|
|||
|
|
|||
|
gotoxy(1,1);
|
|||
|
cprintf("%d",i);
|
|||
|
|
|||
|
}while(1);
|
|||
|
|
|||
|
|
|||
|
// clrscr();
|
|||
|
gotoxy(30,19);
|
|||
|
textcolor(GREEN+BLINK);
|
|||
|
cprintf("SIMPLE CALCULATOR");
|
|||
|
gotoxy(50,21);
|
|||
|
textcolor(BLUE+BLINK);
|
|||
|
cprintf("Hello World");
|
|||
|
// getch();
|
|||
|
}
|
|||
|
void DISPNUM(char *num)
|
|||
|
{
|
|||
|
textbackground(RED);
|
|||
|
gotoxy(31,7);
|
|||
|
cprintf(" ");
|
|||
|
gotoxy(31,7);
|
|||
|
cprintf("%s",num);
|
|||
|
}
|