Example 44: Area of a Triangle
Explore how to use functions and pointers in C to calculate the distance between points, validate if three points form a triangle, and then compute its area using Heron's formula. This lesson helps you apply mathematical concepts programmatically to solve geometry problems in C.
We'll cover the following...
Problem
Write a function to compute the distance between two points, and use it to develop another function that will compute the area of the triangle whose vertices are A (x1, y1), B (x2, y2), and C (x3, y3), and ascertain if the triangle is valid.
Example
| Input (Point 1, Point 2, Point 3) | Output |
|---|---|
| 0 0 6 0 0 8 |
Length of first side = 6.000000 Length of second side = 10.000000 Length of third side = 8.000000 Area: 24.000000 |
| 0 4 0 8 0 15 |
Length of first side = 4.000000 Length of second side = 7.000000 Length of third side = 11.000000 Not a triangle |
Try it yourself
Try to solve this question on your own in the code widget below. If you get stuck, you can always refer to the solution provided.
❗Note: To run your solution or our given solution, follow the following steps:
- Click on the run button.
- Wait for the 4 steps to complete, and then switch to the terminal tab.
- In the terminal tab, write the following command:
gcc main.c -o main -lm
Then, write this command:
./main
❗Note: The C language requires -lm flag while executing a program that uses the math library.
/* Calculate area of triangle */
#include <stdio.h>
#include <math.h>
int isTriangleValid ( float s1, float s2, float s3 ){
//determine if the given sides form a valid triangle
}
float areaOfTriangle (float s1, float s2, float s3) {
//calculate the area of a triangle
}
float distance (int x1, int y1, int x2, int y2) {
//calculate the length of the sides
}
int main() {
int x1, y1, x2, y2, x3, y3;
float s1, s2, s3, area;
int isValid = 0;
printf ("Enter the coordinates of 3 vertices of the triangle: \n" ) ;
printf ("First Vertex (x, y): \n" );
scanf ("%d %d", &x1, &y1);
printf ("Second Vertex (x, y): \n");
scanf ("%d %d", &x2, &y2);
printf ("Third Vertex (x, y): \n");
scanf ("%d %d", &x3, &y3);
s1 = distance (x1, y1, x2, y2);
s2 = distance (x2, y2, x3, y3);
s3 = distance (x1, y1, x3, y3);
printf ("Length of first side = %f\n", s1);
printf ("Length of second side = %f\n", s2);
printf ("Length of third side = %f\n", s3);
isValid = isTriangleValid (s1, s2, s3);
if (isValid) {
area = areaOfTriangle (s1, s2, s3);
printf ("Area: %f\n", area);
}
else
printf ("Not a triangle. \n");
return 0;
}Solution
Given below is our recommended way to approach this problem. ...