Write a program to calculate the result of one of three operations (minimum, L1
ID: 3761266 • Letter: W
Question
Write a program to calculate the result of one of three operations (minimum, L1 norm, L2 norm) on a vector of three numbers. To begin, have the user input three numbers at the keyboard (e.g. -1 2 3). Then, ask the user to type in an operation (valid operations are “min”, “l1”, or “l2”; all letters are lowercase). Assuming the user types a valid operation, your program should compute and output to the screen the result based upon the three numbers; otherwise output an error. For “min”, the result is the minimum of the three numbers (i.e. -1). For “l1”, the result is the sum of the absolute values of the three numbers (i.e. |-1| + |2| + |3| = 1 + 2 + 3 = 6). For “l2”, the result is the square root of the sum of the squares (i.e. ((-1)^2+(2)^2+(3)^2 )=(1+4+9)=14=3.74). Example runs: Enter three numbers: -1 2 3 Enter operation: min min(-1.00, 2.00, 3.00) = -1.00 Enter three numbers: -1 2 3 Enter operation: l1 l1(-1.00, 2.00, 3.00) = 6.00 Enter three numbers: -1 2 3 Enter operation: l2 l2(-1.00, 2.00, 3.00) = 3.74 Enter three numbers: -1 2 3 Enter operation: foobar Invalid operation! Enter three numbers: -1 2 3 Enter operation: MIN Invalid operation! Note that all values should be output with two decimal places (rounding where necessary).
Explanation / Answer
import java.util.Scanner;
import java.text.DecimalFormat;
class Operation
{
public static void main(String[] args)
{
String op;
Scanner s=new Scanner(System.in);
System.out.println("Enter three numbers: ");
double num1=s.nextDouble();
double num2=s.nextDouble();
double num3=s.nextDouble();
System.out.println("Enter operation: ");
op=s.next();
if(op.equals("min")||op.equals("l1")||op.equals("l2"))
{
if(op.equals("min"))
{
double temp;
System.out.print("min("+num1+","+num2+","+num3+")");
if(num1>=num2)
temp=num2;
else
temp=num1;
if(temp>=num3)
System.out.println(num3);
else
System.out.println(temp);
}
if(op.equals("l1"))
{
System.out.print("l1("+num1+","+num2+","+num3+")");
DecimalFormat df = new DecimalFormat("#.##");
System.out.println(df.format(Math.abs(num1)+ Math.abs(num2)+ Math.abs(num3)));
}
if(op.equals("l2"))
{
System.out.print("l2("+num1+","+num2+","+num3+")");
DecimalFormat df = new DecimalFormat("#.##");
System.out.println(df.format(Math.sqrt(((num1*num1)+(num2*num2)+(num3*num3)))));
}
}
else
{
System.out.println("Invalid Operation");
}
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.