komentarze do algorytmu [C++]

0

Czytalem posty ktore mowia ze kilkadziesiat lini kodu nie ma szans na skomentowanie a czy moglby ktos skomentowac kilka linijek oto link do tematu.
http://4programmers.net/Forum/viewtopic.php?id=150082
potrzebuje komentarzy do funkcji znTrase();.

0
bulibrb napisał(a)

potrzebuje komentarzy do funkcji znTrase();

bulibrb napisał(a)

kilkadziesiat lini kodu nie ma szans na skomentowanie
Sam sobie odpowiedziałeś.

0

kilka a kilkadziesiąt to chyba różnica

0
bulibrb napisał(a)

kilka a kilkadziesiąt to chyba różnica
Dla mnie kilkadziesiąt to liczby od 20 do 99. Ta funkcja ma 63, czy coś koło tego...

0

a mógłbyś mi pomóc??

0
bulibrb napisał(a)

a mógłbyś mi pomóc??
A z czym konkretnie masz problem? Prośba o wyjaśnienie funkcji z powodu "bo nie rozumiem" nie jest konkretem. Czego konkretnie nie rozumiesz?

0

nie rozumiem dlaczego musza tam sie znajdowac zmienne statyczne oraz zmienne str oraz straz

0

Wklej to w tag < cpp >, bo czytać się nie chce

0

tzn ta funkcje??

0
#include <iostream>
#include <fstream>
#include <conio.h>

using namespace std;
int wspX, wspY, rozX, rozY;
char **tab;
void wczytlab();
void pokazlab();
bool wprStart();
bool wprKoniec();
bool czywczyt;
void znTrase();

void wczytlab()
{
        int wyb;
        cout<< "wybierz labirynt: 1 lub 2"<<endl;
        cin >> wyb;
        rozX=20;
        rozY=20;
        fstream plik;
        czywczyt= true;

        if(wyb==1)
        plik.open("labirynt.txt",ios::in);
        else
        plik.open("labirynt2.txt",ios::in);
        system("cls");
        if(!plik)
  {
         czywczyt=false;
         cout<<"Nie wczytano labiryntu"<<endl;
  }
  if(czywczyt)
  {
          int i=0,j=0;
          char t;
          tab = new char*[rozX];
          tab[0]=new char[rozY];
          while(!plik.eof())
          {
                plik.get(t);
                if((int)t==10)
                {
                   i++;j=0;
                   tab[i]=new char[rozX];
                   continue;
                }
                tab[i][j]=t;
                j++;
          }
  }
  plik.close();
}

void pokazlab()
{

if(!czywczyt)
   {
                cout<<"NIE WCZYTANO PLIKU NIE MA CZEGO OGLADAC"<<endl;
                return;
   }
   int i,j;
   char t;
   for(i=0;i<rozX;i++)
   {
          for(j=0;j<rozX;j++)
          {
                  t=tab[i][j];
                  if(t=='2')
                   cout <<" ";//(char)254;
                  else if(t=='1')
                   cout <<(char)219;
                  else if(t=='3')
                   cout <<"W";
                  else if(t=='4')
                   cout <<"S";
                  else
                        cout <<t;
          }
          cout<<"\n";
  }

}

bool wprStart()
{

  int x,y;
  cout<<"Wprowadz wspolrzedne startu:"<<endl;
  cout<<"Podaj wspolzedna X: ";
  cin>>x;
  cout<<"Podaj wspolzedna Y: ";
  cin>>y;
  if((x-1<0 || x-1>rozX-1) || (y-1<0 || y-1>rozY-1))
  {
        cout<<"PODALES NIEWLASCIWY ZAKRES"<<endl;
        getch();
        return false;
  }
  else
  {
          if(tab[y-1][x-1]=='2')
          {
                 wspX=x-1;
                 wspY=y-1;
                 tab[y-1][x-1]='4';
                 return true;
          }
          else
          {
                 cout<<"TRAFILES W W SCIANE"<<endl;
                 getch();
                 return false;
          }
  }

}
bool wprKoniec()
{

  int x,y;
  cout<<"Wprowadz wspolrzedne konca:"<<endl;
  cout<<"Podaj wspolzedna X: ";
  cin>>x;
  cout<<"Podaj wspolzedna Y: ";
  cin>>y;
  if((x-1<0 || x-1>rozX-1) || (y-1<0 || y-1>rozY-1))
  {
        cout<<"PODALES NIEWLASCIWY ZAKRES"<<endl;
        getch();
        return false;
  }
  else
  {
          if(tab[y-1][x-1]=='2')
          {
                 tab[y-1][x-1]='3';
                 return true;
          }
          else
          {
                 cout<<"TRAFILES W W SCIANE"<<endl;
                 getch();
                 return false;
          }
  }

}

void znTrase(int x,int y,int straz)
{
  static int pY,pX, find;
  int moz=0,biezX,biezY,str;
  if(find==1)
  return;
  system("cls");
  pokazlab();
  str=straz+1;
  if(x==-1 || y==-1)
  x=wspX,y=wspY;
  pX=x;
  pY=y;
  while(moz<4)//dla danej opozycji mogą być max 4 drogi (góra dół lewo prawo)
  {
     //okreslenie mozliwej pozycji wzgledem bieżącego położenia pozycji
     if(moz==0)
     {
        biezX=x;
                biezY=y-1;
     }            
     else if(moz==1)
     {
        biezX=x+1;
        biezY=y;
     }            
         if(moz==2)
         {
                biezX=x;
                biezY=y+1;
         }
         if(moz==3)
         {
                biezX=x-1;
                biezY=y;
         }
     //jeśli bieżąca pozycja wykracza poza labirynt to bierz następną
         if((biezX<0 || biezX>rozX-1) || (biezY<0 || biezY>rozY-1))
     {
       moz++;                      
           continue;
         }
         else
         {
                 //jesli nie wykracza i jest drogą to nią idź
                 if(tab[biezY][biezX]=='2')
                 {
                   tab[biezY][biezX]='.';
                   znTrase(biezX,biezY,str);
                 }
                 //jesli nie wykracza i jest jakimś wyjściem to znalałes wyjście
                 else if(tab[biezY][biezX]=='3')
                 {
                   cout<<"WYJSCIE !!!!"<<endl;
                   //getch();
                   find=1;
                   return;
                }
                moz++;
         }
  }

}

int main(void)
{

  wczytlab();
  pokazlab() ;
  wprStart();
  wprKoniec();
  system("cls");
  znTrase(-1,-1,0);

  return 1;
}

a tutaj przykladowy labirynt:

11111111111111111111
12222222212222222221
12111111211111111121
12122222222221212221
12111211211111112121
12111211222222222221
12111211211211112121
12111211211211112121
12111211211211112121
12222222211211112121
12111211222222222221
12111211211121121111
12111211211121121111
12222222211121121111
12111111211121121111
12222222222222222211
11121121211121111211
11121121211121111211
11122221211122222221
11111111111111111111

przykladowe współrzedne startu(2,2), konca (19,19)

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0