Write a program that calculates the mathematical expression
Solution
Oops! This is a really complex expression. Let’s take a look at an approach that even a newbie can follow.
The main idea is to break the complex expression into smaller, simpler expressions and assign each sub-result to temporary variables. In the end, you can build the original expression out of all these temporary variables! This approach is presented here.
PHP
<?php
echo "Enter value for x: ";
$x = trim(fgets(STDIN));
echo "Enter value for w: ";
$w = trim(fgets(STDIN));
echo "Enter value for z: ";
$z = trim(fgets(STDIN));
$temp1 = 3 * $x * $x + 5 * $x + 2;
$temp2 = 7 * $w - 1 / $z;
$temp3 = (3 + $x) / 7;
$nominator = 5 * $temp1 / $temp2 - $z;
$denominator = 4 * $temp3;
$y = $nominator / $denominator;
echo "The result is: ", $y;
?>
Java
public static void main(String[] args) throws java.io.IOException {
java.io.BufferedReader cin = new java.io.
BufferedReader(new java.io.InputStreamReader(System.in));
double denominator, nominator, temp1, temp2, temp3, w, x, y, z;
System.out.print("Enter value for x: ");
x = Double.parseDouble(cin.readLine());
System.out.print("Enter value for w: ");
w = Double.parseDouble(cin.readLine());
System.out.print("Enter value for z: ");
z = Double.parseDouble(cin.readLine());
temp1 = 3 * x * x + 5 * x + 2;
temp2 = 7 * w - 1 / z;
temp3 = (3 + x) / 7;
nominator = 5 * temp1 / temp2 - z;
denominator = 4 * temp3;
y = nominator / denominator;
System.out.println("The result is: " + y);
}
C++
#include <iostream>
using namespace std;
int main() {
double denominator, nominator, temp1, temp2, temp3, w, x, y, z;
cout << "Enter value for x: ";
cin >> x;
cout << "Enter value for w: ";
cin >> w;
cout << "Enter value for z: ";
cin >> z;
temp1 = 3 * x * x + 5 * x + 2;
temp2 = 7 * w - 1 / z;
temp3 = (3 + x) / 7;
nominator = 5 * temp1 / temp2 - z;
denominator = 4 * temp3;
y = nominator / denominator;
cout << "The result is: " << y;
return 0;
}
C#
static void Main() {
double denominator, nominator, temp1, temp2, temp3, w, x, y, z;
Console.Write("Enter value for x: ");
x = Double.Parse(Console.ReadLine());
Console.Write("Enter value for w: ");
w = Double.Parse(Console.ReadLine());
Console.Write("Enter value for z: ");
z = Double.Parse(Console.ReadLine());
temp1 = 3 * x * x + 5 * x + 2;
temp2 = 7 * w - 1 / z;
temp3 = (3 + x) / 7;
nominator = 5 * temp1 / temp2 - z;
denominator = 4 * temp3;
y = nominator / denominator;
Console.Write("The result is: " + y);
Console.ReadKey();
}
Visual Basic
Sub Main()
Dim denominator, nominator, temp1, temp2, temp3, w, x, y, z As Double
Console.Write("Enter value for x: ")
x = Console.ReadLine()
Console.Write("Enter value for w: ")
w = Console.ReadLine()
Console.Write("Enter value for z: ")
z = Console.ReadLine()
temp1 = 3 * x ^ 2 + 5 * x + 2
temp2 = 7 * w - 1 / z
temp3 = (3 + x) / 7
nominator = 5 * temp1 / temp2 - z
denominator = 4 * temp3
y = nominator / denominator
Console.Write("The result is: " & y)
Console.ReadKey()
End Sub
Python
x = float(input("Enter value for x: "))
w = float(input("Enter value for w: "))
z = float(input("Enter value for z: "))
temp1 = 3 * x ** 2 + 5 * x + 2
temp2 = 7 * w - 1 / z
temp3 = (3 + x) / 7
nominator = 5 * temp1 / temp2 - z
denominator = 4 * temp3
y = nominator / denominator
print("The result is:", y)
You may say, “Okay, but I wasted so many variables and as everybody knows, each variable is a portion of main memory. How can I write the original expression in one single line and waste less memory?”
This job may be a piece of cake for an advanced programmer, but what about you? What about a novice programmer?
The next method will help you write even the most complex mathematical expressions without any syntax or logic errors! The rule is very simple. “After breaking the complex expression into smaller, simpler expressions and assigning each sub-result to temporary variables, start backwards and replace each variable with its assigned expression. Be careful though! When you replace a variable with an expression, you must always enclose the expression in parentheses!”
Confused? Don’t be! It’s easier in action. Let’s try to rewrite the previous program. Starting backwards, replace variables nominator
and denominator
with their assigned expressions. The result is
PHP
Java
C++
C#
Visual Basic
Python
Notice: Please note the extra parentheses added.
Now you must replace variables temp1
, temp2
, and temp3
with their assigned expressions, and the one-line expression is complete!
PHP
Java
C++
C#
Visual Basic
Python
It may look scary at the end but it wasn’t that difficult, was it?
The program can now be rewritten
PHP
<?php
echo "Enter value for x: ";
$x = trim(fgets(STDIN));
echo "Enter value for w: ";
$w = trim(fgets(STDIN));
echo "Enter value for z: ";
$z = trim(fgets(STDIN));
$y = (5 * (3 * $x * $x + 5 * $x + 2)/(7 * $w - 1 / $z) - $z)/(4 * ((3 + $x)/7));
echo "The result is: ", $y;
?>
Java
public static void main(String[] args) throws java.io.IOException {
java.io.BufferedReader cin = new java.io.
BufferedReader(new java.io.InputStreamReader(System.in));
double w, x, y, z;
System.out.print("Enter value for x: ");
x = Double.parseDouble(cin.readLine());
System.out.print("Enter value for w: ");
w = Double.parseDouble(cin.readLine());
System.out.print("Enter value for z: ");
z = Double.parseDouble(cin.readLine());
y = (5 * (3 * x * x + 5 * x + 2)/(7 * w - 1 / z) - z)/(4 * ((3 + x) / 7));
System.out.println("The result is: " + y);
}
C++
#include <iostream>
using namespace std;
int main() {
double w, x, y, z;
cout << "Enter value for x: ";
cin >> x;
cout << "Enter value for w: ";
cin >> w;
cout << "Enter value for z: ";
cin >> z;
y = (5 * (3 * x * x + 5 * x + 2)/(7 * w - 1 / z) - z)/(4 * ((3 + x) / 7));
cout << "The result is: " << y;
return 0;
}
C#
static void Main() {
double w, x, y, z;
Console.Write("Enter value for x: ");
x = Double.Parse(Console.ReadLine());
Console.Write("Enter value for w: ");
w = Double.Parse(Console.ReadLine());
Console.Write("Enter value for z: ");
z = Double.Parse(Console.ReadLine());
y = (5 * (3 * x * x + 5 * x + 2)/(7 * w - 1 / z) - z)/(4 * ((3 + x) / 7));
Console.Write("The result is: " + y);
Console.ReadKey();
}
Visual Basic
Sub Main()
Dim w, x, y, z As Double
Console.Write("Enter value for x: ")
x = Console.ReadLine()
Console.Write("Enter value for w: ")
w = Console.ReadLine()
Console.Write("Enter value for z: ")
z = Console.ReadLine()
y = (5 * (3 * x ^ 2 + 5 * x + 2)/(7 * w - 1 / z) - z)/(4 * ((3 + x) / 7))
Console.Write("The result is: " & y)
Console.ReadKey()
End Sub
Python
x = float(input("Enter value for x: "))
w = float(input("Enter value for w: "))
z = float(input("Enter value for z: "))
y = (5 * (3 * x ** 2 + 5 * x + 2)/(7 * w - 1 / z) - z)/(4 * ((3 + x) / 7))
print("The result is:", y)