1. We have moved from vBulletin to XenForo and you are viewing the site in the middle of the move. Though the functional aspect of everything is working fine, we are still working on other changes including the new design on Xenforo.
    Dismiss Notice

maze in c++

Discussion in 'C++' started by seacat, Jun 29, 2008.

  1. seacat

    seacat New Member

    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;
    }
     
    Last edited by a moderator: Jun 29, 2008

Share This Page