toyboy61
asked on
"Protecting" variable values..
I have read some initial values from a file, and put these values into variables.
All values in the file are positive (greater than zero).
Example:
int Value1 = 5 (read from file)
int Value2 = 3 (read from file)
int Value3 = 4 (read from file)
I want to be able to add or subtract values from these initial values (subtract with 1 or add with 1), but when the value reaches zero (NULL) or exceeds the value read from file the add/subtract operation should be aborted (or stopped).
One way of doing this is (of course) to have another set of values called InitValue1, initValue2 and InitValue3, put the initial values in each of them and then compare each of them for each add/subtract operation.
// Read from file -> InitValue1, initValue2, initValue3;
Value1 = initValue1;
value2 = initValue2;
value3 = initValue3;
// Add
if (Value1++) > initValue1 -> Abort operation
// Subtract
if (Value1--) = 0 -> Abort operation
Are there some intrinsic functions or other "smart" ways to achieve this goal in Visual C++ 2003 ?
All values in the file are positive (greater than zero).
Example:
int Value1 = 5 (read from file)
int Value2 = 3 (read from file)
int Value3 = 4 (read from file)
I want to be able to add or subtract values from these initial values (subtract with 1 or add with 1), but when the value reaches zero (NULL) or exceeds the value read from file the add/subtract operation should be aborted (or stopped).
One way of doing this is (of course) to have another set of values called InitValue1, initValue2 and InitValue3, put the initial values in each of them and then compare each of them for each add/subtract operation.
// Read from file -> InitValue1, initValue2, initValue3;
Value1 = initValue1;
value2 = initValue2;
value3 = initValue3;
// Add
if (Value1++) > initValue1 -> Abort operation
// Subtract
if (Value1--) = 0 -> Abort operation
Are there some intrinsic functions or other "smart" ways to achieve this goal in Visual C++ 2003 ?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
TomasP: You're right about that, but the actual situation is more complex than it looks.....
When the program starts it displays three columns and twelve rows with buttons.
Each row will have three possible choices (buttons) marked A, B and C.
Then you could have 7 possible combinations of choices:
- Single A (stored in another array as binary value 4)
- Single B (binary value 2) -> 2
- Single C (binary value 1) -> 1
- A and B (binary value 4+2) -> 6
- A and C (binary value 4+1) -> 5
- B and C (binary value 2+1) -> 3
- A,B and C (binary value 4+2+1) -> 7
Binary:
A B C
4 2 1
The values read from the file tells how many triples (A-B-C), how many doubles (A-B,A-C,B-C) or
singles (A,B or C) the program will accept.
Value1 = number of triples allowed
Value2 = number of doubles allowed
Value3 = number of singles allowed
If we number the rows 1 to 12 (C++ style: 0 to 11) I want the program to do the following:
- If the user chooses A (or B or C) in row #1 this will be regarded as a single.
Value3 should then be decreased with 1.
- If the user then chooses B in row #1 the program will regard it as a double. Value3 should then be increased by 1 and Value2 should be decreased by 1.
- If the user then chooses C in row #1 the program will regard it as a triple. Value2 should then be increased by 1 and Value1 should be decreased by 1.
- If the user then chooses A again, the program will regard it as a double. Value1 should be decreased by 1 and Value2 should be increased by 1 (and so on..).
The same applies for all the other rows.. :-)
When the user clicks on a button it will display an "X" to show that the button is selected. If a selected button is clicked once again the "X" will be removed.
If Value1, Value2 or Value3 exceeds the limits set by the values read from the file a warning should be given and the current operation should abort. The same if the values goes below 0 (zero).
(I was a bit inaccurate in my first posting -> The value must be < 0 to trigger a stop of the operation).
[Example of a warning message: "Number of triples exceeded! Please try again!"].
I wonder if there is a clever way to do this using Visual C++ 2003 -> preferably using .NET-functionality.. :-)
When the program starts it displays three columns and twelve rows with buttons.
Each row will have three possible choices (buttons) marked A, B and C.
Then you could have 7 possible combinations of choices:
- Single A (stored in another array as binary value 4)
- Single B (binary value 2) -> 2
- Single C (binary value 1) -> 1
- A and B (binary value 4+2) -> 6
- A and C (binary value 4+1) -> 5
- B and C (binary value 2+1) -> 3
- A,B and C (binary value 4+2+1) -> 7
Binary:
A B C
4 2 1
The values read from the file tells how many triples (A-B-C), how many doubles (A-B,A-C,B-C) or
singles (A,B or C) the program will accept.
Value1 = number of triples allowed
Value2 = number of doubles allowed
Value3 = number of singles allowed
If we number the rows 1 to 12 (C++ style: 0 to 11) I want the program to do the following:
- If the user chooses A (or B or C) in row #1 this will be regarded as a single.
Value3 should then be decreased with 1.
- If the user then chooses B in row #1 the program will regard it as a double. Value3 should then be increased by 1 and Value2 should be decreased by 1.
- If the user then chooses C in row #1 the program will regard it as a triple. Value2 should then be increased by 1 and Value1 should be decreased by 1.
- If the user then chooses A again, the program will regard it as a double. Value1 should be decreased by 1 and Value2 should be increased by 1 (and so on..).
The same applies for all the other rows.. :-)
When the user clicks on a button it will display an "X" to show that the button is selected. If a selected button is clicked once again the "X" will be removed.
If Value1, Value2 or Value3 exceeds the limits set by the values read from the file a warning should be given and the current operation should abort. The same if the values goes below 0 (zero).
(I was a bit inaccurate in my first posting -> The value must be < 0 to trigger a stop of the operation).
[Example of a warning message: "Number of triples exceeded! Please try again!"].
I wonder if there is a clever way to do this using Visual C++ 2003 -> preferably using .NET-functionality.. :-)
ASKER
evilrix: Thanx. Seems to be a way to do it. Thanks. I will study it in more detail later on.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
trinitrotoluene: The total sum of Value1 (number of triples), Value2 (number of doubles) and Value3 (number of singles) are 12.
Example of values read from file:
Value1: 7 (number of triples)
Value2: 3 (number of doubles)
Value3: 2 (number of singles)
This could be set up as:
-------------------------- -------
Row01: A (single)
Row02: AB (double)
Row03: ABC (triple)
-------------------------- -------
Row04: BC (double)
Row05: ABC (triple)
Row06: ABC (triple)
-------------------------- -------
Row07: ABC (triple)
Row08: C (single)
Row09: ABC (triple)
-------------------------- -------
Row10: ABC (triple)
Row11: ABC (triple)
Row12: AC (double)
-------------------------- -------
The rest of the problem is as described above.
Example of values read from file:
Value1: 7 (number of triples)
Value2: 3 (number of doubles)
Value3: 2 (number of singles)
This could be set up as:
--------------------------
Row01: A (single)
Row02: AB (double)
Row03: ABC (triple)
--------------------------
Row04: BC (double)
Row05: ABC (triple)
Row06: ABC (triple)
--------------------------
Row07: ABC (triple)
Row08: C (single)
Row09: ABC (triple)
--------------------------
Row10: ABC (triple)
Row11: ABC (triple)
Row12: AC (double)
--------------------------
The rest of the problem is as described above.
ASKER
Both the given answers headed me in the right direction.
The solution was to create my own code which will be posted here later on.
The solution was to create my own code which will be posted here later on.
// Add
if (Value1++) > initValue1 -> Abort operation