#include #include #include typedef struct { float side1, side2, hyp; } TRIANGLE; TRIANGLE *ReadFile (int *numTrianglesPtr); void CalcHypotenuses (TRIANGLE *triangles, int numTriangles); void DisplayTriangles (TRIANGLE *triangles, int numTriangles); int main () { int numTriangles; TRIANGLE *triangles; triangles = ReadFile (&numTriangles); CalcHypotenuses (triangles, numTriangles); DisplayTriangles (triangles, numTriangles); free (triangles); return 0; } TRIANGLE *ReadFile (int *numTrianglesPtr) { char fileName[80]; FILE *str; int i; TRIANGLE *triangles; printf ("Enter file name: "); scanf ("%s", fileName); if ( ! (str = fopen (fileName, "r")) ) { printf ("Hey! No file!\n"); exit (-1); } fscanf (str, "%d", numTrianglesPtr); triangles = (TRIANGLE *) malloc (*numTrianglesPtr * sizeof (TRIANGLE)); for ( i=0 ; i < *numTrianglesPtr ; i++ ) { fscanf (str, "%f %f", &triangles[i].side1, &triangles[i].side2); } fclose (str); return (triangles); } void CalcHypotenuses (TRIANGLE *triangles, int numTriangles) { int i; for ( i=0 ; i < numTriangles; i++ ) { triangles[i].hyp = sqrt (triangles[i].side1 * triangles[i].side1 + triangles[i].side2 * triangles[i].side2); } } void DisplayTriangles (TRIANGLE *triangles, int numTriangles) { int i; for ( i=0 ; i < numTriangles ; i++ ) { printf ("%f %f %f\n", triangles[i].side1, triangles[i].side2, triangles[i].hyp); } }