fork(1) download
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main(void) {
  5. int lin, col;
  6. scanf("%i %i\n", &lin, &col); //https://w...content-available-to-author-only...m.br/topico/C-C++/problema-ao-ler-um-char-apos-um-ler-inteiro-(usando-scanf)..
  7. int mapa[lin][col];
  8. int i, j;
  9.  
  10. //preenche matriz
  11. for (i = 0; i < lin; i++) {
  12. //fflush(stdin);
  13. for (j = 0; j < col; j++) {
  14. scanf("%c", &mapa[i][j]);
  15. }
  16. }
  17.  
  18. for (i = 0; i < lin; i++) {
  19. for (j = 0; j < col; j++) {
  20. printf("%c", mapa[i][j]);
  21. }
  22. printf("\n");
  23. }
  24.  
  25. //percorre o mapa
  26. int posX = 0, posY = 0;
  27. char direcao = '>', leitura;
  28.  
  29. while (posX < 10) {
  30. leitura = mapa[posY][posX];
  31. if (leitura == '>') {
  32. direcao = '>';
  33. posX = posX + 1;
  34. } else if (leitura == '<') {
  35. direcao = '<';
  36. posX = posX - 1;
  37. } else if (leitura == '^') {
  38. direcao = '^';
  39. posY = posY - 1;
  40. } else if (leitura == 'v') {
  41. direcao = 'v';
  42. posY = posY + 1;
  43. } else if (leitura == '*') {
  44. printf("Achou o tesouro!");
  45. break;
  46. } else { //nao ouve mudanca de direcao
  47. if (direcao == '>') { posX = posX + 1; }
  48. if (direcao == '<') { posX = posX - 1; }
  49. if (direcao == '^') { posY = posY - 1; }
  50. if (direcao == 'v') { posY = posY + 1; }
  51. }
  52.  
  53. printf("X e Y: %i %i |%c|%c|\n", posX, posY, leitura, direcao);
  54. }
  55.  
  56. return 0;
  57. }
  58.  
Success #stdin #stdout 0s 10320KB
stdin
3 6
>..v...........>.*
stdout
>..v..
......
...>.*
X e Y: 1 0 |>|>|
X e Y: 2 0 |.|>|
X e Y: 3 0 |.|>|
X e Y: 3 1 |v|v|
X e Y: 3 2 |.|v|
X e Y: 4 2 |>|>|
X e Y: 5 2 |.|>|
Achou o tesouro!