w3resource

PHP Exercises: Test whether two lines PQ and RS are parallel

PHP: Exercise-56 with Solution

Write a PHP program to test whether two lines PQ and RS are parallel.
The four points are P(x1, y1), Q(x2, y2), R(x3, y3), S(x4, y4).

Input: −100 ≤ x1, y1, x2, y2, x3, y3, x4, y4 ≤ 100
Each value is a real number with at most 5 digits after the decimal point.

Sample Solution:

PHP Code:

<?php
// Read the number of test cases from standard input
fscanf(STDIN, '%d', $n);

// Loop through each test case
for ($i = 0; $i < $n; $i++) {
    // Read the coordinates of two points (x1, y1) and (x2, y2) for segment PQ
    fscanf(STDIN, '%f %f %f %f', $x1, $y1, $x2, $y2);

    // Read the coordinates of two points (x3, y3) and (x4, y4) for segment RS
    fscanf(STDIN, '%f %f %f %f', $x3, $y3, $x4, $y4);

    // Calculate the slopes of segments PQ and RS
    $pq = INF;
    if ($x2 - $x1 !== 0.0) {
        $pq = ($y2 - $y1) / ($x2 - $x1);
    }

    $rs = INF;
    if ($x4 - $x3 !== 0.0) {
        $rs = ($y4 - $y3) / ($x4 - $x3);
    } 

    // Check if the slopes are equal to determine if PQ and RS are parallel
    echo $pq === $rs ? 'PQ and RS are parallel.' : 'PQ and RS are not parallel.';
    echo PHP_EOL;
}

?>

Explanation:

  • Read Number of Test Cases:
    • The code reads an integer value from standard input, representing the number of test cases, using fscanf().
  • Loop Through Test Cases:
    • A for loop iterates through each test case based on the number of test cases read.
  • Read Coordinates for Segment PQ:
    • Inside the loop, the coordinates of two points, (x1,y1)(x1, y1)(x1,y1) and (x2,y2)(x2, y2)(x2,y2), are read from standard input for segment PQ using fscanf().
  • Read Coordinates for Segment RS:
    • The coordinates of two points, (x3,y3)(x3, y3)(x3,y3) and (x4,y4)(x4, y4)(x4,y4), are similarly read for segment RS.
  • Calculate Slopes of Segments:
    • The slope of segment PQ is calculated. If x2−x1x2 - x1x2−x1 is not zero, the slope is calculated using the formula slope=y2−y1x2−x1\text{slope} = \frac{y2 - y1}{x2 - x1}slope=x2−x1y2−y1; otherwise, it is set to INF (infinity).
    • The slope of segment RS is calculated in the same way.
  • Check if Segments are Parallel:
    • The code checks if the slopes of PQ and RS are equal. If they are equal, it indicates that the segments are parallel; otherwise, they are not.
  • Output Result:
    • The result of the comparison is printed to standard output, stating whether "PQ and RS are parallel" or "PQ and RS are not parallel", followed by a newline using PHP_EOL.

Input:
2
1.0 0.0 3.0 2.0 2.0 2.0 0.0 0.0
4.0 3.0 10.0 7.0 14.0 5.0 8.0 10.0

Sample Output:

PQ and RS are parallel.
PQ and RS are not parallel.

Flowchart:

Flowchart: Test whether two lines PQ and RS are parallel.

PHP Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Write a PHP program that accepts six numbers as input and sorts them in descending order.
Next: Write a PHP program to compute the sum of the digits of a number.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://w3resource.com/php-exercises/php-basic-exercise-56.php