/* * Join the Dots NZ01B (via Michael J. Dinneen) */ #include #include using namespace std; void draw(char grid[21][21], int row, int col, char c) { if (grid[row][col]=='+' || grid[row][col]=='*') grid[row][col]='*'; else if (grid[row][col]!=' ') grid[row][col]='+'; else grid[row][col]=c; } int main(int argc, char *argv[]) { char grid[21][21]; int cnt=0; int r, c; while (true) { cin >> r >> c; if (r==0 && c==0) break; if (cnt++) cout << endl; // blank line between grids for (int i=1; i<=r; i++) // clear grid { for (int j=1; j<=c; j++) grid[i][j]=' '; } int r1, c1, r2, c2; cin >> r1 >> c1; while (r1!=0 && c1!=0) { cin >> r2 >> c2; if (r2==0 && c2==0) break; if (r1 == r2) // horizontal line { if (c1<=c2) for (int i=c1; i<=c2; i++) draw(grid,r1,i,'-'); if (c1>c2) for (int i=c1; i>=c2; i--) draw(grid,r1,i,'-'); } else if (c1 == c2) // vertical line { if (r1<=r2) for (int i=r1; i<=r2; i++) draw(grid,i,c1,'|'); if (r1>r2) for (int i=r1; i>=r2; i--) draw(grid,i,c1,'|'); } else // diagonal lines { if (r2 > r1 && c2 > c1) // down right { while (r2 > r1 && c2 > c1) draw(grid,r1++,c1++,'\\'); draw(grid,r1,c1,'\\'); if (r1==r2) for (int i=c1+1; i<=c2; i++) draw(grid,r1,i,'-'); if (c1==c2) for (int i=r1+1; i<=r2; i++) draw(grid,i,c1,'|'); } else if (r2 > r1 && c2 < c1) // down left { while (r2 > r1 && c2 < c1) draw(grid,r1++,c1--,'/'); draw(grid,r1,c1,'/'); if (r1==r2) for (int i=c1-1; i>=c2; i--) draw(grid,r1,i,'-'); if (c1==c2) for (int i=r1+1; i<=r2; i++) draw(grid,i,c1,'|'); } else if (r2 < r1 && c2 > c1) // up right { while (r2 < r1 && c2 > c1) draw(grid,r1--,c1++,'/'); draw(grid,r1,c1,'/'); if (r1==r2) for (int i=c1+1; i<=c2; i++) draw(grid,r1,i,'-'); if (c1==c2) for (int i=r1-1; i>=r2; i--) draw(grid,i,c1,'|'); } else if (r2 < r1 && c2 < c1) // up left { while (r2 < r1 && c2 < c1) draw(grid,r1--,c1--,'\\'); draw(grid,r1,c1,'\\'); if (r1==r2) for (int i=c1-1; i>=c2; i--) draw(grid,r1,i,'-'); if (c1==c2) for (int i=r1-1; i>=r2; i--) draw(grid,i,c1,'|'); } } r1 = r2; c1 = c2; } for (int i=1; i<=r; i++) // print grid { for (int j=1; j<=c; j++) cout << grid[i][j]; cout << endl; } } // next sequence of pictures }