Labyrinth



  • Hi,
    bin neu im Board und hab gleich ein dickes Problem. Ich soll ein Programm schreiben, welches ein Labyrinth erstellt und den richtigen weg findet.
    Hab ein wenig gegoogelt und dazu einen Quelltext gefunden. Leider hat der so auf anhieb nich geklappt, nun hab ich noch ein paar Fehler drin und bin in C/C++ leider nicht so fit um das selber beheben zu können. Daher wäre ich sehr dankbar wenn mir jemand dabei helfen könnte.
    Hier mal der Code

    #include "stdafx.h"
    
    int sx=30 ,sy=8;
    char c[8][30];
    
    int main()
    {
    int startx, starty, zielx, ziely, i, j;
    i = findeweg(startx,starty);
    
    sprintf(c[0], "#s############################");
    sprintf(c[1], "# ######## ##     ############");
    sprintf(c[2], "# #    ### ## ################");
    sprintf(c[3], "# # #  ### ## ################");
    sprintf(c[4], "# # #  ###    ##########     #");
    sprintf(c[5], "# # #    # ## ########## ### #");
    sprintf(c[6], "#   #  ### ## ########## ### #");
    sprintf(c[7]; "# ###      ##            ### z");
    sprintf(c[8], "##############################");
    
    for (i=0;i<=sx;i++) for (j=0;j<=sy;j++)
    	{
    	if (c[j][i] =='s' )
    		{
    		 startx = i; starty = j;
    		}
    	if (c[j][i] == 'z' )
    		{
    		 zielx = i; ziely = j;
    		}
    
    	c[starty][startx] = 's';
    	c[ziely][zielx] = 'z';
    
    	for (i=0;i<sy;i++)
    		{
    			printf("%s\n"c[i]);
    		}
    	}
    
        int findeweg(int posx, int posy)
    
    		{
    			if (c[posy][posx] == '0') || (c[posy][posx] == '#'))
    				return(0);
    
    			if (c[posy][posx] == 'z') return(1);
    
    			c[posy][posx] == '0';
    
    			if (findeweg(posx,posy+1)==1)
    				{ c[posy+1][posx] ='.';
    				return(1);
    				}
    
    			if (findeweg(posx,posy-1)==1)
    				{ c[posy-1][posx] = '.';
    				return(1);
    				}
    
    			if (findeweg(posx+1,posy)==1)
    				{ c[posy][posx+1] = '.';
    				return(1);
    				}
    
    			if (findeweg(posx-1,posy)==1)
    				{ c[posy][posx-1] = '.';
    				return(1);
    				}
    
        system("PAUSE");
        return 0;
    }
    


  • Hallo und willkommen im Forum,

    ich weiß nicht, ob es dir wirklich weiterhilft, einfach fertige Quellcodes zu kopieren. Wie willst du da jemals Verständnis erlangen, zumal ja die Aufgabe war, das selber zu schreiben. Ok, musst du selber wissen...

    Normalerweise geben Compiler aussagekräftigere Fehlermeldungen als 'geht nicht'. Eben diese solltest du auch in deinen Fragen mit angeben, wenn du sie nicht verstehst. Oder sollen wir jetzt etwa für dich durch den Compiler jagen?
    Das sehe ich nicht ein, beim kurzen drüberlesen schätze ich mal, das war ein C Programm (bis auf die 1. Zeile) und du compilierst als C++ Code und der Compiler vermisst die Funktionsbekanntmachung von sprintf (passenden Header nicht inkludiert), was er bei C durchgehen lässt.



  • hi,
    @SeppSchrot
    natürlich hast du recht, das es besser wäre, wenn ich mich alleine damit beschäftigen würde. Jedoch hab ich den Algo schonmal behandelt, leider in einer anderen Programmiersprache, deswegen fällt mir die alleinige Umsetzung in C schwer.
    Nur deswegen hab ich wegen einer Vorlage mal gegoogelt und halt auch was gefunden.
    Der obrige Quelltext war leider nicht komplett, hab ihn nun editiert.
    Folgende Fehler sind noch vorhanden

    labyrinth.cpp(12) : error C2065: 'findeweg' : nichtdeklarierter Bezeichner

    labyrinth.cpp(21) : error C2143: Syntaxfehler : Fehlendes ')' vor ';'

    labyrinth.cpp(21) : error C2660: 'sprintf' : Funktion akzeptiert keine 1 Parameter

    labyrinth.cpp(21) : error C2059: Syntaxfehler : ')'

    labyrinth.cpp(41) : error C2146: Syntaxfehler : Fehlendes ')' vor Bezeichner 'c'

    labyrinth.cpp(41) : error C2059: Syntaxfehler : ')'

    labyrinth.cpp(47) : error C2373: 'findeweg' : Neudefinition; unterschiedliche Modifizierer

    labyrinth.cpp(47) : error C2601: 'findeweg' : Lokale Funktionsdefinitionen sind unzulaessig

    labyrinth.cpp(78) : fatal error C1004: Unerwartetes Dateiende gefunden

    Die größten Sorgen machen mir dabei die Fehler für die Funktion "findeweg"



  • findeweg ist nicht definiert. findeweg sollte wohl eine Funktion sein, aber sie ist nicht im Programm enthalten.
    geloescht



  • Oh doch, sie ist enthalten, allerdings in der main-Funktion.

    Sorry gamefreak, aber ich tue mich damit sehr schwer, jetzt dir die absoluten Grundlagen über Funktionenbekanntmachungen etc. vorzukauen.
    Dazu gibt es hier
    http://www.c-plusplus.net/cms/modules.php?op=modload&name=Downloads&file=index&req=viewdownload&cid=1

    ausreichend Tutorien, du wirst nicht umhinkommen, dich für C oder C++ zu entscheiden und dir die 15 Minuten zeit nehmen zu müssen.


Anmelden zum Antworten