Sie sind auf Seite 1von 29

OF

(** Scientific Calculator**)

Submitted in the partial fulfillment of the Degree of Bachelor of Technology


(Integrated)

In

Computer Science and Engineering

SUBMITTED BY:- GUIDED BY: MissSukhdilpreet Kaur


Name : Naman Kumar,Anuj Sharma

Regd. No: 10800991

Rollno (complete): R246A11,R246A16

1
SCIENTIFIC CALCULATOR

2
ACKNOWLEDGMENT
First and the foremost I would like to
thank to my almighty for giving me
courage to
a word of thanks to my teacher, friends
and other sources that gave an unending
support and helped me in numerous ways
from the first stage of my term
assignment conceived.
I would also like to thank my family
members for their whole hearted support
and cooperation.
I duly acknowledge the contribution of
Ms.Sukhdilpreet Kaur for invaluable help.
Coding scientific calculator is an uphill
task and would have not been possible
without proper and timely assistance of
Ms.Sukhdilpreet Kaur.
I would also thanks to all my friends for
forwarding their suggestions to make
necessary modifications.

3
Special thanks to Ms.Sukhdilpreet
Kaur for her able guidance in my
term assignment.

TABLE OF CONTENTS

1. Introduction
2. Basic function
3. Proposed system
i. Description
ii. System requirements
4. System Design
5. Source code
6. Testing
7. Future scope of project

4
INTRODUCTION

Scientific Calculator

The calculator was written by Rolf Howarth in early 1996.

A fully featured scientific calculator with proper operator precedence is


implemented, including trig functions and logarithms, factorials, 12
levels of parentheses, logs to base 2 (a handy function for information
entropists!), bitwise logical operators, hex, octal, binary and ASCII
display.

The calculator is written in JavaScript and you are welcome to view the
JavaScript source (visible within the HTML page) for personal
educational purposes as long as you recognize that it is copyrighted and
not in the public domain. This calculator is now available as part of
Hummingbird's Enterprise Information Portal. All enquiries regarding
licensing the calculator should be directed to Hummingbird Ltd.

5
Basic Functions
Addition

The addition (sum function) is used by clicking on the "+" button or using the keyboard. The
function results in a+b.

Subtraction

The subtraction (minus function) is used by clicking on the "-" button or using the keyboard. The
function results in a-b.

Multiplication

The multiplication (times function) is used by clicking on the "x" button or using the keyboard
"*" key. The function results in a*b.

Division

The division (divide function) is used by clicking on the "/" button or using the keyboard "/" key.
The function results in a/b.

Sign

The sign key (negative key) is used by clicking on the "(-)" button. The function results in -1*x.

Square

The square function is used by clicking on the "x^2" button or type "^2". The function results in
x*x.

Square Root

The square root function is used by clicking on the "x" button or type "sqrt()". This function
represents x^.5 where the result squared is equal to x.

Raise to the Power

The raise to the power (y raised to the x function) is used by clicking on the "y^x" button or type
"^".

6
Natural Exponential

The natural exponential (e raised to the x) is used by clicking on the "e^x" button or type
"exp()". The result is e (2.71828...) raised to x.

Logarithm

The logarithm (LOG) is used by clicking on the "LOG" button or type "LOG()".

Natural Logarithm

The Natural logarithm (LN) is used by clicking on the "LN" button or type "LN()".

Inverse

Multiplicative inverse (reciprocal function) is used by pressing the "1/x" button or typing "inv()".
This function is the same as x^-1 or dividing 1 by the number.

Exponent

Numbers with exponents of 10 are displayed with an "e", for example 4.5e+100 or 4.5e-100.
This function represents 10^x. Numbers are automatically displayed in the format when the
number is too large or too small for the display. To enter a number in this format use the
exponent key "EEX". To do this enter the mantissa (the non exponent part) then press "EEX" or
type"e" and then enter the exponent.

Factorial

The Factorial function is used by clicking the "!" button or type "!".

PI

PI is a mathematical constant of the ratio of a circle's circumference to its diameter.

7
PROPOSED SYSTEM

The following documentation is a project the “Name of the term paper


allotted”. It is a detailed summary of all the drawbacks of the old system and
how the new proposed system overcomes these shortcomings. The new
system takes into account the various factors while designing a new system.
It keeps into the account the Economical bandwidth available for the new
system. The foremost thing that is taken care of is the Need and
Requirements of the User.

DESCRIPTION

Before developing software we keep following things in mind that we can


develop powerful and quality software

PROBLEM STATEMENT

o Problem statement was to design a module:


o Which is user friendly
o Which will restrict the user from accessing other user’s data.
o Which will help user in viewing his data and privileges.
o Which will help the administrator to handle all the changes.
FUNCTIONS TO BE PROVIDED:

The system will be user friendly and completely menu driven so that the
users shall have no problem in using all options.

o The system will be efficient and fast in response.


o The system will be customized according to needs.
o (View
o Add
o Delete
o Modify)
SYSTEM REQUIRMENTS

Operating system: MS Windows XP or Windows Vista

Language: C Language

Processor: Pentium IV Processor RAM: 512 MB Hard disk: 5 GB

8
SYSTEM DESIGN

Then we began with the design phase of the


system. System design is a solution, a “HOW
TO” approach to the creation of a new
system. It translates system requirements
into ways by which they can be made
operational. It is a translational from a user
oriented document to a document oriented
programmers. For that, it provides the
understanding and procedural details
necessary for the implementation. Here we
use Flowchart to supplement the working of
the new system. The system thus made
should be reliable, durable and above all
should have least possible maintenance costs.
It should overcome all the drawbacks of the
Old existing system and most important of all
meet the user requirements.

9
START

Welcome to main menu of


Scientific Calculator

Enter
Your
Choice?

On Do your any
calculator task

Trignometery(sin,c Inverse(1/
os) x)

Ye
s Do you want
to continue?

No
Switch off
calculator

STOP

10
CODING
#include<string.h>
#include<mouse.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>
#include<graphics.h>
#include<stdio.h>
#include<alloc.h>

#define pi 3.1415265

union REGS i,o;


int sr,dpf;
char *no[]={"1","2","3","4","5","6","7","8","9","0",".","+/-"},
*cal[]={"+","-","*","/","=","ã"},
*sci[]={"Sin","Cos","Tan","Sinh","Cosh","Tanh","Exp","ln","log","xrty","
1/x","x^2","x^y","sqrt","fact","Hypot","eqn","DEG",},
*ms[]={"AC","HEX","BIN","OCT","BKSP"};

long com(long,int);
long double back(long double),equ(),alg(long double,int);
double ns(long double,int);
int box(int,int,int,int,int);
char *z2;
long double *z1;
int xy1[3];

void draw() //-----DRAW THE BODY OF CALCULATOR


{
int gm,gd=DETECT;
int x,y,x1,y1,i,j;

initgraph(&gd,&gm,"c:\\tc\\bgi"); //INITIALISE GRAPHICS

z2=(char * ) malloc(sizeof(char)*10); /*ALLOCATE MEMORY TO z2*/

x=getmaxx();y=getmaxy();

setcolor(DARKGRAY); setfillstyle(1,CYAN); //CYAN outer body


floodfill(5,5,DARKGRAY);

setcolor(BLACK);setfillstyle(1,LIGHTGRAY);
rectangle(20,20,x-20,y-20); //grey calculator body
floodfill(50,50,BLACK);

setcolor(BLACK); //black outline


line(20,20,x-20,20);
line(20,20,20,y-20);

setcolor(BLUE);setfillstyle(1,BLUE);
rectangle(21,20,x-21,40);
floodfill(25,25,BLUE); /* blue quit rectangle*/

11
setcolor(BLACK);
outtextxy(x/5,8,"Scientific Calculator by-: Akash(02512) & Akhil(02514)");

initmouse();
showmouse();
setmouse(0,0);

setcolor(WHITE);setfillstyle(1,WHITE);
rectangle(30,55,x-30,70); //---white i/o box
floodfill(32,59,WHITE);

outtextxy(x-220,27,"Press Any Key To Quit."); //---Quit


setcolor(DARKGRAY);

line(235,95,235,y-30); //grey partition line


setfillstyle(1,LIGHTGRAY);

/*------------------printing nos.---------------------*/

i=0;
for(x1=40;x1<150;x1+=30)
{ j=0;
for(y1=100;y1<450;y1+=40)
{
box(x1,y1,40,WHITE,BLACK);
setcolor(BLUE);
if(i==1&&j==10)
outtextxy(x1+10,y1+20,no[i+j]);
else
outtextxy(x1+15,y1+20,no[i+j]);
y1+=20; j+=2;
}
i++;
x1+=40;
}

/*---------------------------------------------------------------*/

/*--------printing simple algebric functions:(+,-,*,/)----------*/

for(x1;x1<=180;x1+=40)
{ j=0;
for(y1=100;y1<450;y1+=40) /*x1=180*/
{
box(x1,y1,40,WHITE,BLACK);
setcolor(BLUE);
outtextxy(x1+15,y1+20,cal[j]);
y1+=20;
j++;
}
}
x1+=30;
/*-----------------------------------------------------------------*/

/*--------------------print scientific functions-------------------*/

12
i=0;
for(x1;x1<501;x1+=30)
{ j=0;
for(y1=100;y1<450;y1+=40)
{
box(x1,y1,70,WHITE,BLACK); /*x1=220*/
setcolor(BLUE);
outtextxy(x1+15,y1+20,sci[i+j]);
y1+=20; j+=3;
}
xy1[i]=x1; /*store X coordinates*/
i++;
x1+=70;
}
/*-----------------------------------------------------------------*/

/*------------------print MATHEMATICAL SYSTEMS: BIN,HEX-------------*/


for(x1;x1<=550;x1+=30)
{ j=0;
for(y1=100;y1<450;y1+=40) /*x1=550*/
{ if(j==5)
break;
box(x1,y1,55,WHITE,BLACK);
setcolor(RED);
outtextxy(x1+15,y1+20,ms[j]);
y1+=20;
j++;
}
}
mouse();
}

void main() //MAIN DECLARATION


{
password();
draw();
}

/*-----------MOUSE PROGRAMMING------------*/

mouse()
{
int button,x,y;
char s[13]={" "};
int x1,y1,i,j,flag=1,l;
long double n,k;

while(!kbhit())
{ Again:
getmouse(&button,&x,&y);
while(button==1)
{
getmouse(&button,&x,&y);
sr=1;
}

13
if(sr==1)
{
i=0;
sr=0;
if(x>=xy1[0]&&x<=(xy1[0]+70)) /*fourth column check*/
{
colm1(n,y);
dpf=0;
strcpy(s," ");
}
if(x>=xy1[1]&&x<=(xy1[1]+70)) /*fifth column check*/
{
colm2(n,y);
dpf=0;
strcpy(s," ");
}
if(x>=xy1[2]&&x<=(xy1[2]+70)) /*sixth column check*/
{
colm3(n,y);
dpf=0;
strcpy(s," ");
}
for(x1=40;x1<150;x1+=30) //1st & 2nd column check
{ j=0; setcolor(DARKGRAY);
for(y1=100;y1<450;y1+=40)
{ if(x>=x1 && y>=y1 && x<=x1+40 && y<=y1+40)
{ box(x1,y1,40,BLACK,WHITE);
delay(200);
box(x1,y1,40,WHITE,BLACK);
if((strcmp(no[i+j],no[11]))==0)
{ if(flag==1)
{ n*=-1; // +/- sign
s[0]='-';
flag=0;
}
else
{ n*=-1;
s[0]=' ';
setcolor(LIGHTGRAY);
setfillstyle(1,WHITE);
floodfill(32,59,LIGHTGRAY);
flag=1;
}
goto NEXT;

if(strlen(s)>=11)
goto Again;

if((strcmp(no[i+j],no[10]))==0)
{
if(dpf==0)
{
strcat(s,no[i+j]); //save no. to string s
dpf=1;

14
}
}
else
strcat(s,no[i+j]); //save no. to string
s
NEXT:
n=_atold(s); //array to long double
setcolor(DARKGRAY);
outtextxy(30,60,s); // display no. in i/o box

goto Again;
}
y1+=20; j+=2;
}
i++;
x1+=40;
}

if(x>550 && x<605 && y>340 && y<380) //BACKSPACE


{ delay(100);
setcolor(LIGHTGRAY);
setfillstyle(1,WHITE);
floodfill(32,59,LIGHTGRAY);
l=strlen(s);
if(s[l-1]=='.')
dpf=0;
s[l-1]=s[l];
setcolor(DARKGRAY);
outtextxy(30,60,s);
goto Again;
}

if(x>550 && x<605) // 7th column


{ setcolor(LIGHTGRAY);
setfillstyle(1,WHITE);
floodfill(32,59,LIGHTGRAY);
dpf=0;
ns(n,y);
strcpy(s," ");
goto Again;
}

if(x>180 && x<220) // 3rd column


{
setcolor(LIGHTGRAY);
setfillstyle(1,WHITE);
floodfill(32,59,LIGHTGRAY);
dpf=0;
if(y>400 && y<440) // pi value
{

box(180,400,40,BLACK,WHITE);
delay(200);
box(180,400,40,WHITE,BLACK);
n=pi;
setcolor(DARKGRAY);

15
outtextxy(30,60," 3.1415265");
goto Again;
}
alg(n,y);
strcpy(s," ");
goto Again;
}
}
}
return;
}

/*-------perform algebric calculations---------*/

long double alg(long double n, int y )


{
int y1;
static int i;
long double r;
z1[i]=n; //copy no. to z1

if(y>100 && y<140) //--add


{ box(180,100,40,BLACK,WHITE);
delay(200);
box(180,100,40,WHITE,BLACK); // add(n);
z2[i]=43;
i++;
return 0;
}
if(y>160 && y<200) //subtract
{ box(180,160,40,BLACK,WHITE);
delay(200);
box(180,160,40,WHITE,BLACK); //
sub(n);
z2[i]=45;
i++;
return 0;
}
if(y>220 && y<260) //multiply
{ box(180,220,40,BLACK,WHITE);
delay(200);
box(180,220,40,WHITE,BLACK); //mul(n);
z2[i]=42;
i++;
return 0;
}
if(y>280 && y<320) //divide
{ box(180,280,40,BLACK,WHITE);
delay(200);
box(180,280,40,WHITE,BLACK); //div(n);
z2[i]=47;
i++;
return 0;
}

if(y>340 && y<380) //equal

16
{ box(180,340,40,BLACK,WHITE);
delay(200);
box(180,340,40,WHITE,BLACK);
z1[i+1]=z2[i]='\0';
equ();
i=0;
return 0;
}
return 0;
}

/*---------solve algebric functions--------*/

long double equ()


{

int i,j;
char ch[50]={" "};

for(i=0;z2[i]!='\0';)
{
if(z2[i]=='/') /*------perform division------*/
{ z1[i]/=z1[i+1];
for(j=i;z2[j]!='\0';j++)
{ z1[j+1]=z1[j+2];
z2[j]=z2[j+1];
}
}
else
i++;
} /*--------------*/

for(i=0;z2[i]!='\0';)
{
if(z2[i]=='*') /*------perform multiplication------*/
{
z1[i]*=z1[i+1];
for(j=i;z2[j]!='\0';j++)
{ z1[j+1]=z1[j+2];
z2[j]=(int)z2[j+1];
}
}
else
i++; /*--------------*/
}

for(i=0;z2[i]!='\0';)
{
if(z2[i]=='+') /*------perform addition------*/
{
if(z2[i-1]=='-')
z1[i+1]*=-1;

z1[i]+=z1[i+1];

for(j=i;z2[j]!='\0';j++)

17
{ z1[j+1]=z1[j+2];
z2[j]=z2[j+1];
}
}
else
i++; /*--------------*/
}

for(i=0;z2[i]!='\0';)
{
if(z2[i]=='-') /*------perform subtraction------*/
{
z1[i]-=z1[i+1];
for(j=i;z2[j]!='\0';j++)
{ z1[j+1]=z1[j+2];
z2[j]=z2[j+1];
}
}
else
i++;
} /*--------------*/

if(z2[1]=='r') /*------find yth roots------*/


z1[0]=pow(z1[2],1/z1[0]);

if(z2[1]=='p') /*------find yth power------*/


z1[0]=pow(z1[2],z1[0]);

if(z2[1]=='h') /*------find hypotenuse------*/


z1[0]=hypot(z1[2],z1[0]);

gcvt(z1[0],15,ch); /*------copy result to


array----------*/
setcolor(DARKGRAY);
outtextxy(35,60,ch); //display result

press();
return 0;
}

/*-------perform numeric system calculations--------*/

double ns(long double b, int y )


{ int y1;
long n;
n=b;
if(y>100 && y<140) // AC function
{
box(550,100,55,BLACK,WHITE);
delay(200);
box(550,100,55,WHITE,BLACK);
return 0;
}

18
if( y>160 && y<200) // HEX function
{
box(550,160,55,BLACK,WHITE);
delay(200);
box(550,160,55,WHITE,BLACK);
com(n,16);
}
if( y>220 && y<260) // BINARY function
{
box(550,220,55,BLACK,WHITE);
delay(200);
box(550,220,55,WHITE,BLACK);
com(n,2);
}
if( y>280 && y<320) //OCTAL function
{
box(550,280,55,BLACK,WHITE);
delay(200);
box(550,280,55,WHITE,BLACK);
com(n,8);
}
return 0;
}
/*---------common for HEX, BINARY & OCTAL-------------*/

long com(long b,int k)


{
char *str;
int i=0;
itoa(b,str,k); // integer to array
if(k==16)
{
while(str[i]!='\0')
{
if(str[i]>96 && str[i]<103)
str[i]-=32;
i++;
}
}
setcolor(DARKGRAY);
outtextxy(35,60,str);

press();
return 0;
}

/*Program to find roots of a Quad. Eqn. */

roots( )
{
float a,b,c,disc,r1,r2,s,x,y;
int k=253;

closegraph();
restorecrtmode();

19
printf("Input values of a, b, c in ax%c+bx+c\n ",k);
scanf("%f%f%f",&a,&b,&c);
disc= b*b-4*a*c;
if(disc<0)
{
printf("\n roots are IMAGINERY \n");
s=-disc;
x=sqrt(s)/(2*a);
y=-b/(2*a);
printf("\n r1=%f+i%f",y,x);
printf("\n r2=%f-i%f",y,x);
}
else
{
r1=(-b+sqrt(disc))/(2.0*a);
r2=(-b-sqrt(disc))/(2.0*a);
printf("\n r1=%f \n r2=%f \n",r1,r2);
}
getch();
return;
}

/*---------------BUTTONS------------------------*/

int box(int x1,int y1,int l,int c1,int c2)


{
setcolor(c1);
setfillstyle(1,LIGHTGRAY);
rectangle(x1,y1,x1+l,y1+40);
floodfill(x1+3,y1+10,c1);
setcolor(c2);
line(x1+l,y1,x1+l,y1+40);
line(x1,y1+40,x1+l,y1+40);
return 0;
}

/*password at start screen*/

password()
{
int i,x=270,gm,gd=DETECT;
char ch,pass[10];
initgraph(&gd,&gm,"c:\\tc\\bgi");
rectangle(15,15,615,465);
setcolor(LIGHTBLUE);
setfillstyle(1,LIGHTBLUE);
floodfill(50,50,15);
settextstyle(1,HORIZ_DIR,3);
setcolor(BLACK);
outtextxy(200,50,"Enter the password");
for(i=0;i<=10;i++,x+=10)
{
ch=getch();
if(ch==13)
break;
outtextxy(x,150,"*");

20
sound(300);
delay(50);
nosound();
pass[i]=ch;
}
pass[i]='\0';
if(!strcmp(pass,"as")) //compare entered string with password
return 0;
else
cleardevice();
rectangle(15,15,615,465);
setcolor(LIGHTBLUE);
setfillstyle(1,LIGHTBLUE);
floodfill(50,50,15);
settextstyle(1,HORIZ_DIR,3);
setcolor(RED);
outtextxy(220,50,"Wrong Password");
outtextxy(80,150,"This program will terminate in 5 seconds");
for(i=5;i>=0;i--)
{
setcolor(LIGHTBLUE);
setfillstyle(1,LIGHTBLUE);
bar(300,240,330,300);
setcolor(RED);
outtextxy(310,250,itoa(i,pass,10));
sound(1000*i+500);
delay(300);
nosound();
delay(700);
}
exit(0);
return 0;
}

/*-----------solving scientific functions------------*/

//---the no. entered is in RADIANS

/*-----------check for first column------------------*/


colm1(long double a,int y)
{
double cal;
char *str;
z1[2]=a;

setcolor(WHITE); setfillstyle(1,WHITE);
bar(30,55,610,70);

if(y>=100 && y<=140) // SINE of entered no.


{
box(xy1[0],100,70,BLACK,WHITE);
delay(200);
box(xy1[0],100,70,WHITE,BLACK);
cal=sin(a);
}

21
if(y>=160 && y<=200) // HYPERBOLIC SINE of entered no.
{
box(xy1[0],160,70,BLACK,WHITE);
delay(200);
box(xy1[0],160,70,WHITE,BLACK);
cal=sinh(a);
}
if(y>=220 && y<=260) // EXPONENTIAL of entered no.
{
box(xy1[0],220,70,BLACK,WHITE);
delay(200);
box(xy1[0],220,70,WHITE,BLACK);
cal=exp(a);
}
if(y>=280 && y<=320) // Yth ROOT of entered no.
{
box(xy1[0],280,70,BLACK,WHITE);
delay(200);
box(xy1[0],280,70,WHITE,BLACK);
z2[1]='r';
return 0;
}
if(y>=340 && y<=380) // Yth POWER of entered no.
{
box(xy1[0],340,70,BLACK,WHITE);
delay(200);
box(xy1[0],340,70,WHITE,BLACK);
z2[1]='p';
return 0;
}
if(y>=400 && y<=440) // HYPOTENUSE of entered no.
{
box(xy1[0],400,70,BLACK,WHITE);
delay(200);
box(xy1[0],400,70,WHITE,BLACK);
z2[1]='h';
return 0;
}

setcolor(DARKGRAY);
gcvt(cal,10,str);
outtextxy(35,60,str);

press();
return(0);
}

/*-----------check for second column------------------*/


colm2(long double a,int y)
{
double cal;
int i;
char *str;

setcolor(WHITE); setfillstyle(1,WHITE);
bar(30,55,610,70);

22
if(y>=100 && y<=140) // COSINE of entered no.
{
box(xy1[1],100,70,BLACK,WHITE);
delay(200);
box(xy1[1],100,70,WHITE,BLACK);
cal=cos(a);
}
if(y>=160 &&y<=200) // HYPERBOLIC COSINE of entered no.
{
box(xy1[1],160,70,BLACK,WHITE);
delay(200);
box(xy1[1],160,70,WHITE,BLACK);
cal=cosh(a);
}
if(y>=220 && y<=260) // NATURAL LOG of entered no.
{
box(xy1[1],220,70,BLACK,WHITE);
delay(200);
box(xy1[1],220,70,WHITE,BLACK);
cal=log(a);
}
if(y>=280 && y<=320) // INVERSE of entered no.
{
box(xy1[1],280,70,BLACK,WHITE);
delay(200);
box(xy1[1],280,70,WHITE,BLACK);
cal=1/a;
}
if(y>=340 && y<=380) // SQRT of entered no.
{
box(xy1[1],340,70,BLACK,WHITE);
delay(200);
box(xy1[1],340,70,WHITE,BLACK);
cal=sqrt(a);
}
if(y>=400 && y<=440) // QUADRATIC EQN.
{
box(xy1[1],400,70,BLACK,WHITE);
delay(200);
box(xy1[1],400,70,WHITE,BLACK);
roots();
draw();
return 0;
}

setcolor(DARKGRAY);
gcvt(cal,10,str);
outtextxy(35,60,str);

press();
return 0;
}

/*-----------check for third column------------------*/


colm3(long double a,int y)

23
{
double cal;
char *str;

setcolor(WHITE); setfillstyle(1,WHITE);
bar(30,55,610,70);

if(y>=100 && y<=140) // TANGENT of entered no.


{ box(xy1[2],100,70,BLACK,WHITE);
delay(200);
box(xy1[2],100,70,WHITE,BLACK);
cal=tan(a);
}
if(y>=160 && y<=200) //HYPERBOLIC TANGENT of entered no.
{
box(xy1[2],160,70,BLACK,WHITE);
delay(200);
box(xy1[2],160,70,WHITE,BLACK);
cal=tanh(a);
}
if(y>=220 && y<=260) // LOG TO THE BASE 10 of entered no.
{
box(xy1[2],220,70,BLACK,WHITE);
delay(200);
box(xy1[2],220,70,WHITE,BLACK);
cal=log10(a);
}
if(y>=280 && y<=320) // SQUARE of entered no.
{
box(xy1[2],280,70,BLACK,WHITE);
delay(200);
box(xy1[2],280,70,WHITE,BLACK);
cal=pow(a,2);
}
if(y>=340 && y<=380) // FACTORIAL of entered no.
{
box(xy1[2],340,70,BLACK,WHITE);
delay(200);
box(xy1[2],340,70,WHITE,BLACK);
cal=1;
for(;a>=1;a--)
cal=cal*a;
}
if(y>=400 && y<=440) // conversion of DEGREES to RADIANS
{
box(xy1[2],400,70,BLACK,WHITE);
delay(200);
box(xy1[2],400,70,WHITE,BLACK);
cal=(180*a)/pi;
}
setcolor(DARKGRAY);
gcvt(cal,10,str);
outtextxy(35,60,str);

press();
return(0);

24
}

//Changing the blue rectangle contents

press()
{
int x;
x=getmaxx();
setcolor(BLACK);
setfillstyle(1,RED);
bar(21,20,x-21,40);
floodfill(25,25,BLACK); /* blue rectangle*/
setcolor(WHITE);
outtextxy(x-250,27,"Press Any Key To Continue"); /*---Continue---*/
getch();

setcolor(LIGHTGRAY);
setfillstyle(1,WHITE);
floodfill(32,59,LIGHTGRAY);
setcolor(BLACK);setfillstyle(1,BLUE);
rectangle(21,20,x-21,40);
floodfill(25,25,BLACK); /* blue rectangle*/
setcolor(WHITE);
outtextxy(x-220,27,"Press Any Key To Quit."); /*---Quit---*/
}

/*-----------------------END--------------------------------------*/

25
APPLICATIONS
In most countries, students use calculators for schoolwork.
There was some initial resistance to the idea out of fear that
basic arithmetic skills would suffer. There remains disagreement
about the importance of the ability to perform calculations "in
the head", with some curricula restricting calculator use until a
certain level of proficiency has been obtained, while others
concentrate more on teaching estimation techniques and
problem-solving. Research suggests that inadequate guidance in
the use of calculating tools can restrict the kind of mathematical
thinking that students engage in. Others have argued that
calculator use can even cause core mathematical skills to
atrophy, or that such use can prevent understanding of advanced
algebraic concepts.
There are other concerns - for example, that a pupil could use
the calculator in the wrong fashion but believe the answer
because that was the result given. Teachers try to combat this by
encouraging the student to make an estimate of the result
manually and ensuring it roughly agrees with the calculated
result. Also, it is possible for a child to type in −1 × −1 and
obtain the correct answer '1' without realizing the principle
involved. In this sense, the calculator becomes a crutch rather
than a learning tool, and it can slow down students in exam

26
conditions as they check even the most trivial result on a
calculator.

FUTURE SCOPE OF THE


PROJECT

Our project will be able to implement in future after


making some changes and modifications as we make our
project at a very low level. So the modifications that can
be done in our project are:
To make it screen touch so no need to touch key buttons
and one more change which can we made is to add snaps
of the person who use it.

TESTING
Testing is the major control measure used during software development.
Its basic function is to detect errors in the software. During requirement
analysis and design, the output is a document that is usually textual and
no executable. After the coding phase, computer programs are available
that can be executed for testing purpose. This implies that testing not
only, has to uncover errors introduced during coding, but also errors
introduced during previous phase. Thus the goal of testing is to uncover
the requirements, design and coding errors in the programs. The

27
Sourcecode declared above for the program of Scientific Calculator has
been tested and it has been found that the above source code is okay and
correct.The program involves many type of conversions. These
conversions has to done carefully

REFERENCES

1. Thomas J. Bing, Edward F. Redish, Symbolic Manipulators Affect Mathematical Mindsets,


December 2007
2. ^ Mike Sebastian's calculator forensics algorithm is an example of such rounding errors -- the
algorithm's arcsin(arccos(arctan(tan(cos(sin(9)))))) should come out 9 on standard floating point
hardware, but for CORDIC it's a pathological case that produces different rounding errors on
each chip that it is implemented on. The algorithm is primarily used to identify the manufacturer
of a particular calculator's CPU, since it is usually reproducible between chips of the same model.
3. ^ Georges Ifrah notes that humans learned to count on their hands. Ifrah shows, for example, a
picture of Boethius (who lived 480–524 or 525) reckoning on his fingers in Ifrah 2000, p. 48.
4. ^ According to Schmandt-Besserat 1981, these clay containers contained tokens, the total of
which were the count of objects being transferred. The containers thus served as a bill of lading
or an accounts book. In order to avoid breaking open the containers, marks were placed on the
outside of the containers, for the count. Eventually (Schmandt-Besserat estimates it took 4000
years) the marks on the outside of the containers were all that were needed to convey the count,
and the clay containers evolved into clay tablets with marks for the count.
5. ^ Lazos 1994
6. ^ Ancient Discoveries, Episode 11: Ancient Robots, History Channel,
http://www.youtube.com/watch?v=rxjbaQl0ad8, retrieved on 6 September 2008
7. ^ A Spanish implementation of Napier's bones (1617), is documented in Montaner i Simon 1887,
pp. 19-20.
8. ^ Kells, Kern & Bland 1943, p. 92
9. ^ Kells, Kern & Bland 1943, p. 82, as log(2)=.3010, or 4 places.
10.^ Schmidhuber
11.^ As quoted in Smith 1929, pp. 180-181
12.^ Slide Rules
13.^ Smart Computing Article - Calculating Clock to Carnegie Mellon University
14.^ IBM Archives: IBM 608 calculator
15.^ "Simple and Silent", Office Magazine, Dec. 1961, p1244
16.^ "'Anita' der erste tragbare elektonische Rechenautomat" [trans: "the first portable electronic
computer"], Buromaschinen Mechaniker, Nov. 1961, p207
17.^ Texas Instruments Celebrates the 35th Anniversary of Its Invention of the Calculator Texas
Instruments press release, 15 Aug 2002.
18.^ Electronic Calculator Invented 40 Years Ago All Things Considered, NPR, 30 Sept 2007.
Audio interview with one of the inventors.
19.^ "Single Chip Calculator Hits the Finish Line", Electronics's', Feb. 1 1971, p19

28
29