Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 12:01

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

Advertisement



Game of life

Discussion on Game of life within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
S u n's Avatar
 
elite*gold: 460
Join Date: Feb 2010
Posts: 583
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,137
Received Thanks: 572
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


Similar Threads Similar Threads
[Selling] Arma 3 money! life mod/altis life/taki life
06/07/2020 - ArmA Trading - 8 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 +2. The time now is 12:01.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.