February 13th, 2007, 02:46 PM
Firstly I would just like to say that I'm not looking for people to do my programming for me just looking for some help and guidance.
At school we have a project were we have to design a voting system, one part of the voting system is to check that the votes entered are not the same as each other.
Trying to solve this I used if statements to compare the values.
This seems to partially work when all of the values are the same as each other. But when only 2 values are the same the if statement fails to carry out what it would carry out like it does when all of the values are the same.
if value1 = (value2) OR (value3) OR (value4) then
I was just wondering if anyone would know how I could make it compare all of the values but would be able to carry out the if statement even if there are only say 2 out of the 4 values which are the same.
Thanks a bunch.
February 13th, 2007, 07:33 PM
Actually, this probably shouldn't have compiled at all. AFAIK, Pascal comparison operators are supposed to only work on logical values, which the second and third clauses wouldn't be unless value3 and value4 are Booleans.
There really isn't any way to compare a single value to a group of values in Pascal (or most other languages I can think of), at least not for arbitrary values. It is possible to use a set membership in this manner with the union operator if you are checking them against a fixed group of values known at compile time, but in general, comparisons are always one-to-one.
Without more details of the program (and possibly redesigning some of your data structures), I'd say you'll need to write the whole thing out:
if (value1 = value2) OR (value1 = value3) OR (value1 = value4) then
I realize this is a bit of a hassle, but for a small group of comparisons like this, it's not all that problematic.
As an aside, in most cases you want to use more descriptive variable names than 'valuen' and so on. Names like those are just too easy to confuse with each other. If they really do form a sequence or group, then it probably makes more sense to put them together into an array:
I should add that using an array may make a difference in the code above: it would be possible to use a loop of some sort to structure the test somehow. For the case given that would be overkill, but for longer comparisons against a large group of values, it can be very useful.
FooArray: array [1..4] or FooType;
Of course, if the code you gave was just an example, and your actual variable names are more reasonable, feel free to ignore this.
February 13th, 2007, 07:56 PM
You could also use the in operator.
If value1 in [value2, value3, value4] then
Comments on this post
Up the Irons
What Would Jimi Do? Smash amps. Burn guitar. Take the groupies home.
"Death Before Dishonour, my Friends!!" - Bruce D ickinson, Iron Maiden Aug 20, 2005 @ OzzFest
Down with Sharon Osbourne
"I wouldn't hire a butcher to fix my car. I also wouldn't hire a marketing firm to build my website." - Nilpo
February 14th, 2007, 03:33 AM
Thanks guys, I will have a little mess around and see what comes up.