User Name Password Register
DaniWeb IT Discussion Community
All
What is DaniWeb IT Discussion Community?
You're currently browsing the C section within the Software Development category of DaniWeb, a massive community of 391,696 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 3,174 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our C advertiser:
Views: 1420 | Replies: 3
Reply
Join Date: Oct 2006
Posts: 2
Reputation: highlanda is an unknown quantity at this point 
Rep Power: 0
Solved Threads: 0
highlanda highlanda is offline Offline
Newbie Poster

calculator program in C -help needed

  #1  
Oct 8th, 2006
Main problem i am having is that with the program it can have a 2 string equation - eg 25 R or 25 S (Reciprocal and Squareroot)
or a 3 string equation where the second string will be a number and the third string will be the operator. eg 10 5 + or -10 20 -

I am not sure how to get this to work - i can get the coding to work if its just the 2 string equation but then if it is a 3 string equation i come unstuck.

Can anyone provide some assistance please.
AddThis Social Bookmark Button
Reply With Quote  
Join Date: Aug 2005
Location: near St Louis, Missouri, USA
Posts: 10,548
Reputation: Ancient Dragon has much to be proud of Ancient Dragon has much to be proud of Ancient Dragon has much to be proud of Ancient Dragon has much to be proud of Ancient Dragon has much to be proud of Ancient Dragon has much to be proud of Ancient Dragon has much to be proud of Ancient Dragon has much to be proud of Ancient Dragon has much to be proud of 
Rep Power: 36
Solved Threads: 860
Moderator
Featured Poster
Ancient Dragon's Avatar
Ancient Dragon Ancient Dragon is offline Offline
Most Valuable Poster

Re: calculator program in C -help needed

  #2  
Oct 9th, 2006
I think you will want to investigate Reverse Polish Notation as it is applied to calculators. google has lots of information about it.
Reply With Quote  
Join Date: Oct 2006
Posts: 2
Reputation: highlanda is an unknown quantity at this point 
Rep Power: 0
Solved Threads: 0
highlanda highlanda is offline Offline
Newbie Poster

Help Re: calculator program in C -help needed

  #3  
Oct 9th, 2006
Sorry about lack of coding in previous post.
here we go :
Comments are included in the code.
Main points are the calculations for squareroot and reciprocal.
also the error check for alphabetic characters input in the first 22 strings.


// Calculator

//main things that need to be checked/corrected
scan 1st two strings for anything other than '-' and numbers
if so then give ERROR1
//check calculations for squareroot and reciprocal
//otherwise i think most stuff seems to work ok.


#include <stdlib.h>
#include <stdio.h>
//#include <math.h>
#include <conio.h>
#include <string.h>
//#include <ctype.h>
//#define RECIPROCAL (1/Num1)
//#define SQUAREROOT Num1^0.5
#define ISDIGIT(x) ((x) >= '0' && (x) <='9')
#define ERROR5 "Input strings too long. Applies to numbers and operators."
#define ERROR4 "Operation not possible."
#define ERROR3 "Division by zero."
#define ERROR2 "Unknown operation."
#define ERROR1 "Number contains alphabetic characters."
#define MAX 11
#define RECIPROCAL 1/x
#define SQUAREROOT
void main()
{
int Add, Subtract, Multiply;
float Divide = 0.0;
double Squareroot;
double Reciprocal;
int Num1;
int Num2;
char Num2atoi;
char Str2[MAX];
char Str1[MAX];
char Operator;
printf("\nPlease enter the required calculation\n");

scanf("%s %s", &Str1, &Str2);
//checks on num1 for numbers or - at the start only - 10 digits max
// if ((Num1)
// error check #5 - test string length is max10
{
if (strlen(Str1) > MAX-1)
printf(ERROR5);
else if
(strlen(Str2) > MAX-1)
printf(ERROR5);
else if
((*Str2) == 'S')
//what is the equation for this??????
printf("this is Squareroot \n" );
//squareroot=Num1^0.5;
// printf("=%lf ", Num1^y);

else if
((*Str2) == 'R')
//n1=(float) Num1;
printf("=Recip\n" );
//error1 - test for alphabetic characters
//check cos this doesnt work.
else if
ISDIGIT(*Str1)
//(*Str1<'0' || *Str1>'0' || *Str1=='-')
// Num1= atoi(Str1);
// Num2= atoi(Str2);
printf("its a digit");
else
printf("its not a valid number");
{
scanf(" %s", &Operator);
Num1= atoi(Str1);
Num2= atoi(Str2);
switch(Operator)
{
case '+':
printf("= %d", Num1+Num2);
break;
case '-':
printf("= %d \n", Num1-Num2);
break;
case '*':
printf("=%d ", Num1*Num2);
break;
case '/':
if(*Str2 == '0')
{
printf(ERROR3);
break;
}
else
//Num1= atof(Str1);
{ //Num2= atof(Str1);
//does this need to change for decimal. Divide=Num1/Num2;
printf("=%f", Divide);
break;
}
default :
printf(ERROR2);
}

}
getch();
}}
Reply With Quote  
Join Date: Jun 2005
Location: Novi Sad, Serbia
Posts: 273
Reputation: andor has a spectacular aura about andor has a spectacular aura about andor has a spectacular aura about 
Rep Power: 6
Solved Threads: 29
andor's Avatar
andor andor is offline Offline
Posting Whiz in Training

Re: calculator program in C -help needed

  #4  
Oct 9th, 2006
Use code tags and read this
If you want to win, you must not loose (Alan Ford)
Reply With Quote  
Reply

Only community members can participate in forum threads. You must register or log in to contribute.

Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)

 

DaniWeb C Marketplace
Thread Tools Display Modes

Similar Threads
Other Threads in the C Forum

All times are GMT -4. The time now is 2:40 am.
Forum system based on vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
©2003 - 2008 DaniWeb® LLC