Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 21:24

  • Please register to post and access all features, it's quick, easy and FREE!


Game of life

Reply
 
Old   #1
 
elite*gold: 590
Join Date: Feb 2010
Posts: 576
Received Thanks: 122
Game of life

Servus,
Ich brauche eure Hilfe!
Ich schriebe grade für die Uni ein Programm zum Game of Life.
Dieser Teil soll ein 2 dimensionales Array nach folgenden Regeln überprüfen:

1. Eine lebende Zelle ('X') überlebt in der nächsten Generation, wenn sie zwei oder drei Nachbarn hat. Sind es weniger bzw. mehr, so stirbt sie an Vereinsamung bzw. Überbevölkerung.
2. Eine tote Zelle (' ') wird immer dann in der nächsten Generation zum Leben erweckt, wenn sie genau drei lebendige Nachbarn hat, ansonsten bleibt sie tot.

Das Programm sollte eigentlich das aktuelle Array (feld) Feld für Feld überprüfen, bei jeder Zelle alle "Nachbarn" überprüfen und nach den regeln in ein zweites array (prueffeld) übertragen. Das ganze klappt aber nicht.

Sieht jemand zufällig einen Fehler?
Gern auch Privat für skype oder sowas melden. Stehe echt auf dem Schlauch..





Vielen Dank!



S u n is offline  
Old 05/18/2018, 15:58   #2
 
elite*gold: 0
Join Date: Feb 2009
Posts: 1,066
Received Thanks: 501
Den einzigen Fehler im Prüfcode den ich gefunden habe ist:
Code:
for(int y=-1;y<2;y++){
  for (int x = -1; x < 2; x++) {  
    if (feld[zeilen + y][spalte + x] == 'X')
Wenn zeilen = 0 dann greifst du mit feld[-1][spalte + x] auf uninitialisiertes Memory zu (Da es keine -1te zeile gibt) und da kann alles mögliche drin stehen, da könnte überall X drin stehen (auch wenn es wahrscheinlicher ist das irgendwas random drin steht).
Wenn spalte = 0 ist versuchst du auf die -1te spalte zu zu greifen, und das wiederum ist die letzte spalte der vorherigen Zeile, verfälscht also auch deine ergebnisse.
Für Zeilen =21 oder Spalten= 78 und x,y +1 gilt natürlich ähnliches

Das ganze kann man wunderschön in einem einzeiler lösen
Code:
int Nachbarn = (zeilen && spalte && feld[zeilen-1][spalte-1] == 'X') + (spalte && feld[zeilen][spalte-1] == 'X') + (zeilen < 21 && spalte && feld[zeilen+1][spalte-1] == 'X') + (zeilen && feld[zeilen-1][spalte] == 'X') + (zeilen < 21 && feld[zeilen+1][spalte] == 'X') + (zeilen && spalte<77 && feld[zeilen-1][spalte+1] == 'X') + (spalte<77 && feld[zeilen][spalte+1] == 'X') + (zeilen < 21 && spalte<77 && feld[zeilen+1][spalte+1] == 'X')


warfley is offline  
Reply



« Anfänger braucht hilfe bei einer Aufgabe! | How To Find Bases Game Offset SpecialForcePHSea »

Similar Threads
[Selling] Arma 3 money! life mod/altis life/taki life
06/26/2018 - ArmA Trading - 6 Replies
MONEY SERVICE Prices: 1MIL=$0.50 5MIL= $2 10MIL= $3.50 20MIL= $6 anyamount x3= $15
[Selling] Arma 3 money! life mod/altis life/taki life
07/23/2016 - ArmA Trading - 4 Replies
Hi i am selling money on any altis life/life mod/taki life. prices: €0.50 per million €2 for 5 million €3.50 for 10 million €15 for any amount on 3 servers servers i know that work: Xenos taki life
[Trading] Steam with Dota2, CS Source, Half-life, Half-life: Ep1, Half-life: Lost Coast
05/20/2013 - Steam Trading - 0 Replies
Trading for € (paypal only) or decent League of Legends EUNE account (with first registered e-mail)



All times are GMT +1. The time now is 21:24.


Powered by vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Abuse
Copyright ©2018 elitepvpers All Rights Reserved.