home *** CD-ROM | disk | FTP | other *** search
- /*
- C++ program that demonstrates pointers to structured types
- */
-
- #include <iostream.h>
- #include <stdio.h>
- #include <math.h>
-
- const MAX_RECT = 4;
-
- struct point {
- double x;
- double y;
- };
-
- struct rect {
- point ulc; // upper left corner
- point lrc; // lower right corner
- double area;
- int id;
- };
-
- typedef rect rectArr[MAX_RECT];
-
- main()
- {
- rectArr r;
- rect temp;
- rect* pr = r;
- rect* pr2;
- double length, width;
-
- for (int i = 0; i < MAX_RECT; i++, pr++) {
- cout << "Enter (X,Y) coord. for ULC of rect. # "
- << i << " : ";
- cin >> pr->ulc.x >> pr->ulc.y;
- cout << "Enter (X,Y) coord. for LRC of rect. # "
- << i << " : ";
- cin >> pr->lrc.x >> pr->lrc.y;
- pr->id = i;
- length = fabs(pr->ulc.x - pr->lrc.x);
- width = fabs(pr->ulc.y - pr->lrc.y);
- pr->area = length * width;
- }
-
- pr -= MAX_RECT; // reset pointer
- // sort the rectanges by areas
- for (i = 0; i < (MAX_RECT - 1); i++, pr++) {
- pr2 = pr + 1; // reset pointer pr2
- for (int j = i + 1; j < MAX_RECT; j++, pr2++)
- if (pr->area > pr2->area) {
- temp = *pr;
- *pr = *pr2;
- *pr2 = temp;
- }
- }
-
- pr -= MAX_RECT - 1; // reset pointer
- // display rectangles sorted by area
- for (i = 0; i < MAX_RECT; i++, pr++)
- printf("Rect # %d has area %5.4lf\n", pr->id, pr->area);
- return 0;
- }
-