c-program to implement a simple calculator

Post on 13-Dec-2014

74 Views

Category:

Education

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

This program can be used as a simple calculator. Just type the arithmetic expression you want to compute in the following format: e.g. 1900+20145 And you will get the result.

TRANSCRIPT

C-Program to implement a Simple Calculator

Developed by: Sendash Pangambam

For suggestions and queries be free to contact me at sendashpangambam@live.com

This program can be used as a simple calculator.

Just type the arithmetic expression you want to compute in the following format:

<Operand_1><Operator><Operand_2>

e.g. 1900+20145

Operators:

ADDITION + e.g. 1234+4321

SUBTRACTION - e.g. 9712-3421

MULTIPLICATION * e.g. 5621*245

DIVISION / e.g. 915/56

EXPONENTIAL ^ e.g. 1231^64

***Terms and conditions:

This program is written for calculations involving integers only.

Inconvenience is regretted.

For suggestions and queries be free to contact me at sendashpangambam@live.com

HOW MY PROGRAM WORKS?

1. A string of the format given above is supplied as input, e.g. 21900*914990

2. The two integers on the both sides of the operator, „*‟ in this case, are

extracted from the input string.

3. According to the operator in the input string, calculation is done.

VARIABLES USED IN THIS PROGRAM:

1. ch – To read any character from the keyboard.

2. exp – Input expression.

3. op – Operator.

4. fop, sop – 1st and 2nd operand.

5. tfop, tsop – Temporary 1st and 2nd operand, used during division.

6. ddif – Difference in digits of extracted integers and length of input string.

7. And some other variables that you have already known are also used.

For suggestions and queries be free to contact me at sendashpangambam@live.com

“LET‟S GO TO THE PROGRAM”

For suggestions and queries be free to contact me at sendashpangambam@live.com

/*Simple Calculator*/ #include<stdio.h> #include<conio.h> #include<math.h> #include<stdlib.h> #include<string.h> long int appzero(long int n,int d) /*Function to append zeroes to the right of a number*/ { int i; for(i=0;i<d;i++) n=n*10; return(n); } int ndgts(long int n) /*Function to count the number of digits in a given integer*/

For suggestions and queries be free to contact me at sendashpangambam@live.com

{ int i; for(i=1;n!=0;i++) n=n/10; return(i-1); } long int reverse(long int n) /*Function to find reverse of an integer*/ { long int rev=0; while(n>0) { rev=rev*10+(n%10); n=n/10; } return(rev); }

For suggestions and queries be free to contact me at sendashpangambam@live.com

void main() { char ch; clrscr(); /*SOME INSTRUCTION ABOUT THIS PROGRAM*/ printf("READ ME:\n\n\tThis program can be used as a simple calculator.\n"); printf("\n\tJust type the arithmetic expression you want to compute. \n \t

Syntax for input expression:\n \t\t\t\t < Operand_1 >< Operator >< Operand_2 >\n\t\t\t\t eg. 1900+20145");

printf("\nOperators:\n\tADDITION \t+\teg. 1234+4321 \n\tSUBTRACTION \t-\teg. 9712-3421 \n\tMULTIPLICATION \t*\teg. 5621*245 \n\tDIVISION \t/\teg. 915/56 \n\tEXPONENTIAL \t^\teg. 1231^64\n\n");

printf("=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= +=+=+=+=+=+=+=+="); printf("\n\n***Terms and conditions:\n\t\tThis program is written for

calculations involving integers.\n\t\tDecimal calculations will be updated in the next versions.\n\t\tInconvinience is regretted.\n\n");

printf("=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=

For suggestions and queries be free to contact me at sendashpangambam@live.com

+=+=+=+=+=+=+=+=\n"); getch(); clrscr(); printf("DO YOU WISH TO CONTINUE ? (Y/N) "); ch=getch(); if(ch=='N'||ch=='n') { clrscr(); printf("PRESS ANY KEY TO EXIT "); getch(); exit(1); } clrscr(); printf("Let's try my simple calculator program"); getch(); while(1) { char *exp,op;

For suggestions and queries be free to contact me at sendashpangambam@live.com

long int fop,sop; double tfop,tsop; int ddif=0; clrscr(); printf("Enter the expression: "); gets(exp); fop=atol(exp); strrev(exp); sop=reverse(atol(exp)); ddif=strlen(exp) - ndgts(fop) - ndgts(sop); sop=appzero(sop,ddif-1); strrev(exp); if(exp[ndgts(fop)]=='+') { clrscr(); printf("\n%s = %ld",exp,fop+sop); } if(exp[ndgts(fop)]=='-')

For suggestions and queries be free to contact me at sendashpangambam@live.com

{ clrscr(); printf("\n%s = %ld",exp,fop-sop); } if(exp[ndgts(fop)]=='*') { clrscr(); printf("\n%s = %ld",exp,fop*sop); } if(exp[ndgts(fop)]=='/') { clrscr(); tfop=fop; tsop=sop; printf("\n%s = %lf",exp,tfop/tsop); } if(exp[ndgts(fop)]=='^') {

For suggestions and queries be free to contact me at sendashpangambam@live.com

clrscr(); tfop=fop; tsop=sop; printf("\n%s = %lf",exp,pow(tfop,tsop)); } getch(); clrscr();

printf("Do you have another calculation to do? (Y/N)\n\n*** For more help type 'H' \n\n\t\t\t");

ch=getch(); if(ch=='n'||ch=='N') { clrscr(); printf("\tThanks for your co-operation\n\tPress any key to exit"); getch(); exit(1); }

For suggestions and queries be free to contact me at sendashpangambam@live.com

if(ch=='h'||ch=='H') main(); } }

TRY THIS PROGRAM AND CHECK WHETHER IT WORKS OR NOT.

top related