Structure within structure
We can have a structure variable as a member of another structure.
Example
Let's create a structure to store the coordinates (x,y).
Example
struct coordinate { int x; int y; };
Using two coordinates, we can draw a line { (x1,y1), (x2,y2) }.
To achieve that, we can create another structure and store two coordinates(struct coordinates variable).
Like below,
Example
struct line { struct coordinate c1; struct coordinate c2; };
Accessing structure members
Using below method, we can access the structure members.
(outer structure variable).(inner structure variable).members
In our case,
Example
To access X struct line variable. struct coordinate variable.x To access Y struct line variable. struct coordinate variable.y
Let's create a variable for struct line.
struct line l;
Example
To access x and y of coordinate 1 (c1),
l.c1.x l.c1.y
Similarly for coordinate 2 (c2),
l.c2.x l.c2.y
Let's find the distance between the two coordinates
Distance = √ (x2-x1)2 + (y2-y1)2
Example
#include<stdio.h> //To use sqrt and pow function #include<math.h> int main() { float distance; //To store x and y struct coordinate { int x; int y; }; //To store two coordinates struct line { struct coordinate c1; struct coordinate c2; }; //structure line variable struct line l; //get coordinate 1 printf("Enter c1(x and y)\n"); scanf("%d%d",&l.c1.x,&l.c1.y); //get coordinate 2 printf("Enter c2(x and y)\n"); scanf("%d%d",&l.c2.x,&l.c2.y); /* * *calculate distance * /----------------------- * __/(x2-x1)^2 + (y2-y1)^2 * * #include<math.h> * sqrt(4) = 2 (Square root) * pow(x,2) = x * x (Power) * */ distance = sqrt(pow((l.c2.x - l.c1.x),2) + pow((l.c2.y - l.c1.y),2)); printf("Distance = %f\n",distance); return 0; }