Hi! ..My First Post

Am... I need a logic and/or some kind of help to code a c program which accepts a numeric equation and prints it step by step in order of precedence..

Eg:

the c program should accept any equation like : 5+(5-3)*6%10/6++ ie the equation may cointain +,-,*,/,%,++,-- and parantheses(any number of groups like (5(5(6(5(6)%10)))(5) etc with numbers( say integers)..

so, it should accept the equation and print it like this

Given Equation : 5+(5-3)*6%10/6++

Solution with precedence:

5+2*6%10/6++
5+3*6%10/7
5+18%10/7
5+18%1
5+0
5


the equation can be of any size...

ANY help is greatly appreciatied.. Please!


+++++++++++++++++++++++++++++++++++++++++++=

Added :

amm.... i was plannin to do like this

get equation as a string

check if proper characters are used, and equal open and close paranthesis

use a loop to send the string to a function say checkequation(), till the loop has a single number, in the loop print
the string each time the function is returned

in checkequation(),

get the inner most parantheses' indexes,
say
a= index of innermost '('
b=index of innermost ')'.
if no paranthesis is got send a=0, b= index of last char

probably the above is another function checkinnerparanthesis() and returns a and b


[

i need to know how to get the innermost paranthesis?...i could check for the last '(' and get the index of next ')' as a and b.... but lets take this case


((5+4)*(5+3))*(9+3)
so, if i check for the last paranthesis, i would get ( and ) in 9+3... but should i need ( and ) in 5+4 as paranthesis is from left to right?...

]

lets say the function returns a and b as planned...

now send the string from index a to b to another function evaluateequation ()

in the function evaluateequation()

the input string has no brackets . hence we have to search for post++,post--,pre++(R-L),pre--(R-L),*,/,%,+,- in order.. if a single occurance of one in order is got, get the strings(string1,string2) on both the sides(or in one side for ++,--) till the next operator,convert both strings to integers with atoi, do the correspondin operation,and store the result in the same string in the .....string1"operator"string2.... place, shift the rest characters and arrange the string.. thus we get .....result...... in the original string..

Also , if the ..result.. has ( and ) on either side, it is removed as the ( and ) are no longer necessory

return to function checkequation()

from checkequation(), it is returned to main(), where in the loop the string gets printed. But, since the string is not having a single char, the same process continues. when a single value(ie with no operators is got) exit the program

its just a rough logic i had.. .Please Help me out here. . .this is kinda VERY important and timed to be finished within 2 days ( this sunday max). . . Please help me out..

++++++++++++++++++++++++++++++++

Recommended Answers

All 4 Replies

Member Avatar for iamthwee

>this is kinda VERY important and timed to be finished within 2 days ( this sunday max). . . Please help me out..


Don't forget to use the header #include "very_small_violins" then.

((5+4)*(5+3))*(9+3)
so, if i check for the last paranthesis, i would get ( and ) in 9+3... but should i need ( and ) in 5+4 as paranthesis is from left to right?...

Why? I doesn't change the outcome in any way. Looks to me like your on the right road.

Don't forget to use the header #include "very_small_violins" then.

Oh what the hell, this is the joke of the century :mrgreen:
Keep it up Mr. Iamthwee

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.