Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Array als Rückgabewert

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
04.06.2004, 14:14 Uhr
DaReal



Also ich bin noch ein ziehmlicher noob was das c++ programmieren angeht, deswegen bitte nicht schlagen wenn das Problem zu trivial ist ^^ !

Also ich hab folgende Funktion in meiner bbmmf.a, die auch so in meiner bbmmf.h deklariert ist:

C++:
void MoeglicheFelder(signed short pos_x, signed short pos_y, struct feld spielfeld [SIZE_Y][SIZE_X], unsigned short moeglichefelder_x_koordinaten[8], unsigned short moeglichefelder_y_koordinaten[8])
{
   signed char Nachbarfelder_X_Koordinaten [] =   {-1, 1, 1,
                                                   -2,    2,
                                                   -2, 1, 1};
   signed char Nachbarfelder_Y_Koordinaten [] =   {-1, 0, 0,
                                                    1,    0,
                                                    1, 0, 0};
                                                  
   for (char i = 0; i < 8; i++)
    {
     pos_x = pos_x + Nachbarfelder_X_Koordinaten [i];
     pos_y = pos_y + Nachbarfelder_Y_Koordinaten [i];
     if (pos_x >= 0 && pos_x < 15 && pos_y < 26 && pos_y >= 0 && spielfeld[pos_y][pos_x].SpielerImFeld == 0 )
      {
       for (char j = 0; j < 8; j++)
        {
         moeglichefelder_x_koordinaten [j] = pos_x;
         moeglichefelder_y_koordinaten [j] = pos_y;
        }
      }
    }  
}



und in meiner main hab ich diesen code der die Funktion aufruft und dann die Werte der Funktion ausgeben soll:

C++:
MoeglicheFelder(pos_x, pos_y, spielfeld, moeglichefelder_x_koordinaten, moeglichefelder_y_koordinaten);
  for (char j = 0; j < 8; j++)
    {
     cout << "[" << moeglichefelder_x_koordinaten [j] << "] "
            << "[" << moeglichefelder_y_koordinaten [j] << "]" << endl;
    }



So jetzt zu meinem Problem: Ich will mit der Funktion berechnen lassen, in welche Felder sich ein Spieler der sich z.B. auf pos_x = 5 pos_y = 5 befindet, bewegen kann. Meiner Meinung nach müsste der Code mir bei 5,5 das ausgeben:

[4][4]
[5][4]
[6][4]
[4][5]
[6][5]
[4][6]
[5][6]
[6][6]

Tut er aber nicht !! Er gibt mir 8 mal hintereinander die [6][6] aus, also die letzte pos_x und die letzte pos_y die an moeglichefelder_x_koordinaten und moeglichefelder_y_koordinaten übergeben wurde. Jetzt meine Frage : Warum ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
04.06.2004, 18:51 Uhr
typecast
aka loddab
(Operator)



C++:
       for (char j = 0; j < 8; j++)
        {
         moeglichefelder_x_koordinaten [j] = pos_x;
         moeglichefelder_y_koordinaten [j] = pos_y;
        }



Hier liegt der Fehler. Die Schleife darf nicht sein. Du überschreibst nämlich am Ende alle Werte mit dem letzten Ergebnis.
Du hast ja schon selber gesagt, dass [6][6] dein letztes Ergebnis sein sollte.
Nach dieser Schleife, haben halt alle Felder den Inhalt 6,6
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.06.2004, 03:48 Uhr
DaReal



Ah jetzt ja ! Boah bin ich blind. Vielen Danke für die Hilfe !
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: