/* Sample use: echo 5 5 5 6 5 7 6 6 6 7 7 7 | graph2 | xp & d and e are partially filled arrays. dlen[0] is the number of elements used in d, and in e. */ #include void doubles_readpairs(double d[10000],double e[10000],int dlen[1]) { double f; double g; dlen[0] = 0; while (dlen[0] < 10000) { if (scanf("%lf",&f) < 1) return; if (scanf("%lf",&g) < 1) return; d[dlen[0]] = f; e[dlen[0]] = g; ++dlen[0]; } } double doubles_min(double d[],int dlen[1]) { int i; double result; if (dlen[0] < 1) return 0; result = d[0]; for (i = 1;i < dlen[0];++i) if (d[i] < result) result = d[i]; return result; } double doubles_max(double d[],int dlen[1]) { int i; double result; if (dlen[0] < 1) return 0; result = d[0]; for (i = 1;i < dlen[0];++i) if (d[i] > result) result = d[i]; return result; } int main(void) { double d[10000]; double e[10000]; int dlen[1]; double xmin; double xmax; double ymin; double ymax; int i; int x; int y; doubles_readpairs(d,e,dlen); if (dlen[0] < 1) return 0; /* no numbers to graph */ xmin = doubles_min(d,dlen); xmax = doubles_max(d,dlen); if (xmin == xmax) { xmin -= 1; xmax += 1; } ymin = doubles_min(e,dlen); ymax = doubles_max(e,dlen); if (ymin == ymax) { ymin -= 1; ymax += 1; } for (i = 0;i < dlen[0];++i) { x = 10 + 300 * (d[i] - xmin) / (xmax - xmin); y = 220 - 200 * (e[i] - ymin) / (ymax - ymin); printf("1 %d %d\n",x,y); } fflush(stdout); sleep(10); return 0; }