Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C++ (http://www.go4expert.com/forums/cpp/)
-   -   maze in c++ (http://www.go4expert.com/forums/maze-in-cpp-t11722/)

seacat 29Jun2008 06:15

maze in c++
 
i have written this code ..if i use for loop it writes all zeros to 2 and if i use while then it dont display result i am lost ...
Code:

#include <cstdlib>
#include <iostream>
#include <fstream>

using namespace std;

     
      //----------------------------------------------------Print maze
    void fnPrintMaze(int m,int n,int**a)
      {
        for (int i=0; i<m; i++)
          {
          for (int j=0; j<n; j++)
              {
              cout<<a[i][j];
              cout<<" ";
              }
          cout<<endl; 
          }   
      }
     
      //----------------------------------------------------Find Path

    void fnFindPath(int m,int n, int **a)
    {
        int i=0;
        int j=0;
     
         
        //if(i==0 && j==0)
          a[0][0]=2;
         
      do{ 
         
          if((i>=0 && j+1>=0 && i<=m-1 && j+1<=n-1 )&& a[i][j+1]==0)//right
          {j++;
                  a[i][j]=2;
          }
         
        else if((i+1>=0 && j>=0 && i+1<=m-1 && j<=n-1) && a[i+1][j]==0)//down
          {i++;
          a[i][j]=2;
         
          }
         
         
          else if((i>=0 && j-1>=0 && i<=m-1 && j-1<=n-1) && a[i][j-1]==0)    //left 
          {
          j--;
          a[i][i]=2;
          }
         
         
         
          else if((i-1>=0 && j>=0 && i-1<=m-1 && j<n-1) && a[i-1][j]==0) //up
          {
          i--;
          a[i][j]=2;
          }
      else
        {
        if(i>=0 && j+1>0 && i<=m-1 &&j+1<=n-1 && a[i][j+1]==2)
          {
                  a[i][j]=3;
                  j++;
          }
         
          else if(i+1>0 && j>=0 && i+1<=m-1 &&j<=n-1 && a[i+1][j]==2)
          {
          a[i][j]=3;
          i++;
          }
       
         
          else if(i>=0 && j-1>=0 && i<=m-1 &&j-1<=n-1 && a[i][j-1]==2)   
          {

          a[i][i]=3;
          j--;
          }
         
         
         
          else if(i-1>=0 && j>=0 && i-1<=m-1 &&j<n-1 && a[i-1][j]==2)
          {
         
          a[i][j]=3;
          i--;
         
          }
       
       
       
       
        }
        }while( !( i==m-1 && j==n-1));
         
   
    }
     



int main(int argc, char *argv[])
{
    int m, n;
    int **maze;
   
    fstream fin("maze.txt", ios::in);
    fin>>m;
    fin>>n;
       
    maze= new int*[m];                                    //defining rows
         
    for (int i=0; i<=m-1; i++)
          maze[i]=new int[n];                            //defining columns
   
   
    for (int i=0; i<=m-1; i++)                              //reading values from txt and putting in matrix
          for (int j=0; j<=n-1; j++)
              fin>>maze[i][j];
             
     

    fnPrintMaze(m,n,maze);
     
    //for (int i=0; i<=m-1; i++)
        // for (int j=0; j<=n-1; j++)
     
              fnFindPath( m,n, maze);     


    fnPrintMaze(m,n,maze);
   
 
    system("PAUSE");
    return EXIT_SUCCESS;
}



All times are GMT +5.5. The time now is 17:09.