
March 31st, 2005, 06:30 PM
#1
a bit of a conundrum
using javascript and only the operators +, *, /, , <, >, <=, >=, =, ==, !=
can you compare three user input integers and output the largest and the smallest.
If anyone has read my last couple of posts they have been about Javascript  I have been really trying to concentrate on enhancing my knowledge and ability of it.
this is an assignment Im doing and I can only use the above operators and only 'if' statements  no 'if else' statements. (Im not cheating on this assignment by asking, as Im learning and teaching myself)
I wish I had paid more attention in math class in highschool  there is either a relationship between numbers that my mind hasn't processed yet or a rule about number relations that I didn't learn in school  haha
"In most gardens they make the beds too soft  so that the flowers are always asleep"  Tiger Lily

April 1st, 2005, 12:17 AM
#2
Look at the Comparison Operator section on this page  http://www.w3schools.com/js/js_operators.asp
I'd also suggest instead of just getting the answer straight out from someone here, you either code up an attempt or do it with pseudo code and post it here. From there we could give tips or other assistance in good conscience.
"When I get a little money I buy books; and if any is left I buy food and clothes."  Erasmus
"There is no programming language, no matter how structured, that will prevent programmers from writing bad programs."  L. Flon
"Mischief my ass, you are an unethical moron."  chsh
Blog of X

April 1st, 2005, 04:49 PM
#3
ahhhhh  w3schools is one of my most used bookmarks, but I can only use the operators that I stated, or rather  I can only use the techniques learned in the chapter that the assignment concludes.
The psuedocode  this could go many ways depending on how the code needs to be structured  it would start out , 'if blah blah blah
but that is the problem  Im not even sure how to structure the 'if' statement  how I am thinking of it is .......
if (number1 is greater than number2 and number2 is greater than number3)
then write number1 is the largest and number2 is the smallest;
and this statement would be repeated until the largest and smallest were were unequivically determined, the thing is that I can write java code to perform this task no problem  but I am having trouble doing it and only using the parameters in the chapter that the assignment is in.
Its not writing the code that is the difficult part  it is writing it and not traversing the limitations set on me by the assignment instructions.
"In most gardens they make the beds too soft  so that the flowers are always asleep"  Tiger Lily

April 1st, 2005, 05:42 PM
#4
Well, that is why I'm asking you to write something up. It will help you think through the problem and allow us to help you without just giving you an answer.
Right now the example you have given does not fit in with the project requirements since you would need the logical 'and' operator.
A simpler method may be to put the three values into an array. Then all you have to do is traverse the array and do a simple sort (I'd recommend doing a google for a java bubble sort) putting the largest values up front. Then just return the first two values.
You'd only need a simple if statement to do the actual value comparison.
Here is a simplified version of what you'd have to do
Array with three elements
// element values
[3][1][2]
Iterate through the array
temp var // to store values temporarily for swap, you may be able to get away without having this.
If arrayelement[index 1] < arrayelement[index 2]
temp var = arrayelement[index 1] // store first element so the value isn't lost during swap
arrayelement[index 1] = arrayelement[index 2] // swap the larger element to the beginning
arrayelement[index 2] = temp var // put the lower value back into the array after the larger one
The first iteration through would see that element one (3) is greater than element two (1) and leave it alone. The next comparison would see that element two (1) is less than element three (2) and swap it. Then you'd just display elements one and two.
There are plenty of examples of doing this with an array of ints out on the net. This solution is also scalable to support more than three values. =)
"When I get a little money I buy books; and if any is left I buy food and clothes."  Erasmus
"There is no programming language, no matter how structured, that will prevent programmers from writing bad programs."  L. Flon
"Mischief my ass, you are an unethical moron."  chsh
Blog of X

April 22nd, 2005, 05:52 PM
#5
Sorry its been awhile since I have been back to this.
Arrays are a no no since they stretch outside the limits set by the assignment.
here is my attempt at it so far:
Code:
<script type = text/javascript>
var firstNumber,
secondNumber,
thirdNumber,
number1,
number2,
number3,
sum,
average,
product;
firstNumber = window.prompt("Please enter your first number");
secondNumber = window.prompt("Now enter the second number");
thirdNumber = window.prompt("And now the last number ...");
number1 = parseInt(firstNumber);
number2 = parseInt(secondNumber);
number3 = parseInt(thirdNumber);
sum = number1 + number2 + number3;
average = (number1 + number2 + number3) / 3;
product = (number1 * number2) * number3;
if (number1 + number2 > number2 + number3)
window.alert(+ sum + " is the sum, \n"
+ average + " is the average, \n"
+ product + " is the product \n"
+ number1 + " is the largest\n"
+ number3 + " is the smallest");
if (number1 + number3 > number3 + number2)
window.alert(+ sum + " is the sum, \n"
+ average + " is the average, \n"
+ product + " is the product \n"
+ number1 + " is the largest\n"
+ number2 + " is the smallest");
if (number2 + number3 > number3 + number1)
window.alert(+ sum + " is the sum, \n"
+ average + " is the average, \n"
+ product + " is the product \n"
+ number2 + " is the largest\n"
+ number1 + " is the smallest");
if (number2 + number1 > number1 + number3)
window.alert(+ sum + " is the sum, \n"
+ average + " is the average, \n"
+ product + " is the product \n"
+ number2 + " is the largest\n"
+ number3 + " is the smallest");
if (number3 + number1 > number1 + number2)
window.alert(+ sum + " is the sum, \n"
+ average + " is the average, \n"
+ product + " is the product \n"
+ number3 + " is the largest\n"
+ number2 + " is the smallest");
if (number3 + number2 > number2 + number1)
window.alert(+ sum + " is the sum, \n"
+ average + " is the average, \n"
+ product + " is the product \n"
+ number3 + " is the largest\n"
+ number1 + " is the smallest");
</script>
the problem with this is that once the 'OK' button is pressed it reevaluates the integers 2 more times  one of the three is usually correct  but obviously it has to be correct the FIRST AND ONLY time it runs.
I'm really stumped here ...................
My theory here, when I tried this was that if the sum of a+b were greater than a+c then a would be the largest since it was the common integer in both the equations.
Theoretically it makes sense but in practice it doesn't seem to work that way.
I have tried many things and can't get the right answer, though I love to solve problems  my hope is, honestly that someone will post the answer (within the guidelines set out in the original post) so I can evaluate it and learn from it  I can't learn anything while Im stuck in a static state of confusion ........... haha
"In most gardens they make the beds too soft  so that the flowers are always asleep"  Tiger Lily

April 22nd, 2005, 05:59 PM
#6
What you need is to nest the if's. Compare 1 and 2 in the outter most, then 1 and 3, and then 2 and 3. Three layers of nested if's will handle the issue.

April 22nd, 2005, 06:06 PM
#7
Im sure that I used nested IF's at one time and I overwrote that file  sounds like that I probably made some sort of a mistake with them.
I'm gonna work on that now  let you know how it works out this time ...
Cheers for the speedy reply ...
sometimes in the 'Web Development' forum you wait for days for a response  haha
"In most gardens they make the beds too soft  so that the flowers are always asleep"  Tiger Lily

April 22nd, 2005, 07:36 PM
#8
This is my latest attempt:
Code:
<script type = "text/javascript">
var firstNumber,
secondNumber,
thirdNumber;
firstNumber = window.prompt("Please enter your first number: ", "0");
secondNumber = window.prompt("Please enter a second number: ", "0");
thirdNumber= window.prompt("And now enter your last number: ", "0");
firstNumber = parseInt( firstNumber );
secondNumber = parseInt( secondNumber );
thirdNumber = parseInt( thirdNumber );
//  determines the largest of the three numbers 
//executes if first number is the highest
if ( firstNumber > secondNumber ){
if ( firstNumber > thirdNumber )
document.writeln( firstNumber + " is the largest!<br>" );
}
//executes if second number is the highest
if ( secondNumber > firstNumber ){
if ( secondNumber > thirdNumber )
document.writeln( secondNumber + " is the largest!<br>" );
}
//executes if third number is the highest
if ( thirdNumber > firstNumber ){
if ( thirdNumber > secondNumber )
document.writeln( thirdNumber + " is the largest!<br>" );
}
//  determines the lowest of the three numbers 
//executes if first number is the lowest
if ( firstNumber < secondNumber ){
if ( firstnumber < thirdNumber )
document.writeln( firstNumber + " is the smallest!" );
}
//executes if second number is the lowest
if ( secondNumber < firstNumber ){
if ( secondNumber < thirdNumber )
document.writeln( secondNumber + " is the smallest!" );
}
//executes if the third number is the lowest
if ( thirdNumber < firstNumber ){
if ( thirdNumber < secondNumber )
document.writeln( thirdNumber + " is the smallest!" );
}
</script>
If the firstNumber is the largest and the thirdNumber is the smallest it works fine.
Any other combination only outputs and displays the largest number!
Can someone explain this to me???
"In most gardens they make the beds too soft  so that the flowers are always asleep"  Tiger Lily

April 22nd, 2005, 07:55 PM
#9
In you "lowest" section, in the first nested if, you have firstnumber instead of firstNumber.

April 22nd, 2005, 08:01 PM
#10
Never mind answering the last question  I really should have experimented with it more before posting it  just didn't think that I would have enough patients to go through it all again  haha
this is the code that ultimately worked:
Code:
<script type = "text/javascript">
var firstNumber,
secondNumber,
thirdNumber;
firstNumber = window.prompt("Please enter your first number: ", "0");
secondNumber = window.prompt("Please enter a second number: ", "0");
thirdNumber= window.prompt("And now enter your last number: ", "0");
firstNumber = parseInt( firstNumber );
secondNumber = parseInt( secondNumber );
thirdNumber = parseInt( thirdNumber );
//  determines the largest of the three numbers 
//executes if first number is the highest
if ( firstNumber > secondNumber ){
if ( firstNumber > thirdNumber ){
document.writeln( firstNumber + " is the largest!<br>" );
if ( secondNumber > thirdNumber )
document.writeln( thirdNumber + " is the smallest!" );
if ( thirdNumber > secondNumber )
document.writeln(secondNumber + " is the smallest!" );
}
}
//executes if second number is the highest
if ( secondNumber > firstNumber ){
if ( secondNumber > thirdNumber ){
document.writeln( secondNumber + " is the largest!<br>" );
if ( firstNumber > thirdNumber )
document.writeln( thirdNumber + " is the smallest!" );
if ( thirdNumber > firstNumber )
document.writeln(firstNumber + " is the smallest!" );
}
}
//executes if third number is the highest
if ( thirdNumber > firstNumber ){
if ( thirdNumber > secondNumber ){
document.writeln( thirdNumber + " is the largest!<br>" );
if ( firstNumber > secondNumber )
document.writeln( secondNumber + " is the smallest!" );
if ( secondNumber > firstNumber )
document.writeln(firstNumber + " is the smallest!" );
}
}
</script>
what I would love to know if someone will enlighten me  is, even though that this code works  is there a shorter more efficient way of writing it, while still staying within the assignment parameters???
"In most gardens they make the beds too soft  so that the flowers are always asleep"  Tiger Lily
Posting Permissions
 You may not post new threads
 You may not post replies
 You may not post attachments
 You may not edit your posts

Forum Rules

