Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » game of life variable problem

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
02.03.2015, 13:03 Uhr
Bolle



Hi ich sitz gerade am game of life.
An einer Stelle häng ich grade und weis nicht recht, also
Ich weis überhaupt nicht woran es liegen könnte.

Das Problem ist das beim testen nach Nachbarn "anzNachbarn++" nicht klappt.
Ich hab nach anderem code geguckt, die schleife extern ausprobiert.
Läuft alles gut deswegen bin ich so ratlos. Hab's auch mit static probiert.
Hat nichts geändert.

Ich würde daher gern wissen wo mein Fehler liegt.

Außerdem würde mich noch interessieren ob der Code evtl
Unpraktisch, umständlich o.ä. ist.
Was ihr daran verbessern würdet.

Danke schonmal im vorraus.



C++:
#include <iostream>


int Feld_aktuell  [25][25] = { 0 };
int Feld_Naechste [25][25] = { 0 };
int PosX=0, PosY=0;

static int anzNachbarn=0;


int NachbarTest(int PosY, int PosX){
    anzNachbarn = 0;
    if(Feld_aktuell[PosY-1][PosX-1]=='1')
        anzNachbarn++;
    if(Feld_aktuell[PosY-1][PosX] == '1')
        anzNachbarn++;
    if(Feld_aktuell[PosY-1][PosX+1]=='1')
        anzNachbarn++;
    if(Feld_aktuell[PosY]  [PosX+1] == '1')
        anzNachbarn++;
    if(Feld_aktuell[PosY]  [PosX+1] == '1')
        anzNachbarn++;
    if(Feld_aktuell[PosY+1][PosX-1]=='1')
        anzNachbarn++;
    if(Feld_aktuell[PosY+1][PosX] == '1')
        anzNachbarn++;
    if(Feld_aktuell[PosY+1][PosX+1]=='1')
        anzNachbarn++;

    if( anzNachbarn == 2 || anzNachbarn == 3)
        Feld_Naechste[PosY][PosX] = 1;
    else if( anzNachbarn == 0 || anzNachbarn == 1 || anzNachbarn == 4 ||
             anzNachbarn == 5 || anzNachbarn == 6 || anzNachbarn == 7 || anzNachbarn == 8 )
        Feld_Naechste[PosY][PosX] = 0;

    return anzNachbarn;     //zu testzwecken
}//NachbarTest

void Ausgabe_Feld(){
    for(PosY=0; PosY<25; PosY++)                        //Ausgabe aktueller Generation
    {
        for(PosX=0; PosX<25;PosX++)
        {
            std::cout<<" "<<Feld_aktuell[PosY][PosX];
            NachbarTest(PosY, PosX);
        }//for
        std::cout<<"\n";
    }//for
}

void Zufall(){
    srand(time(NULL));                                      //
        for(PosY=0; PosY<25; PosY++)                            //Zufallsgenerator
            for(PosX=0; PosX<25;PosX++)                         //
                     Feld_aktuell[PosY][PosX]= rand()%2;        //
}


int main()
{
    Zufall();

    while(1)
    {
        Ausgabe_Feld();

        for(PosY=0; PosY<25; PosY++)                        //Aktuelle Generation mit neuer überschreiben
            for(PosX=0; PosX<25;PosX++)
                Feld_aktuell[PosY][PosX] = Feld_Naechste[PosY][PosX];
        getchar();
    }//while
    return 0;
}//main

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
02.03.2015, 14:19 Uhr
Tommix



Hallo,
Du belegst die Felder mit der Zahl 1, nicht dem Zeichen '1'.

Gruß,
Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
02.03.2015, 14:27 Uhr
Bolle



Aber es sind doch alle Variablen vom Typ int, die müssten dann doch automatisch
Den Wert als Zahl behandeln oder nicht?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
02.03.2015, 15:09 Uhr
Tommix



Das schon, aber 1 und '1' sind zwei verschiedene Zahlen:

C++:
int a = 1;
int b = '1';

std::cout << a << std::endl;
std::cout << b << std::endl;



'1'==49. Das ist der ASCII-Code.

- Tommix

Dieser Post wurde am 02.03.2015 um 15:09 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
02.03.2015, 15:28 Uhr
Bolle



...ich hab gestern den ganzen Tag diesen Code zerpflückt und getestet
und das ist mir nicht aufgefallen xD
Danke kp wieso ich '1' da hingeschrieben hab^^
 
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: