/* * First example: shapes * 2. Modularized, uses typedefs, but still in C * * RunStuff:: gcc THISFILE */ #include /* * Type definitions */ typedef struct { int x, y, wid, ht; } Rect; typedef struct { int x, y, rad; } Circle; /* * Data definitions */ Rect r1, r2; Circle c1; /* * Procedure definitions */ void drawRect (Rect r) { printf ("Drawing rectangle at %d, %d, %d, %d\n", r.x, r.y, r.wid, r.ht); } void drawCircle (Circle c) { printf ("Drawing circle at %d, %d, radius = %d\n", c.x, c.y, c.rad); } float areaRect (Rect r) { return (float) (r.wid * r.ht); } float areaCircle (Circle c) { return (float) (c.rad * c.rad * 3.14159); } int main () { /* * Set the locations of the 3 objects */ r1.x = 10; r1.y = 10; r1.wid = 50; r1.ht = 50; r2.x = 80; r2.y = 10; r2.wid = 10; r2.ht = 100; c1.x = 35; c1.y = 90; c1.rad = 10; /* * Draw them */ drawRect (r1); drawRect (r2); drawCircle (c1); /* * Compute and print total area */ printf ("Total area = %f\n", areaRect (r1) + areaRect (r2) + areaCircle (c1)); return 0; }