hi all...recently i was given a project of making a scientific calculator using microsoft visual C++....so i downloaded some codes...but there is this graphics.h file which is not supported by VC++ !!. can any one help me with the codes of a scientific calculator in VC++...without using any graphics.h file !! so that i can take help from it !! i need only a simple scientific calculator having ( sin,cos,tan and other functions ). one more thing.. i cannot have any interface like the windows calculator...i have to do the calculations on the black screen !

plz plz....HELP!! the project is due on 2 dayz !

Recommended Answers

All 4 Replies

take the program you have and strip out all the calls to graphics.h functions and what is left is what you probably want to incorporate into your VC++ program. My guess is that there is other code in that program to support the graphics functions which you will not need either. The main things you want to keep is the algorithms used to make the calculator work. BTW I've never written one so I can't help you with that.

take the program you have and strip out all the calls to graphics.h functions and what is left is what you probably want to incorporate into your VC++ program. My guess is that there is other code in that program to support the graphics functions which you will not need either. The main things you want to keep is the algorithms used to make the calculator work. BTW I've never written one so I can't help you with that.

thanks...but a small problem !! since i havnt done this thing b4...same as u...i really dont know which code would be the graphics function!! if i post the whole code...can you help me with it !! as in removing the graphics codes and keeping the algorithms ?

well here is the code that i downloaded!! i know its big...but plz if possible help me with it

/*
This source code is provided by Muhammad Saqib MYCPLUS Online Community WEbsite.
You are free to modify and change this code as per your requirements.

Website: [url]http://4-tech-support.com/[/url]
Email:   [email]msaqib@4-tech-support.com[/email]



*/
#include<stdio.h>
#include<conio.h>
#include<process.h>
#include<dos.h>
#include<stdlib.h>
#include<iostream.h>
#include<graphics.h>
#include<math.h>
#include<string.h>

float *mem;
int X=0, Y=0;
int row=17,col=5;
char dummy;
char flag='d',flagp='0';
char bflag='u',bflagp='u';
int mflag=0;
char ch,ch1,ch2;
int sflag=0;
int midx,midy;
# define UNCLICKED 0
# define CLICKED 1
# define PI 3.14159


char str1[]={"Muhammad Saqib Roll# 014"};

void typeit (int x,int y,int spacing,char string[])
{
char temp[2];
for (int i=0;i<strlen(string);i++)
		{
			 delay(100);
			 temp[0]=string[i];
			 temp[1]='\0';
			 outtextxy(x+(i+1)*spacing,y,temp);
		}//endfor

}
void front()
{
 int x,y,h;
 for(x=0;x<=100;x++)
 {
  settextjustify(CENTER_TEXT,CENTER_TEXT);
  setcolor(1);
  settextstyle(1,0,4);
  setusercharsize(x,6,x,3);
  setcolor(14);
  moveto(310,135);
  outtext("..");
  setcolor(6);
  moveto(310,130);
  outtext("I I");
  if(x<50)
  delay(30);
  else
  delay(20);
 }
 for(y=0;y<=100;y++)
 {
  setcolor(0);
  settextstyle(1,0,4);
  setusercharsize(y,6,y,3);
  moveto(310,135);
  outtext("..");
  moveto(310,130);
  outtext("I I");
 if(y>20)
 {
  settextstyle(7,0,3);
  setusercharsize(y-20,35,y-20,30);
  setcolor(9);
  outtext("CALCULATER");
  setcolor(2);
  outtext("___________");
  delay(15);
  if(y<100)
  {
   settextstyle(7,0,3);
   setusercharsize(y-20,35,y-20,30);
   setcolor(0);
   outtext("CALCULATER");
  }
 }
}
//delay(1000);
settextstyle(3,0,2);
delay(50);
outtextxy(midx-200,midy,"Group Members:-");
//x=10,y=10;
setcolor(6);
settextstyle(4,0,4);
typeit(midx-200,midy+50,15,str1);
getch();
//closegraph();
}

char input();
double add(double,double,char);
double angle_conv(double);
void basecng(double,double);
/************************************************************/
/*					       		    */
/*   THIS FUNCTION DRAWS THE BUTTONS OF THE CALCULATER      */
/*                                                          */
/************************************************************/
 void button_3d(int x1,int y1,int x2,int y2,int check,char* text,int color)
{
int up,low;
setfillstyle(1,7);
bar(x1,y1,x2,y2);
if(check==0)    //Unclicked
up=15,low=8;
else
up=8,low=15;     //Clicked
setcolor(low);
line(x2,y1,x2,y2);
line(x2-1,y1,x2-1,y2);
line(x1,y2,x2,y2);
line(x1+1,y2-1,x2,y2-1);

setcolor(up);
line(x1,y1,x2,y1);
line(x1+1,y1+1,x2-1,y1+1);
line(x1,y1,x1,y2);
line(x1+1,y1+1,x1+1,y2-1);
setcolor(color);

settextjustify(CENTER_TEXT,CENTER_TEXT);
outtextxy(x1+(x2 - x1)/2,(y1+(y2 - y1)/2)-2, text);

}
/*********************************************************************/
/*                                                                   */
/*               This function makes the opening screen              */
/*                                                                   */
/*********************************************************************/

void frontpage(void)
{
int mx, my;

mx = (getmaxx() / 2);
my = (getmaxy() / 2);

//SET baqckground color
setfillstyle(9, 1);
bar(0,0,getmaxx(),getmaxy());

//DRAW a bar, and make it look like a 3d bar
setfillstyle(1,7);
bar(50,20,600,400);

//DRAW lines for the top and left side
setcolor(15);
line(50,20,600,20);
line(51,21,599,21);
line(50,20,50,400);
line(51,21,51,399);

//DRAW lines for the bottom and right side
setcolor(8);
line(600,20,600,400);
line(599,21,599,400);
line(50,400,600,400);
line(51,399,600,399);

//DRAW two 3D bars for the left and right side

setfillstyle(9,8);
bar(70,40,100,380);
//getch();
bar(545,40,575,380);
setcolor(8);
rectangle(70,40,100,380);
rectangle(545,40,575,380);
setcolor(15);
line(100,40,100,380);
line(70,380,100,380);
line(575,40,575,380);
line(545,380,575,380);

//DRAW two 3D divider lines on both sides
setcolor(8);
line(110, 40, 110, 380);
line(535, 40, 535, 380);
setcolor(15);
line(111, 40, 111, 380);
line(536, 40, 536, 380);

//PRINT 3D text CALENDAR 2002
settextstyle(1, 0, 4);
settextjustify(1,1);
setcolor(15);
outtextxy(mx+2, my - 46, "MY CALCULATER");
setcolor(7);
outtextxy(mx + 1, my - 45, "MY CALCULATER");
setcolor(8);
outtextxy(mx + 2, my - 44, "MY CALCULATER");

//PRINT 3D text 2002
setcolor(15);
outtextxy(mx, my + 10, "2002");
setcolor(7);
outtextxy(mx + 1, my + 11, "2002");
setcolor(8);
outtextxy(mx + 2, my + 12, "2002");

//PRINT copyright notice
settextstyle(2, 0, 5);
setcolor(1);
outtextxy(mx + 1, my + 85, "Copyright 2002 by ASAS Creations");

getch(); //PAUSE for a while
}

/*********************************************************************/
/*                                                                   */
/*               This function makes the claculating screen          */
/*                                                                   */
/*********************************************************************/

 void screen(int x1, int y1, int x2, int y2)
 {
   setlinestyle(0,0,1);
   setfillstyle(SOLID_FILL, 8);
   bar(x1, y1, x2, y2);
   setfillstyle(SOLID_FILL, BLACK);
   bar(x1+1, y1+1, x2-1, y2-1);



   settextjustify(CENTER_TEXT, CENTER_TEXT);
  setcolor(15);
       line(x1+1, y1+1, x1+1, y2-1);
       line(x1+1, y1+1, x2-1, y1+1);
       line(x1+2, y1+2, x1+2, y2-2);
       line(x1+2, y1+2, x2-2, y1+2);
       setcolor(8);
       line(x1+1, y2-1, x2-1, y2-1);
       line(x2-1, y1+1, x2-1, y2-1);
       line(x1+2, y2-2, x2-2, y2-2);
       line(x2-2, y1+2, x2-2, y2-2);

   }


 /************************************************************************/
 /*                                                                      */
 /*              	     Mouse Related Functions                     */
 /*                                                                      */
 /************************************************************************/

void init_mouse()
{
	union REGS iregs, oregs;

	iregs.x.ax = 0;
	int86 (0x33, &iregs, &oregs);

	if (oregs.x.ax == 0)
	{
		cleardevice();
		printf("mouse not installed\n");
		getch();
		exit(1);
	}
       iregs.x.ax = 1;
       int86 (0x33, &iregs ,&oregs);
}
/*************************************************************/

void mouse()
{
	int button,x1,y1;
	union REGS iregs, oregs;

	iregs.x.ax = 3;
	int86 (0x33, &iregs ,&oregs);

	button = oregs.x.bx & 3;
	x1 = oregs.x.cx;
	y1 = oregs.x.dx;

	if(oregs.x.bx & 1)
	{
		X = x1 ; Y = y1;
	}

	if(button == 3)
		exit(0);
}



/*************************************************************/

void hide_mouse()
{
	union REGS ioRegs;
	ioRegs.x.ax=2;
	int86(0x33,&ioRegs,&ioRegs);
}



/*************************************************************/
void show_mouse()
{
	union REGS ioRegs;
	ioRegs.x.ax=1;
	int86(0x33,&ioRegs,&ioRegs);
}

/*************************************************************/
void remove_mouse()
{
	union REGS ioRegs;
	ioRegs.x.ax=0;
	int86(0x33,&ioRegs,&ioRegs);
}


/*************************************************************************/
/*                                                                       */
/*	THIS FUNCTION DRAWS THE CALCULATER ON THE SCREEN                 */
/*                                                                       */
/*************************************************************************/
void	structure()
	{
	init_mouse();
	setbkcolor(0);
	cleardevice();
	hide_mouse();
//**********************************************************
 //   Buttons Making

	front();
	frontpage();
	settextstyle(2,0,4);
	button_3d(50,20,600,400,UNCLICKED,"",1);     // main box
	screen(100,50,545,120);	  // screen


	setfillstyle(1,8);
	bar(52,22,598,42);
	button_3d(575,23,595,40,UNCLICKED,"x",0);
	setcolor(0);
	outtextxy(120,30,"Calculater v1.0");
	button_3d(108,140,208,160,UNCLICKED,"DEC",15); // box of decimal
	button_3d(218,140,318,160,UNCLICKED,"OCT",0); // box of octal
	button_3d(328,140,428,160,UNCLICKED,"HEX",0); // box of hexal
	button_3d(438,140,538,160,UNCLICKED,"BIN",0); // box of binary

	button_3d(350,205,380,225,UNCLICKED,"7",0);  // Box Of 7
	button_3d(390,205,420,225,UNCLICKED,"8",0);  // Box Of 8
	button_3d(430,205,460,225,UNCLICKED,"9",0);  // Box Of 9

	button_3d(350,230,380,250,UNCLICKED,"4",0);   // Box Of 4
	button_3d(390,230,420,250,UNCLICKED,"5",0);   // Box Of 5
	button_3d(430,230,460,250,UNCLICKED,"6",0);   // Box Of 6

	button_3d(480,230,510,250,UNCLICKED,"*",0);   // Box Of *
	button_3d(515,230,545,250,UNCLICKED,"/",0);   // Box Of \
	button_3d(480,205,510,225,UNCLICKED,"AC",4);	//Box Of AllClear (AC)
	button_3d(515,205,545,225,UNCLICKED,"CE",4);	//Box Of Clear (C)

	button_3d(350,255,380,275,UNCLICKED,"1",0);   // Box Of 1
	button_3d(390,255,420,275,UNCLICKED,"2",0);   // Box Of 2
	button_3d(430,255,460,275,UNCLICKED,"3",0);   // Box Of 3

	button_3d(350,280,380,300,UNCLICKED,"0",0);   // Box Of Zero (0)
	button_3d(390,280,420,300,UNCLICKED,".",0);   // Box Of Period (.)
	button_3d(430,280,460,300,UNCLICKED,"pi",0); // Box Of PhiFunction

	button_3d(480,255,510,275,UNCLICKED,"-",0);   //  Box Of -
	button_3d(515,255,545,275,UNCLICKED,"+",0);   //  Box Of +
	button_3d(350,305,460,325,UNCLICKED,"=",0);   // Box Of Equality
	button_3d(480,305,545,325,UNCLICKED,"shift",BLUE);   // Box Of shift

	button_3d(480,280,510,300,UNCLICKED,"sqrt",0);     //Box of x^n
	button_3d(515,280,545,300,UNCLICKED,"inv",0);      //box of 1/x

	button_3d(100,205,150,230,UNCLICKED,"Sin",0);	  // Box OfSin Function
	button_3d(160,205,210,230,UNCLICKED,"Cos",0);     // Box Of CosFunction
	button_3d(220,205,270,230,UNCLICKED,"Tan",0);	  // Box Of Tan Function


	button_3d(100,250,150,275,UNCLICKED,"sin^-1",0);    // Box Of sin^-1
	button_3d(160,250,210,275,UNCLICKED,"cos^-1",0);    // Box Of cos^-1
	button_3d(220,250,270,275,UNCLICKED,"tan^-1",0);    // Box Of tan^-1

	button_3d(100,300,150,325,UNCLICKED,"ln",0);    // Box Of ln
	settextjustify(CENTER_TEXT,CENTER_TEXT);
	setcolor(BLUE);
	settextstyle(2,0,4);
	outtextxy(125,290,"e");
	outtextxy(185,290,"10^x");
	outtextxy(245,290,"x^3");
	button_3d(160,300,210,325,UNCLICKED,"log",0);    // Box Of log
	button_3d(220,300,270,325,UNCLICKED,"x^2",0);    // Box Of x^2

	button_3d(100,350,150,370,UNCLICKED,"deg",15);
	button_3d(160,350,210,370,UNCLICKED,"rad",0);
	button_3d(220,350,270,370,UNCLICKED,"gra",0);
	button_3d(480,350,545,370,UNCLICKED,"Off",4);


	button_3d(350,350,380,370,UNCLICKED,"M+",0);
	button_3d(390,350,420,370,UNCLICKED,"M-",0);
	button_3d(430,350,460,370,UNCLICKED,"MR",0);






















	}
/*********************************************************/
/*                                                       */
/*			Main starts			 */
/*                                                       */
/*********************************************************/
void main()
{
 clrscr();

 double y=0,z=0,pnt,pnt1=0,x=0,r=0;

 int gdriver = DETECT, gmode, errorcode;
 int i;
 initgraph(&gdriver, &gmode, "f:\\tc\\bgi");
 midx=getmaxx()/2;midy=getmaxy()/2;
 structure();
 gotoxy(row,col);
 printf("\t\t\t\t\t");
 gotoxy(row,col);
 printf("0");
 mem=(float*)malloc(y*sizeof(float));
 while( ch!=27&&ch1!=27)   //While Escape is not pressed
 {                                      //and if base is not 10
  pnt1=0;//no doubleing point entered Yet
  ch2='0';
//  for(int a=0;ch!=27;a++)//a indicates whether a no. has been entered or not
  while(ch2!=27)
  //a=0 means that no no. has been entered yet
  {
  if(bflagp!='u')
       {
	 //gotoxy(row,col);
	 dummy=input();
	 if(dummy!='o')
	 {
	 gotoxy(row,col);
	 printf("The trail version does not support this feature");
	 input();
	 gotoxy(row,col);
	 printf("\t\t\t\t\t\t");
	// ch='0';
	 }
	  y=0;z=0;ch='0';
	 gotoxy(row,col);
	 printf("\t\t\t\t\t\t");
	 gotoxy(row,col);
	 printf("0");

	// bflagp='u';
       }


   ch=input();
   if(ch=='>'||ch=='<'||ch=='?')
   { sflag=0;
    if(ch=='>')   //M+
    *mem+=y;
    if(ch=='<')   //M-
    *mem-=y;
    if(ch=='?')    //MR
    {
    y=*mem;
    gotoxy(row,col);
    printf("\t\t\t\t\t\t");
    gotoxy(row,col);
    printf("%g",y);
    }
    if(*mem==0)
    mflag=0;
    if(*mem!=0)
    mflag=1;
   }
   if(mflag==0)
   {
   gotoxy(row,7);

   printf(" ");

   }
   if(mflag!=0)
   {
   gotoxy(row,7);

   printf("M");
   }
   gotoxy(row,col);

   if(ch=='a')
   {     sflag=0;
	 y=0;
	 gotoxy(row,col);
	 printf("\t\t\t\t\t");
	 gotoxy(row,col);
	 printf("0");
   }

   if(ch=='o')
    //for clearing the screen of the calculater
       {
       sflag=0;
       y=0;z=0;
       gotoxy(row,col);
       printf("\t\t\t\t    ");
       gotoxy(row,col);
       printf("0");
       gotoxy(row,col);
       break;
       }

   if(ch=='q')
     {
       sflag=0;
       y=sqrt(y);
       gotoxy(row,col);
       printf("\t\t\t\t    ");
       gotoxy(row,col);
       printf("%g",y);
     }
   if(ch=='m')
   {
	sflag=0;
	y=1/y;
	gotoxy(row,col);
       printf("\t\t\t\t    ");
       gotoxy(row,col);
       printf("%g",y);
     }
   if(ch=='+'||ch=='-'||ch=='/'||ch=='\\'||ch=='='||ch=='*')
       {
       sflag=0;
       break;
       }
   if(ch=='.') //case for a decimal point
       {
       sflag=0;
       if(pnt1==0) //ie no decimal has been entered yet
	{
	 gotoxy(row,col);
	 printf("\t\t\t\t    ");//         double
	 gotoxy(row,col);
	 printf("%g.",y);
	 pnt1=.1;   //ie one decimal point no has been entered
	 continue;  //go back to the begining and get the next number
	}
       else     //decimal point has alredy been entered and thus no change in the screen
	{
	 sflag=0;
	 continue; //go back to the begining
	}
       }//out of the '.' condition

 if(pnt1!=0)  //ie we have a doubleing point
  {  sflag=0;
   if(ch<='9'&&ch>='0') //input integer
   {
//   printf("%c",ch);
   x=(double)ch;//type cast the character into double to perforn further operations
   x-=48;      //since character digit indoubleing -48 gives the corresponding ASCII
   x=x*pnt1;   //make it a decimal
   y=x+y;      //add it in result
   pnt1*=.1;   //shift to the second doubleing point
   gotoxy(row,col);
   printf("%g",y);
   gotoxy(row,col);
   continue;   //back to the top
   }
  }
   //if no decimal point number then proceed

  if(ch<='9'&&ch>='0')
  { sflag=0;
   x=(double)ch;     //typecast to double
   x-=48;           //get corresponding ASCII
   y=(y*10)+x;      //add to right of result
   gotoxy(row,col);  //go back to start of the calc screen
   printf("\t\t\t\t    ");  //clear the screen
   gotoxy(row,col);
   printf("%g",y);  //print the number
  }
 if(ch=='u'||ch=='v'||ch=='w'||ch=='x')
  { sflag=0;
  if(bflagp==bflag&&bflag=='u')
  continue;
  else
  basecng(y,pnt1);
  }
if(ch=='d'||ch=='r'||ch=='g')
   {sflag=0;
    y=angle_conv(y);
    gotoxy(row,col);
    printf("\t\t\t\t    ");
    gotoxy(row,col);
    printf("%g",y);
  //  gotoxy(row,col);
 //   printf("%g",y);
  //  continue;
   }
  if(ch=='s'||ch=='c'||ch=='t'||ch=='i'||ch=='j'||ch=='k'||ch=='n'||ch=='l'||ch=='p'||ch=='h')
  //ie the user opted for a function
  {
    if(ch=='s'||ch=='c'||ch=='t')  //sin  /cos/tan
   { sflag=0;
    if(flag!='r')
    {
    flagp=flag;
    flag='r';
    y=angle_conv(y);
    flag=flagp;
    }
  //  gotoxy(row,col);
  //  printf("%g",y);getch();
    switch(ch)
    {

    case 's':	y=sin(y);  break;
    case 'c':   y=cos(y);  break;
    case 't':  	y=tan(y);  break;
    }
   }
   if(ch=='i'||ch=='j'||ch=='k')
    {sflag=0;
    if(flag!='r')
     {
     // flagp=flag;
      flagp='r';
      //y=angle_conv(y);
     }
    switch(ch)
    {
    case 'i':   y=asin(y);  break;
    case 'j':	y=acos(y);  break;
    case 'k':	y=atan(y);  break;
    }
    if(flag!='r')
    y=angle_conv(y);
   }
   else if(ch=='n')
	{
	if(sflag==1)
	{
	y=exp(y);
	sflag=0;
	}
	else
	y=log(y);     //ln
	}
   else if(ch=='l')
	{
	if(sflag==1)
	{
	 y=pow(10,y);
	 sflag=0;
	}
	else
	y=log10(y);    //log
	}
   else if(ch=='p')
	{
	if(sflag==1)
	{
	 y=pow(y,3);
	 sflag=0;
	}
	else
	y=pow(y,2);    //square
	}
   else if(ch=='h')
	{
	sflag=0;
	y=PI;          //pi
	}

   gotoxy(row,col);
   printf("\t\t\t\t    ");//Clear the screen
   gotoxy(row,col);
   printf("%g",y);
  }//else condition

}//out of second condition  ie we now have the first no. or function or operater

 for(;ch!=27&&ch1!='='&&ch!='=';)//ie the characters input are not ESCAPE or Equal to

	{
	pnt1=0;z=0;
	if(ch=='o'||ch1=='o')     // For Clear The Screen
	{

	sflag=0;
	y=0;z=0;
	gotoxy(row,col);
	printf("\t\t\t\t    ");
       //	gotoxy(col,row);
	gotoxy(row,col);
	printf("0");
	gotoxy(row,col);
	break;
	}
	for(;ch1!=27;)
	{
	gotoxy(row,col);
      // 	printf("%g",z);
       //	z=0;
	ch1=input();

	if(ch1=='>'||ch1=='<'||ch1=='?')
     {
     if(ch1=='>')   //M+
     *mem+=z;
     if(ch1=='<')   //M-
    *mem-=z;
    if(ch1=='?')    //MR
    {
    z=*mem;
    gotoxy(row,col);
    printf("\t\t\t\t    ");
    gotoxy(row,col);
    printf("%g",z);
    }
    if(*mem==0)
    mflag=0;
    if(*mem!=0)
    mflag=1;
   }
   if(mflag==0)
   {
   gotoxy(row,7);
   printf(" ");
   }
   if(mflag!=0)
   {
   gotoxy(row,7);
   printf("M");
   }
   gotoxy(row,col);


	if(ch1=='a')
	{
	z=0;
	 gotoxy(row,col);
	 printf("\t\t\t\t  ");
	 gotoxy(row,col);
	 printf("0");
   }

	if(ch=='o'||ch1=='o')     // For Clear The Screen
	{
	y=0;z=0;
	gotoxy(row,col);
	//cout<<"                ";
	printf("\t\t\t\t    ");
	gotoxy(row,col);
	printf("0");
	gotoxy(row,col);
	break;
	}
	if(ch1=='q')
     {
       z=sqrt(z);
       gotoxy(row,col);
       printf("\t\t\t\t    ");
       gotoxy(row,col);
       printf("%g",z);
     }
   if(ch1=='m')
   {
	z=1/z;
	gotoxy(row,col);
       printf("\t\t\t\t    ");
       gotoxy(row,col);
       printf("%g",z);
     }

	if(ch1=='.')
	{
	if(pnt1==0)
	{
	gotoxy(row,col);
	printf("\t\t\t\t    ");
	gotoxy(row,col);
	//cout<<z<<".";
	printf("%g.",z);
	pnt1=.1;
	continue;
	}
	else
	{
	continue;
	}
	}
	if(pnt1!=0)
	{
	if(ch1<='9'&&ch1>='0')
	{
//	printf("%c",ch1);
	x=(double)ch1;
	x-=48;
	x=x*pnt1;
	z=x+z;
	pnt1=pnt1*.1;
	gotoxy(row,col);
	printf("\t\t\t\t    ");
	gotoxy(row,col);
	printf("%g",z);
	continue;
	}
	}

if(ch1=='+'||ch1=='-'||ch1=='*'||ch1=='/'||ch1=='=')
break;
if(ch1>='0'&&ch1<='9')
{
x=(double)ch1;
x=x-48;
gotoxy(row,col);
printf("\t\t\t\t    ");
gotoxy(row,col);
z=(z*10)+x;
printf("%g",z);
}
if(ch=='u')
if(ch=='d'||ch=='r'||ch=='g')
{
 z=angle_conv(z);
 gotoxy(row,col);
 printf("\t\t\t\t    ");
 gotoxy(row,col);
 printf("%g",z);
// continue;
}
if(ch1=='s'||ch1=='c'||ch1=='t'||ch1=='i'||ch1=='j'||ch1=='k'||ch1=='n'||ch1=='l'||ch1=='p'||ch1=='h')
  //ie the user opted for a function
  {
   if(ch1=='s'||ch1=='c'||ch1=='t')  //sin
    {
    if(flag!='r')
     {
      flagp=flag;
      flag='r';
      angle_conv(z);
      flag=flagp;
     }
    switch(ch1)
    {
    case 's':   z=sin(z);  break;
    case 'c':	z=cos(z);  break;
    case 't':	z=tan(z);  break;
    }
   }
if(ch1=='i'||ch1=='j'||ch1=='k')
   {
   if(flag!='r')
     {
      flagp='r';
     }
    switch(ch1)
    {
    case 'i':   z=asin(z);  break;
    case 'j':	z=acos(z);  break;
    case 'k':	z=atan(z);  break;
    }
   z=angle_conv(z);
   }
  else if(ch1=='l')
	{
	z=log10(z);    //log
	}
   else if(ch1=='p')
	{
	z=pow(z,2);    //square
	}
   else if(ch1=='h')
	{
	z=PI;          //pi
	}

   gotoxy(row,col);
   printf("\t\t\t\t    ");
   gotoxy(row,col);
   printf("%g",z);
   gotoxy(row,col);
}
}

if(ch1=='+'||ch1=='-'||ch1=='=')
{
y=add(y,z,ch);
if(ch2!='0')
{
y=add(r,y,ch2);
ch2='0';
}
}
else
{
if(ch=='*'||ch=='/')
y=add(y,z,ch);
else
{
ch2=ch;
r=y;
y=z;
}
}
gotoxy(row,col);
printf("\t\t\t\t    ");
gotoxy(row,col);
printf("%g",y);
ch=ch1;
ch1='0';
if(ch=='='||ch1=='=')
break;
}
	if(ch=='o'||ch1=='o')     // For Clear The Screen
	{ y=0;z=0;
	gotoxy(row,col);
	printf("\t\t\t\t    ");
	gotoxy(row,col);
	printf("0");
	gotoxy(row,col);
	continue;
	}
	gotoxy(row,col);
	printf("\t\t\t\t    ");
	gotoxy(row,col);
	printf("%g",y);
	z=0;
	}

     //	getch();
	closegraph();
      remove_mouse();
      exit(0);

 }





/*************************************************************/
/*							     */
/*          This function gets the user's Input		     */
/*							     */
/*************************************************************/

char input()
	  {
	  X=0;Y=0;
	  char ch;
	  show_mouse();
	  if(bflag!='u')
	  {
	 button_3d(108,140,208,160,UNCLICKED,"DEC",15);
	 button_3d(218,140,318,160,UNCLICKED,"OCT",0);
	 button_3d(328,140,428,160,UNCLICKED,"HEX",0);
	 button_3d(438,140,538,160,UNCLICKED,"BIN",0);
	  bflag='u';
	  }
	  do
	  {
	  mouse();
	  if (X>=350 && X<=380 && Y>=205 && Y<=225) // Condition For 7
	  {
	  hide_mouse();
	  button_3d(350,205,380,225,CLICKED,"7",0);
	  show_mouse();
	  delay(250);
	  hide_mouse();
	  button_3d(350,205,380,225,UNCLICKED,"7",0);
	  show_mouse();
	  ch='7';
	  return ch;
	  }


	//**********************************************

	 if (X>=390 && X<=420 && Y>=205 && Y<=225) // Condition For 8
	 {

	 hide_mouse();
	 button_3d(390,205,420,225,CLICKED,"8",0);
	 show_mouse();
	 delay(250);
	 hide_mouse();
	 button_3d(390,205,420,225,UNCLICKED,"8",0);
	 show_mouse();
	 ch='8';
	 return ch;
	 }


	//*****************************************

	 if (X>=430 && X<=460 && Y>=205 && Y<=225) // Condition For 9
	 {
	 hide_mouse();
	 button_3d(430,205,460,225,CLICKED,"9",0);
	 show_mouse();
	 delay(250);
	 hide_mouse();
	 button_3d(430,205,460,225,UNCLICKED,"9",0);
	 show_mouse();
	 ch='9';
	 return ch;
	 }


	//***********************************

	 if (X>=350 && X<=380 && Y>=230 && Y<=250) // Condition For 4
	 {
	 hide_mouse();
	 button_3d(350,230,380,250,CLICKED,"4",0);
	 show_mouse();
	 delay(250);
	 hide_mouse();
	 button_3d(350,230,380,250,UNCLICKED,"4",0);
	 show_mouse();
	 ch='4';
	 return ch;
	 }


	//***********************************

	if (X>=390 && X<=420 && Y>=230 && Y<=250) // Condition For 5
	{
	hide_mouse();
	button_3d(390,230,420,250,CLICKED,"5",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(390,230,420,250,UNCLICKED,"5",0);
	show_mouse();
	ch='5';
	return ch;
	}


	//***********************************

	if (X>=430 && X<=460 && Y>=230 && Y<=250) // Condition For 6
	{
	hide_mouse();
	button_3d(430,230,460,250,CLICKED,"6",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(430,230,460,250,UNCLICKED,"6",0);
	show_mouse();
	ch='6';
	return ch;
	}


	//***********************************

	if (X>=480 && X<=510 && Y>=230 && Y<=250) // Condition For *
	{
	hide_mouse();
	button_3d(480,230,510,250,CLICKED,"*",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(480,230,510,250,UNCLICKED,"*",0);
	show_mouse();
	ch='*';
	return ch;
	}
       //***********************************

	if (X>=515 && X<=545 && Y>=230 && Y<=250) // Condition For /
	{
	hide_mouse();
	button_3d(515,230,545,250,CLICKED,"/",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(515,230,545,250,UNCLICKED,"/",0);
	show_mouse();
	ch='/';
	return ch;
	}

	//***********************************
	int  a,b;
	if (X>=350 && X<=380 && Y>=255 && Y<=275) // Condition For 1
	{
	hide_mouse();
	button_3d(350,255,380,275,CLICKED,"1",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(350,255,380,275,UNCLICKED,"1",0);
	show_mouse();
	ch='1';
	return ch;
	}

	   // *************************************

	if (X>=390 && X<=420 && Y>=255 && Y<=275) // Condition For 2
	{
	hide_mouse();
	button_3d(390,255,420,275,CLICKED,"2",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(390,255,420,275,UNCLICKED,"2",0);
	show_mouse();
	ch='2';
	return ch;
	}

	   // *************************************

	if (X>=430 && X<=460 && Y>=255 && Y<=275) // Condition For 3
	{
	hide_mouse();
	button_3d(430,255,460,275,CLICKED,"3",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(430,255,460,275,UNCLICKED,"3",0);
	show_mouse();
	ch='3';
	return ch;
	}

	   // *************************************

	if (X>=350 && X<=380 && Y>=280 && Y<=300) // Condition For 0
	{
	hide_mouse();
	button_3d(350,280,380,300,CLICKED,"0",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(350,280,380,300,UNCLICKED,"0",0);
	show_mouse();
	ch='0';
	return ch;
	}

	   // *************************************

	if (X>=390 && X<=420 && Y>=280 && Y<=300) // Condition For .
	{
	hide_mouse();
	button_3d(390,280,420,300,CLICKED,".",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(390,280,420,300,UNCLICKED,".",0);
	show_mouse();
	ch='.';
	return ch;
	}

	//**********************************************

	if (X>=430 && X<=460 && Y>=280 && Y<=300) // Condition For pi
	{
	hide_mouse();
	button_3d(430,280,460,300,CLICKED,"pi",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(430,280,460,300,UNCLICKED,"pi",0);
	show_mouse();
	ch='h';
	return ch;
	}

	 //***********************************************

	if (X>=480 && X<=510 && Y>=255 && Y<=275) // Condition For -
	{
	hide_mouse();
	button_3d(480,255,510,275,CLICKED,"-",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(480,255,510,275,UNCLICKED,"-",0);
	show_mouse();
	ch='-';
	return ch;
	}

	//**************************************************

	if (X>=515 && X<=545 && Y>=255 && Y<=275) // Condition For +
	{
	hide_mouse();
	button_3d(515,255,545,275,CLICKED,"+",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(515,255,545,275,UNCLICKED,"+",0);
	show_mouse();
	ch='+';
	return ch;
	}

	//*****************************************************

	if (X>=350 && X<=460 && Y>=305 && Y<=325) // Condition For =
	{
	hide_mouse();
	button_3d(350,305,460,325,CLICKED,"=",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(350,305,460,325,UNCLICKED,"=",0);
	show_mouse();
	ch='=';
	return ch;
	}

	//*****************************************************

	if (X>=480 && X<=545 && Y>=305 && Y<=325) // Condition For shift
	{
	hide_mouse();
	button_3d(480,305,545,325,CLICKED,"shift",BLUE);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(480,305,545,325,UNCLICKED,"shift",BLUE);
	show_mouse();
	ch='~';
	sflag=1;
	return ch;
	}


	//*************************************

	if (X>=480 && X<=510 && Y>=205 && Y<=225) // Condition For AC
	{
	hide_mouse();
	button_3d(480,205,510,225,CLICKED,"AC",4);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(480,205,510,225,UNCLICKED,"AC",4);
	show_mouse();
	ch='o';
	return ch;
	}
	/********************C*/
	if (X>=515 && X<=545 && Y>=205 && Y<=225) // Condition For C
	{
	hide_mouse();
	button_3d(515,205,545,225,CLICKED,"CE",4);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(515,205,545,225,UNCLICKED,"CE",4);
	show_mouse();
	ch='a';
	return ch;
	}

	  // ****************************************

	if (X>=100 && X<=150 && Y>=205 && Y<=230) // Condition For Sin
	{
	hide_mouse();
	button_3d(100,205,150,230,CLICKED,"Sin",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(100,205,150,230,UNCLICKED,"Sin",0);
	show_mouse();
	ch='s';
	return ch;
	}

	//***********************************

	if (X>=160 && X<=210 && Y>=205 && Y<=230) // Condition For Cos
	{
	hide_mouse();
	button_3d(160,205,210,230,CLICKED,"Cos",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(160,205,210,230,UNCLICKED,"Cos",0);
	show_mouse();
	ch='c';
	return ch;
	}

	 //***********************************

	if(X>=515&&X<=545&&Y>=280&&Y<=300)     //inverse
	 {
	hide_mouse();
	button_3d(515,280,545,300,CLICKED,"inv",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(515,280,545,300,UNCLICKED,"inv",0);
	show_mouse();
	ch='m';
	return ch;
	}


	if (X>=220 && X<=270 && Y>=205 && Y<=230) // Condition For Tan
	{
	hide_mouse();
	button_3d(220,205,270,230,CLICKED,"Tan",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(220,205,270,230,UNCLICKED,"Tan",0);
	show_mouse();
	ch='t';
	return ch;
	}

	//***********************************  */


	if (X>=100 && X<=150 && Y>=250 && Y<=275) // Condition For sin^-1
	{
	hide_mouse();
	button_3d(100,250,150,275,CLICKED,"sin^-1",0);
	show_mouse();
	delay(150);
	hide_mouse();
	button_3d(100,250,150,275,UNCLICKED,"sin^-1",0);
	show_mouse();
	ch='i';
	return ch;
	}
		    //**************************

	if (X>=160 && X<=210 && Y>=250 && Y<=275) // Condition For cos^-1
	{
	hide_mouse();
	button_3d(160,250,210,275,CLICKED,"cos^-1",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(160,250,210,275,UNCLICKED,"cos^-1",0);
	show_mouse();
	ch='j';
	return ch;
	}
		    //**************************

	if (X>=430 && X<=460 && Y>=350 && Y<=370) // Condition For MR
	{
	hide_mouse();
	button_3d(430,350,460,370,CLICKED,"MR",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(430,350,460,370,UNCLICKED,"MR",0);
	show_mouse();
	ch='?';
	return ch;
	}
	if (X>=390 && X<=420 && Y>=350 && Y<=370) // Condition For M-
	{
	hide_mouse();
	button_3d(390,350,420,370,CLICKED,"M-",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(390,350,420,370,UNCLICKED,"M-",0);
	show_mouse();
	ch='<';
	return ch;
	}
	if (X>=350 && X<=380 && Y>=350 && Y<=370) // Condition For M+
	{
	hide_mouse();
	button_3d(350,350,380,370,CLICKED,"M+",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(350,350,380,370,UNCLICKED,"M+",0);
	show_mouse();
	ch='>';
	return ch;
	}

	if (X>=220 && X<=270 && Y>=250 && Y<=275) // Condition For tan^-1
	{
	hide_mouse();
	button_3d(220,250,270,275,CLICKED,"tan^-1",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(220,250,270,275,UNCLICKED,"tan^-1",0);
	show_mouse();
	ch='k';
	return ch;
	}
		    //**************************


	if (X>=100 && X<=150 && Y>=300 && Y<=325) // Condition For ln
	{
	hide_mouse();
	button_3d(100,300,150,325,CLICKED,"ln",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(100,300,150,325,UNCLICKED,"ln",0);
	show_mouse();
	ch='n';
	return ch;
	}
		    //**************************

	if (X>=160 && X<=210 && Y>=300 && Y<=325) // Condition For log
	{
	hide_mouse();
	button_3d(160,300,210,325,CLICKED,"log",0);
	show_mouse();
	delay(150);
	hide_mouse();
	button_3d(160,300,210,325,UNCLICKED,"log",0);
	show_mouse();
	ch='l';
	return ch;
	}
		    //**************************

	if (X>=220 && X<=270 && Y>=300 && Y<=325) // Condition For X^2
	{
	hide_mouse();
	button_3d(220,300,270,325,CLICKED,"x^2",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(220,300,270,325,UNCLICKED,"x^2",0);
	show_mouse();
	ch='p';
	return ch;
	}
	if (X>=100 && X<=150 && Y>=350 && Y<=370) // Condition For deg
	{
	hide_mouse();
	button_3d(100,350,150,370,CLICKED,"deg",15);
	button_3d(160,350,210,370,UNCLICKED,"rad",0);
	button_3d(220,350,270,370,UNCLICKED,"gra",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(100,350,150,370,UNCLICKED,"deg",15);
	show_mouse();
	ch='d';
	flagp=flag;
	flag=ch;
	return ch;
	}	    //**************************
	if (X>=160 && X<=210 && Y>=350 && Y<=370) // Condition For rad
		{
	hide_mouse();
	button_3d(100,350,150,370,UNCLICKED,"deg",0);
	button_3d(160,350,210,370,CLICKED,"rad",15);
	button_3d(220,350,270,370,UNCLICKED,"gra",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(160,350,210,370,UNCLICKED,"rad",15);
	show_mouse();
	ch='r';
	flagp=flag;
	flag=ch;

	return ch;
	}
	if (X>=220 && X<=270 && Y>=350 && Y<=370) // Condition For gra
	{
	hide_mouse();
	button_3d(100,350,150,370,UNCLICKED,"deg",0);
	button_3d(160,350,210,370,UNCLICKED,"rad",0);
	button_3d(220,350,270,370,CLICKED,"gra",15);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(220,350,270,370,UNCLICKED,"gra",15);
	show_mouse();
	ch='g';
	flagp=flag;
	flag=ch;
	return ch;

	}
	if ((X>=480 && X<=545 &&Y>=350 &&Y <=370)||(X>=575&&X<=595&&Y>=23&&Y<=40))   //OFF
	{
	free(mem);
	exit(0);
	}
	if (X>=108 && X<=208 && Y>=140 && Y<=160) // Condition For dec
	{
	hide_mouse();
	button_3d(108,140,208,160,CLICKED,"DEC",15);
	button_3d(218,140,318,160,UNCLICKED,"OCT",0);
	button_3d(328,140,428,160,UNCLICKED,"HEX",0);
	button_3d(438,140,538,160,UNCLICKED,"BIN",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(108,140,208,160,UNCLICKED,"DEC",15);
	show_mouse();
	ch='u';
	bflagp=bflag;
	bflag=ch;
	return ch;
	}
	if (X>=218 && X<=318 && Y>=140 && Y<=160) // Condition For oct
	{
	hide_mouse();
	button_3d(108,140,208,160,UNCLICKED,"DEC",0);
	button_3d(218,140,318,160,CLICKED,"OCT",15);
	button_3d(328,140,428,160,UNCLICKED,"HEX",0);
	button_3d(438,140,538,160,UNCLICKED,"BIN",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(218,140,318,160,UNCLICKED,"OCT",15);
	show_mouse();
	ch='v';
	bflagp=bflag;
	bflag=ch;
	return ch;
	}
	if (X>=328 && X<=428 && Y>=140 && Y<=160) // Condition For hex
	{
	hide_mouse();
	button_3d(108,140,208,160,UNCLICKED,"DEC",0);
	button_3d(218,140,318,160,UNCLICKED,"OCT",0);
	button_3d(328,140,428,160,CLICKED,"HEX",15);
	button_3d(438,140,538,160,UNCLICKED,"BIN",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(328,140,428,160,UNCLICKED,"HEX",15);
	show_mouse();
	ch='w';
	bflagp=bflag;
	bflag=ch;
	return ch;
       }
       if (X>=438 && X<=538 && Y>=140 && Y<=160) // Condition For dec
	{
	hide_mouse();
	button_3d(108,140,208,160,UNCLICKED,"DEC",0);
	button_3d(218,140,318,160,UNCLICKED,"OCT",0);
	button_3d(328,140,428,160,UNCLICKED,"HEX",0);
	button_3d(438,140,538,160,CLICKED,"BIN",15);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(438,140,538,160,UNCLICKED,"BIN",15);
	show_mouse();
	ch='x';
	bflagp=bflag;
	bflag=ch;
	return ch;
	}
	if(X>=480&&X<=510&&Y>=280&&Y<=300)
	{
	hide_mouse();
	button_3d(480,280,510,300,CLICKED,"sqrt",0);
	show_mouse();
	delay(250);
	hide_mouse();
	button_3d(480,280,510,300,UNCLICKED,"sqrt",0);
	show_mouse();
	ch='q';
	return ch;
	}

	}while(kbhit() == 0);
	ch=getch();
	return ch;
	}

/*************************************************************************/
/*									 */
/*		This function performs the Calculations			 */
/*									 */
/*************************************************************************/
 double add(double x,double y,char ch)
{
	switch(ch)
	{
	case '+':
	y=x+y;
	break;
	case '-':
	y=x-y;
	break;
	case '*':
	y=x*y;
	break;
	case '/':
	y=x/y;
	}
	return y;
}

double  angle_conv(double no)
{
 if(flagp=='d')
 {
  if(flag=='r')
  {
   no=no*PI/180;
  }
  if(flag=='g')
  {
  no=no*1.1111111;
  }
 }
else if(flagp=='r')
 {
  if(flag=='d')
  {
  no=no*180/PI;
  }
  if(flag=='g')
  {
  no=no*180/PI*1.1111111;
  }
 }
else if(flagp=='g')
 {
  if(flag=='r')
  {
  no=no/(180*1.1111111)*PI;
  }
  if(flag=='d')
  {
  no=no/1.1111111;
  }
 }
 return(no);
}


 void basecng(double y,double pnt1)
{
 char str[17];
 if(pnt1!=0)
 {
  gotoxy(row,col);
  printf("The trial version does not support this feature");
  getch();
  bflag='u';
  bflagp='0';
   main();
 }
 if(bflagp!='u')
 {
  gotoxy(row,col);
  printf("The trial version does not support this feature ");
  getch();
 bflagp='0';
 bflag='u';
  main();
 }
 switch(bflag)
 {
 case 'v':
 itoa(y,str,8);
 gotoxy(row,col);
 printf("\t\t\t\t    ");
 gotoxy(row,col);
 printf("%s",str);
 bflagp='0';
 break;

 case 'w':
 itoa(y,str,16);
 gotoxy(row,col);
 printf("\t\t\t\t    ");
 gotoxy(row,col);
 printf("%s",str);
 bflagp='0';
// getch();
 break;

 case 'x':
 itoa(y,str,2);
 gotoxy(row,col);
 printf("\t\t\t\t    ");
 gotoxy(row,col);
 printf("%s",str);
// getch();
 bflagp='0';
 break;
 }
bflag='u';
}

hi plz help me i waana make a scientific calculater in c++ plz help me and send me source code

commented: Resurrecting a 2-year old post to beg for code? Shame! -3
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.