Advertisement
2_2002-2004 Graphics/ Sound #128178

A5*Calculator

The scientific calculator performs all scientific operations encountered in enginerring applications.

AI

AI Summary: This codebase represents a historical implementation of the logic described in the metadata. Our preservation engine analyzes the structure to provide context for modern developers.

Source Code
original-source
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<math.h>
#include<graphics.h>
#include<dos.h>
union REGS i,o;
char numc[]={'1','2','3','4','5','6','7','8','9','0','=','-','+','*','/'};
int optr[]={48,61,45,43,42,246},sq[]={251,253,227};
int button,xx,yy;
int xco[15],k=-1,x=210;
int xcor,ycor;
int yco[15],num=0;
int prevx,prevy;
int xx1=210,yy1=328,up=0;//xx1=210,yy1=181;
int numascii[]={49,50,51,52,53,54,55,56,57,48,61,45,43,42,246};
char numstring[14];
void main()
{
int i,c=4,x1,y1=377,x2,n=0,k=0;//x=210;
int gd=DETECT,gm;
int key;
//struct stack exp;
char numcod[5];
initgraph(&gd,&gm," ");
//hidemouseptr();
cleardevice();
setcolor(14);
settextstyle(4,HORIZ_DIR,4);outtextxy(185,7,"C a l c u l a t o r");
setlinestyle(0,0,3);
setcolor(8); settextstyle(0,HORIZ_DIR,0);
rectangle(200,60,440,345);
line(200,95,440,95); setfillstyle(1,4);setcolor(15);
bar(380,130,437,103);outtextxy(388,114,"On/Off");
setfillstyle(1,1);setcolor(14);
for(i=0;i<3;i++)
 {
 y1=y1-49;x1=210;
 for(c=0;c<3;c++)
 {
 xco[num]=x1;yco[num]=y1;
 num++;itoa(num,numcod,10);
 bar(x1,y1,x1+12,y1+12);outtextxy(x1+4,y1+4,numcod);x1=x1+52;
 }
 }
 y1=377;
for(i=0;i<3;i++)
 {
 y1=y1-49;x2=x1;
 for(c=0;c<2;c++)
 {
 xco[num]=x2;yco[num]=y1;
 bar(x2,y1,x2+12,y1+12);outtextxy(x2+4,y1+4,&optr[n]);n++;
 x2=x2+52;num++;
}
 }
setfillstyle(1,10);setcolor(6);
bar(290,207,340,220);outtextxy(297,210,"RESET");
bar(210,181,238,193);outtextxy(214,183,"exp");
bar(248,179,278,195);outtextxy(256,184,"y");outtextxy(264,180,"x");
bar(288,181,298,193);outtextxy(290,185,&sq[0]);
bar(308,179,334,195);outtextxy(316,184,"x");outtextxy(324,180,"2");
bar(344,179,374,195);outtextxy(360,185,"y");outtextxy(352,185,&sq[0]); outtextxy(348,180,"x");
bar(380,179,408,195);outtextxy(384,183,"1/x");
bar(416,181,430,193);outtextxy(417,183,"n!");
bar(210,140,228,152);outtextxy(213,144,"ln");
bar(238,138,268,156);outtextxy(246,143,"e");outtextxy(254,139,"x");
bar(276,140,300,152);outtextxy(277,143,"log");
bar(308,138,338,156);outtextxy(316,145,"10");outtextxy(329,138,"x");
bar(346,140,370,152);outtextxy(347,143,"Sin");
bar(378,140,402,152);outtextxy(379,143,"Cos");
bar(410,140,434,152);outtextxy(411,143,"Tan");
bar(210,99,250,112);outtextxy(213,103,"Tan");outtextxy(238,99,"-1");
bar(260,99,300,112);outtextxy(261,103,"Cos");outtextxy(286,99,"-1");
bar(308,99,348,112);outtextxy(309,103,"Sin");outtextxy(334,99,"-1");
bar(356,104,366,114);outtextxy(358,105,".");setfillstyle(1,7);
//bar(210,328,222,340);
bar(203,63,437,93);
initmouse();
showmouseptr();
while(1)
{
mouse_ctrl();
}
}
calculate()
{
 int len=0,f1=0,f2=0,k,rp=0,st;
 int rest[4],nop=0;
 double res;
 float resd;
 char numstr1[7],numstr2[7],op,strres[14];
 outtextxy(280,450,"calculating...");
 for(rp=0;rp<strlen(numstr1);rp++)
 {
 numstr1[rp]='\0';
 }
 for(rp=0;rp<strlen(numstr2);rp++)
 {
 numstr2[rp]='\0';
 }
 numstring[strlen(numstring)]='\0';
 len=strlen(numstring);puts(numstring);puts("hit a key");getch();
 for(rp=0;rp<len;rp++)
 {
 if(numstring[rp]=='+' || numstring[rp]=='-' || numstring[rp]=='*' || numstring[rp]=='/')
 {
 op=numstring[rp];st=rp;
 for(f2=rp+1;f2<len;f2++)
 {
 numstr2[f1]=numstring[f2];++f1;
 }
 }
 }
 for(rp=0;rp<st;rp++)
 {
 numstr1[rp]=numstring[rp];
 }
 numstr1[rp]='\0';numstr2[f1]='\0';
 //puts(numstr1);puts(numstr2);printf("%c",op); getch();
 switch(op)
 {
 case '+': res=atof(numstr1)+atof(numstr2);break;
 case '*': res=atof(numstr1)*atof(numstr2);break;
 case '/': res=atof(numstr1)/atof(numstr2);break;
 case '-': res=atof(numstr1)-atof(numstr2);break;
 }
 gcvt(res,6,strres); //puts(strres);
 outtextxy(x+16,74,strres);x=x+16;
 for(rp=0;rp<len;rp++)
 {
 numstring[rp]='\0';
 }
 for(rp=0;rp<strlen(strres);rp++)
 {
 numstring[rp]=strres[rp];
 }
 numstring[rp]='\0';
 for(rp=0;rp<strlen(strres);rp++)
 {
 strres[rp]='\0';
 }
 for(rp=0;rp<strlen(numstr1);rp++)
 {
 numstr1[rp]='\0';
 }
 for(rp=0;rp<strlen(numstr2);rp++)
 {
 numstr2[rp]='\0';
 }
 k=strlen(numstring)-1;op='\0'; setfillstyle(1,7);//puts(numstring);
 bar(203,63,437,93);x=210;outtextxy(x,72,numstring);x=x+8*(k);
 return;
}
mouse_ctrl()
{
int rp=0,sq,i=0;
double sqf,ctof,xtof;
char ntoc[5];
char symb[1];
char xstr[4];
//cleardevice();
fflush(stdin);
initmouse();
showmouseptr();
outtextxy(280,450,"mouse activated...");
while(1)
{
 getmousepos(&button,&xcor,&ycor);
 if((button & 1)==1)
 {
 if(xcor>308 && xcor<334 && ycor>179 && ycor<195)
 {
 sqf=atof(numstring)*atof(numstring);
 gcvt(sqf,5,ntoc);
 goto fun_call;
 }
 if(xcor>290 && xcor<340 && ycor>210 && ycor<220)
 {
 //reset(ntoc);
 gcvt(0.0,5,ntoc);goto fun_call;
 }
 if(xcor>380 && xcor<408 && ycor>179 && ycor<195)
 {
 ctof= atof(numstring);
 sqf=1/ctof;gcvt(sqf,5,ntoc);goto fun_call;
 }
 if(xcor>210 && xcor<228 && ycor>140 && ycor<152)
 {
 ctof=log((atof(numstring)));
 gcvt(ctof,5,ntoc);goto fun_call;
 }
 if(xcor>276 && xcor<300 && ycor>140 && ycor<152)
 {
 ctof=log(atof(numstring))/log(10);
 gcvt(ctof,5,ntoc);goto fun_call;
 }
 if(xcor>288 && xcor<298 && ycor>181 && ycor<193)
 {
 ctof=sqrt(atof(numstring));
 gcvt(ctof,5,ntoc);goto fun_call;
 }
 if(xcor>238 && xcor<268 && ycor>138 && ycor<156)
 {
 ctof=exp(atof(numstring));
 gcvt(ctof,5,ntoc);goto fun_call;
 }
 if(xcor>416 && xcor<430 && ycor>181 && ycor<193)
 {
 ctof=atof(numstring);sqf=1.0;
 for(rp=1;rp<=ctof;rp++)
 {
 sqf=sqf*rp;
 }
 gcvt(sqf,5,ntoc);goto fun_call;
 }
 if(xcor>308 && xcor<338 && ycor>138 && ycor<156)
 {
 ctof=pow(10,atof(numstring));
 gcvt(ctof,5,ntoc);goto fun_call;
 }
 if(xcor>346 && xcor<370 && ycor>140 && ycor<152)
 {
 ctof=sin(atof(numstring));
 gcvt(ctof,5,ntoc);goto fun_call;
 }
 if(xcor>378 && xcor<402 && ycor>140 && ycor<152)
 {
 ctof=cos(atof(numstring));
 gcvt(ctof,5,ntoc);goto fun_call;
 }
 if(xcor>410 && xcor<434 && ycor>140 && ycor<152)
 {
 ctof=tan(atof(numstring));
 gcvt(ctof,5,ntoc);goto fun_call;
 }
 if(xcor>210 && xcor<250 && ycor>99 && ycor<112)
 {
 ctof=atan(atof(numstring));
 gcvt(ctof,6,ntoc);goto fun_call;
 }
 if(xcor>260 && xcor<300 && ycor>99 && ycor<112)
 {
 ctof=acos(atof(numstring));
 gcvt(ctof,6,ntoc);goto fun_call;
 }
 if(xcor>308 && xcor<348 && ycor>99 && ycor<112)
 {
 ctof=asin(atof(numstring));
 gcvt(ctof,6,ntoc);goto fun_call;
 }
 if(xcor>248 && xcor<278 && ycor>179 && ycor<195)
 {
 setfillstyle(1,7);bar(203,63,437,93);x=210;
 xstr[i]=symb[0];outtextxy(x,72,xstr);++i;symb[0]='\0';puts(numstring);
 getmousepos(&button,&xcor,&ycor);
 if(xcor>418 && xcor<430 && ycor>328 && ycor<340)
 {
 ctof=atof(numstring);xtof=atof(xstr);puts(xstr);
 sqf=pow(ctof,xtof); printf("\n%d",sqf);
 gcvt(sqf,6,ntoc);goto fun_call;
 }
 else return;
 }
 if(xcor>210 && xcor<222 && ycor>328 && ycor<340)
 {
 symb[0]='1';
 goto fun;
 }
 if(xcor>262 && xcor<274 && ycor>328 && ycor<340)
 {
 symb[0]='2';
 goto fun;
 }
 if(xcor>314 && xcor<326 && ycor>328 && ycor<340)
 {
 symb[0]='3';
 goto fun;
 }
 if(xcor>366 && xcor<378 && ycor>328 && ycor<340)
 {
 symb[0]='0';
 goto fun;
 }
 if(xcor>418 && xcor<430 && ycor>328 && ycor<340)
 {
 calculate();
 }
 if(xcor>210 && xcor<222 && ycor>279 && ycor<291)
 {
 symb[0]='4';
 goto fun;
 }
 if(xcor>262 && xcor<278 && ycor>279 && ycor<291)
 {
 symb[0]='5';
 goto fun;
 }
 if(xcor>314 && xcor<326 && ycor>279 && ycor<291)
 {
 symb[0]='6';
 goto fun;
 }
 if(xcor>366 && xcor<378 && ycor>279 && ycor<291)
 {
 symb[0]='-';
 goto fun;
 }
 if(xcor>418 && xcor<430 && ycor>279 && ycor<291)
 {
 symb[0]='+';
 goto fun;
 }
 if(xcor>210 && xcor<222 && ycor>230 && ycor<242)
 {
 symb[0]='7';
 goto fun;
 }
 if(xcor>262 && xcor<274 && ycor>230 && ycor<242)
 {
 symb[0]='8';
 goto fun;
 }
 if(xcor>314 && xcor<326 && ycor>230 && ycor<240)
 {
 symb[0]='9';
 goto fun;
 }
 if(xcor>366 && xcor<378 && ycor>230 && ycor<242)
 {
 symb[0]='*';
 goto fun;
 }
 if(xcor>418 && xcor<430 && ycor>230 && ycor<242)
 {
 symb[0]='/';
 goto fun;
 }
 if(xcor>356 && xcor<366 && ycor>104 && ycor<114)
 {
 symb[0]='.';
 goto fun;
 }
 if(xcor>380 && xcor<437 && ycor>103 && ycor<130)
 {
 closegraph();exit(1);
 //main();
 }
 }
}
fun_call:
rel_print(ntoc);
return;
fun:
store(symb);
return;
}
store(char sym[])
{
numstring[strlen(numstring)]=sym[0];
setfillstyle(1,7);setcolor(0);
k=strlen(numstring);
bar(203,63,437,93);x=210;outtextxy(x,72,numstring);x=x+8*(k-1);
sym[0]='\0';
return;
}
rel_print(char ntoc[])
{
int rp=0;
for(rp=0;rp<strlen(numstring);rp++)
{
numstring[rp]='\0';
}
for(rp=0;rp<strlen(ntoc);rp++)
{
 numstring[rp]=ntoc[rp];
}
numstring[rp]='\0';
numstring[rp+1]='\0';
for(rp=0;rp<strlen(ntoc);rp++)
{
ntoc[rp]='\0';
}
ntoc[rp+1]='\0';
setfillstyle(1,7);setcolor(0);
k=strlen(numstring);
bar(203,63,437,93);x=210;outtextxy(x,72,numstring);x=x+8*(k-1);
fflush(stdin);
return;
}
initmouse()
 {
 i.x.ax=0;
 int86(0x33,&i,&o);return;
 }
 showmouseptr()
 {
 i.x.ax=1;
 int86(0x33,&i,&o);return;
 }
 /*changecursor(int *cursor)
 {
 i.x.ax=9;
 i.x.bx=0;
 i.x.cx=0;
 i.x.dx=(unsigned)cursor;
 segread(&s);
 s.es=s.ds;
 int86x(0x33,&i,&i,&s);return;
 }*/
 getmousepos(int *button,int *x,int *y)
{
	i.x.ax=3;
	int86(0x33,&i,&o);
	*button=o.x.bx;
	*x=o.x.cx;
	*y=o.x.dx;
	return;
}
hidemouseptr()
{
	i.x.ax=2;
	int86(0x33,&i,&o);
	return;
}
Original Comments (3)
Recovered from Wayback Machine