| ball.c |
| #include <stdio.h> #include <stdlib.h> /* this is programming contest practise. to be precise, problem G. it reads 5 ints and makes their tracks: */ main(){ char container[20][20]; int rows=0,s_row=0,cols=0,s_col=0,dir=0; /* Read input until 5 0's */ while(5 == scanf("%d%d%d%d%d", &rows, &cols, &s_row, &s_col, &dir) && rows!=0 && cols!=0 && dir!=0){ /* remember starting position and dir*/ int s_x = s_row-1; int s_y = s_col-1; int s_d = dir; int x,y; int itr = 0; /* convert from human numbering system to computer one */ s_row = s_x; s_col = s_y; /* Set Array */ for(x=0; x<rows; x++){ for(y=0; y<cols; y++){ container[x][y]='-'; } } /* Draw Path */ while(1){ container[s_row][s_col]='#'; /* Change direction */ switch(dir) { case 1: if(s_row == 0) dir = 5; break; case 2: if(s_row == 0 && s_col == cols-1) dir = 6; else if(s_row == 0) dir = 4; else if(s_col == cols-1) dir = 8; break; case 3: if(s_col == cols-1) dir = 7; break; case 4: if(s_row == rows-1 && s_col == cols-1) dir = 8; else if(s_row == rows-1) dir = 2; else if(s_col == cols-1) dir = 6; break; case 5: if(s_row == rows-1) dir = 1; break; case 6: if(s_row == rows-1 && s_col == 0) dir = 2; else if(s_row == rows-1) dir = 8; else if(s_col == 0) dir = 4; break; case 7: if(s_col == 0) dir = 3; break; case 8: if(s_row == 0 && s_col == 0) dir = 4; else if(s_row == 0) dir = 6; else if(s_col == 0) dir = 2; break; default: /* ? */ printf("help?"); } /* end of switch */ if(itr){ /* break if conditions are right */ if(s_row == s_x && s_col == s_y && dir == s_d) break; } itr++; /* make a movement */ switch(dir) { case 1: s_row--; break; case 2: s_row--; s_col++; break; case 3: s_col++; break; case 4: s_col++; s_row++; break; case 5: s_row++; break; case 6: s_row++; s_col--; break; case 7: s_col--; break; case 8: s_col--; s_row--; break; default: /* ? */ /* printf("help?"); */ } /* end of switch */ } /* end of while loop that makes the tracks */ /* print the array - please */ /*{ int x,y;*/ for(x=0; x<rows; x++){ for(y=0; y<cols; y++){ printf("%c",container[x][y]); } printf("\n"); } printf("\n"); } } |
| James Little |