home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C Programming Starter Kit 2.0
/
SamsPublishing-CProgrammingStarterKit-v2.0-Win31.iso
/
tybc4
/
ptr6.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
1993-03-30
|
2KB
|
75 lines
/*
C++ program that demonstrates pointers to structured types
*/
#include <iostream.h>
#include <stdio.h>
#include <math.h>
const MAX_RECT = 4;
const TRUE = 1;
const FALSE = -1;
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;
int offset;
int inOrder;
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;
}
// sort the rectanges by areas
offset = MAX_RECT;
do {
offset = (8 * offset) / 11;
offset = (offset == 0) ? 1 : offset;
inOrder = TRUE;
pr = r;
pr2 = r + offset;
for (int i = 0;
i < MAX_RECT - offset;
i++, pr++, pr2++)
if (pr->area > pr2->area) {
inOrder = FALSE;
temp = *pr;
*pr = *pr2;
*pr2 = temp;
}
} while (!(offset == 1 && inOrder));
pr = r; // 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;
}