• Status: Solved
• Priority: Medium
• Security: Public
• Views: 256

# Question for SunnyCoder

Hey man. I wanted to write a program to process simple algebra problems..

like:

3x + 15 = 11 - x
4x = -4
x = -1

how would you suggest going about this? I dont plan to write it in C, I was acctually going to write it in Visual Basic, but you are good with math, so I was curious how you would suggest doing it. So far I've created a type structure array to store all the monomials, but how do you suggest processing it, I'm stumpted. If you want to throw out some C code, I can port it to VB.

-Brian
0
BrianGEFF719
1 Solution

Commented:
Will the problems be single variable linear equations like your example?
0

Commented:
Can we lowly creatures also participate in this question or you want only sunny's suggestion???
0

Author Commented:
Everyone feel free to comment.

Right now I am going to focus on Single Variables.
0

Commented:
If your problems will all be single variable linear equations you could just change = to -
evaluate at two x values, then extrapolate to where the expression equals 0
0

Commented:
e.g.
(3x + 15) - (11 - x)
(3*0 + 15) - (11 - 0) = 4
(3*1 + 15) - (11 - 1) = 8
x = 4/(4-8) = -1
0

Commented:
To make it simple (e.g. without going to RPN resolution etc...) you have to get 4 variables
v1 is the number of x on left side
v2 is the number on left side (no x)
v3 is the number of x on right side
v4 is the number on right side (no x)

e.g.  for 3x + 15 = 11 - x

v1 = 3
v2 = 15
v3 = -1
v4 = 11

The you calculate
vx = v1 - v3
vn = v4 - v2

And you have your result R = vn / vx

vx = v1 - v3 = 4
vn = -4
R = 4 / -4 = -1

How to proceed programmatically (automat)
1 -   initialize all v1,v2,v3,v4 to 0.
2 -   parse the equation left side for v1, v2
3 -   set default sign is "+"
4 -   you get a sign : set sign to + or -
5 -   you get a number : put the number in N
6 -   number is followed by x : do v1 = v1 + N
7 -   number is not followed by x : do v2 = v2 + N
8 -   repeat from 3 etc...

Do the same right side, the vars being v3,v4
Once you get all v1...v4, calculate R as above.
0

Commented:
of course of steps 5 and 6, N is signed by 'sign' (ie  N = N * sign ), sign being 1 if "+", -1 if "-"
0

## Featured Post

Tackle projects and never again get stuck behind a technical roadblock.