übergabe eines arry in eine andere Funktion



  • Hallo,

    ich lerne in der Schule gerade C/C++. Ich wollte jetzt einmal für mich als übung eine Mühle-spiel schreiben.
    Jetzt kommt der lacher, als Konsolenspiel.

    Ich habe folgendes Problem.
    Ich möchte den Teil mit der Ausgabe des Spielfeldes in eine Funktion auslagern. Aber das arry wird nicht übergeben.

    Das ganze sieht bisher so aus:

    #include <stdio.h>
    #define DIM 8
    void ausgabe(int feld[8][8]);
    
    int main()
    {
     int Spielfeld[DIM][DIM]={{0,2,0,2,0,2,0,2},
                              {2,0,2,0,2,0,2,0},
                              {0,2,0,2,0,2,0,2},
                              {0,0,0,0,0,0,0,0},
                              {0,0,0,0,0,0,0,0},
                              {1,0,1,0,1,0,1,0},
                              {0,1,0,1,0,1,0,1},
                              {1,0,1,0,1,0,1,0}};                         
    
     int i,ii;
     int ho,ve; 
    
     start:
    
     ausgabe(Spielfeld[DIM][DIM]);
    
     printf("\nMit welchem Stein moechten sie ziehen?");
     printf("\nWelche Spalte? ");
     scanf("%d", &ve);
     fflush(stdin);
    
     printf("Welche Zeile? ");
     scanf("%d", &ho);
     fflush(stdin);
    
     Spielfeld[ho][ve]=0;
    
     printf("\nWo moechten sie hinziehen?");
     printf("\nWelche Spalte? ");
     scanf("%d", &ve);
     fflush(stdin);
    
     printf("Welche Zeile? ");
     scanf("%d", &ho);
     fflush(stdin);
    
     Spielfeld[ho][ve]=1;
    
     goto start;
    
     getchar();
     return 0; 
    }
    
    void ausgabe(int feld[8][8])
    { 
     int i,ii; 
     for(i=0;i<DIM;i++)
     {  
      printf("\n");
      for(ii=0;ii<DIM;ii++)
      {      
       printf("%d ",feld[i][ii]);
       //printf("hallo");
      }
     }
     return; 
    }
    

    Ich hab dieses bischen code im kdevelop geschrieben und auch unter borland ausprobiert.
    Es wird jedesmal über eine konvertierung gemeckert, ich kann aber damit leider nichts anfangen.
    Über tips die mich weiterbringen wäre ich sehr dankbar.



  • Programmiere zwar noch nicht so lange mit C++, aber wenn ich es richtig weiß, werden Arrays immer "by reference" übergebn, dass heißt, der übergibt einen Zeiger auf den Anfang des Speicherbereichs, wo dein Array im "RAM" liegt.
    Probier es mal mit der folgenden Funktionsdeklaration:

    void ausgabe(int** feld)
    

    und lass den Rest so.



  • Versuchs mal so:

    // Funktion:
    void ausgabe(int feld[][DIM]) 
    // In Main():
    ausgabe(Spielfeld);
    


  • danke für eure hilfe,
    jetzt klappt es,

    //Deklaration
    void ausgabe(int feld[DIM][DIM]);
    //Aufruf
    ausgabe(Spielfeld);
    //Definition
    void ausgabe(int feld[DIM][DIM])
    

    wobei "feld[][DIM]" auch gehen würde

    ich hab es auch mit dem int** versucht, damit hatte ich aber weniger erfolg



  • mafiahamster schrieb:

    ich hab es auch mit dem int** versucht, damit hatte ich aber weniger erfolg

    http://www.c-plusplus.net/forum/viewtopic.php?t=58906



  • mafiahamster schrieb:

    Jetzt kommt der lacher, als Konsolenspiel.

    Wieso ein lacher, nur weil du die Konsole als Ausgabemedium benutzt???
    Selbst die besten Programmierer werden immer wieder Konsolenprogramme schreiben!!!

    Also deshalb nicht entmutigen lassen 👍



  • HumeSikkins schrieb:

    http://www.c-plusplus.net/forum/viewtopic.php?t=58906

    Ich hab mir den link mal zu Gemüte geführt. Leider kann ich zum jetztigen Zeitpunkt noch nicht sehr viel damit anfangen, da ich noch nichts über pointer weiss.

    Wolle. schrieb:

    Wieso ein lacher, nur weil du die Konsole als Ausgabemedium benutzt???
    Selbst die besten Programmierer werden immer wieder Konsolenprogramme schreiben!!!

    Also deshalb nicht entmutigen lassen 👍

    naja, ich finds selber ein wenig zum lachen das mein Spielfeld aus nullen, eines und zweien besteht, aber mein momentaner Kenntnisstand lässt leider nicht mehr zu.



  • mafiahamster schrieb:

    Ich hab mir den link mal zu Gemüte geführt. Leider kann ich zum jetztigen Zeitpunkt noch nicht sehr viel damit anfangen, da ich noch nichts über pointer weiss.

    http://pweb.netcom.com/~tjensen/ptr/pointers.htm

    naja, ich finds selber ein wenig zum lachen das mein Spielfeld aus nullen, eines und zweien besteht, aber mein momentaner Kenntnisstand lässt leider nicht mehr zu.

    Was ist daran schlecht? Schonmal NetHack gespielt?



  • Offtopic: NetHack? Soll das ein Witz sein?



  • Bashar schrieb:

    Offtopic: NetHack? Soll das ein Witz sein?

    Ja, NetHack ist ein Witz - genau wie BrainFuck.
    Aber beides hat Anhänger (ich zähle mich allerdings nicht dazu)



  • [OT]Ach, ich hab das in der Schule über Windows-telnet gespielt, aufs erste Hinschauen hat niemand erkannt dass wir nur spielen und nicht arbeiten, ein echter Vorteil! :D[/OT]


Anmelden zum Antworten