Random-walk auf 10 x 10 Array

ich habe ein problem, herauszufinden, einen Algorithmus für dieses problem,versuchen seit einigen Tagen ohne Erfolg,hier ist ein pic von dem, was im, der versucht zu erhalten:

http://i.stack.imgur.com/X70nX.png

Hier ist mein code habe versucht, viele verschiedene Lösungen, aber immer stecken an der gleichen Stelle:(Sorry für die gemischte Sprache ist der wichtige Teil in Englisch)

ps
im nicht benutzen soll-Funktionen, um dieses problem zu lösen, nur Schleifen und Arrays.

BEARBEITEN
nach viel zu fixieren, tut der Fuss aber sehr selten Abstürze
irgendeine Idee?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void){

char box[10][10];
int i,j;
int move,row,col;
char letter='A';
srand(time(NULL)); 

printf("\n\tSTART\n\n");

for(i=0;i < 10 ;i++)/* righe */
{
 for(j=0;j < 10;j++) /* colonne */
 {
  box[i][j] = '.'; /* assegno . a tutti gli elementi dell array */
  if(j == 9)
   printf("%c%c\n", box[i][j]); /* giustifico ogni 10 elementi dell array j(0-9) */
   else 
   printf("%c%c", box[i][j]);
  }
}


/* LETS START */ 

printf("\n\n    Inizia il gioco\n\n");

/* random place to start */

row = rand() % 9;
col = rand() % 9;
box[row][col]= 'A';


while(letter <= 'Z')
{
 if(box[row+1][col] == '.' || box[row-1][col] == '.' || box[row][col+1] == '.' || box[row][col-1] == '.' )
 {
 move=rand() % 4;
 switch(move){
              case 0: /* Going UP */
                    if((row != 0) && (box[row-1][col] == '.'))
                    {
                            box[row-1][col]=++letter;
                            box[row--][col];
                    }else{
                          move=rand() % 4;
                          }
              case 1:/* Going Down */
                   if((row != 9) && (box[row+1][col] == '.'))
                   {
                           box[row+1][col]=++letter;
                           box[row++][col];
                   }else{
                         move=rand() % 4;
                         }
              case 2: /*Going Left */
                   if((col != 0) && (box[row][col-1] == '.'))
                   {
                           box[row][col-1]=++letter;
                           box[row][col--];
                   }else{
                         move=rand() % 4;
                         }
              case 3: /* Going Right */
                   if((col != 9) && (box[row][col+1] == '.') )
                   {
                           box[row][col+1]=++letter;
                           box[row][col++];
                   }else{
                         move=rand() % 4;
                         }
              }
 }else{
        printf("\n\nBloccato a %c\n\n", letter);
        break;
 }
}


 /* FINE */

for(i=0;i<10;i++)/* righe */
{
 for(j=0;j<10;j++) /* colonne */
 {
   if(j == 9)
     printf("%c%c\n", box[i][j]); /* giustifico ogni 10 elementi dell array j(0-9) */
    else 
     printf("%c%c", box[i][j]);
 }  
}
return 0;
}
  • Hausaufgaben-tag? 🙂
  • Wo es stecken bleibt? Welche Arten der Ausgabe sind Sie zu sehen?
  • wusste es gab einen 🙂 tut mir Leid, und für diejenigen, die interessiert, ist nicht eine Aufgabe nur, meine Prüfung sehr geringe Problemlösungsfähigkeit 🙂
  • wo sind Sie stecken?
  • bekomme ich so etwas wie diese imgur.com/39TP5 mein walker nicht gehen :/
  • Ihre tests (im ifs) mit = falsch sind. Der Vergleich geschieht mit ==.

InformationsquelleAutor kdma | 2011-04-04
Schreibe einen Kommentar