Register for your free account! | Forgot your password?

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

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

Advertisement



C++ Zugriff außerhalb eines Mehrdimensionalen Arrays verbieten

Discussion on C++ Zugriff außerhalb eines Mehrdimensionalen Arrays verbieten within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
newchild's Avatar
 
elite*gold: 0
Join Date: Oct 2012
Posts: 151
Received Thanks: 42
C++ Zugriff außerhalb eines Mehrdimensionalen Arrays verbieten

Sehr geehrte epvp-Community,
ich versuche ein eigenes Spiel des Lebens (Conway) als Hausaufgabe zu programmieren. Dieses Programm () funktioniert auch soweit, jedoch testet die Funktion getNachbarn auch Zahlen außerhalb des Spielfeldes(Array). (Bild: ).

Nun wollte ich wissen ob man so einen Zugriff auch "verbieten" kann, oder ob ich alles mühsam einprogrammieren muss.

Danke für die Hilfe im Vorraus.
newchild is offline  
Old 07/10/2014, 18:55   #2


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407


Code:
	

    int getNachbarn(int Liste[X][Y], int XKoor, int YKoor)
    {
            int Anzahl= 0;
            for(int i = XKoor - 1; i <= XKoor + 1; i++)
            {
                    for (int ci = YKoor - 1; ci <= YKoor + 1; ci++)
                    {
                            if (i < 0 || i >= X || ci < 0 || ci >= Y || (i == XKoor && ci == YKoor))
                            {
                                    continue;
                            }
                            if (Liste[i][ci] == 1)
                            {
                                    Anzahl++;
                            }
                    }
            }
            cout << Anzahl << endl;
            return Anzahl;
    }
Hab jetzt einfach mal etwas schöner formatiert (Lektion 1: formatier deinen Code ordentlich, insbesondere Leerzeichen erhöhen die Lesbarkeit ungemein) und die zusätzlichen Bedingungen für die Feldgrenzen eingefügt.

Mit C++11 Magic lässt sich das bestimmt noch schöner schreiben.
MrSm!th is offline  
Thanks
1 User
Old 07/10/2014, 19:08   #3
 
newchild's Avatar
 
elite*gold: 0
Join Date: Oct 2012
Posts: 151
Received Thanks: 42
Quote:
Originally Posted by MrSm!th View Post


Code:
	

    int getNachbarn(int Liste[X][Y], int XKoor, int YKoor)
    {
            int Anzahl= 0;
            for(int i = XKoor - 1; i <= XKoor + 1; i++)
            {
                    for (int ci = YKoor - 1; ci <= YKoor + 1; ci++)
                    {
                            if (i < 0 || i >= X || ci < 0 || ci >= Y || (i == XKoor && ci == YKoor))
                            {
                                    continue;
                            }
                            if (Liste[i][ci] == 1)
                            {
                                    Anzahl++;
                            }
                    }
            }
            cout << Anzahl << endl;
            return Anzahl;
    }
Hab jetzt einfach mal etwas schöner formatiert (Lektion 1: formatier deinen Code ordentlich, insbesondere Leerzeichen erhöhen die Lesbarkeit ungemein) und die zusätzlichen Bedingungen für die Feldgrenzen eingefügt.

Mit C++11 Magic lässt sich das bestimmt noch schöner schreiben.
Trotzdem scheint das noch nicht so ganz zu funktionieren ( man beachte die 4en)
newchild is offline  
Old 07/10/2014, 19:15   #4
 
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
Habe mir dein Programm nicht komplett angeguckt, aber
#define X 5
#define Y 5
Damit geht dein array von 0 bis einschließlich 4. Womit
Code:
       while(YKoor>5){
            cout << "Zahl zu gross. Bitte erneut eingeben" << endl;
            cin >> YKoor;
        }
bei einer eingabe von 5 auch einen Fehler schmeißen wird. Dadurch kann auch 4 ausgegeben werden. Guck dir vielleicht arrays nochmal an.
th0rex is offline  
Thanks
1 User
Old 07/10/2014, 19:29   #5
 
newchild's Avatar
 
elite*gold: 0
Join Date: Oct 2012
Posts: 151
Received Thanks: 42
Okay. Nach diesem "Debug" () habe ich das Problem erkannt. Durch diese
Code:
for(int i = 0; i<X; i++){
            for(int ci = 0; ci<Y; ci++){
                if(getNachbarn(Feld,i,ci) < 2){
                    Feld[i][ci]=0;
                }
                else{
                  if(getNachbarn(Feld,i,ci)<=3){
                    Feld[i][ci]=1;
                }
                else{
                    Feld[i][ci]=0;
                }
            }
        }
        }
Schleife werden sofort neue Zellen gesetzt. Dies sollte jedoch nicht sein , da sonst das Spiel quasi bereits gespielt wird. Somit benötige ich ein weiteres Array für ein neues "Spielbrett". Danke aber für die Hilfe

EDIT: Ja jetzt funktioniert es perfekt
newchild is offline  
Reply


Similar Threads Similar Threads
Objekt außerhalb eines Conatiners so löschen das es auch aus dem Container weg ist
08/04/2013 - C/C++ - 5 Replies
Ich habe eine Playlist erstellt die einen Vector aus Tracks beinhaltet. Die einzelen Tracks gebe ich dann auf dem User Interface aus indem ich sie als pointer an eine Methode einer dafür vorgesehen UI_Klasse weitergebe (hier vereinfacht als "void UserInferfacShowTrack(CTrack* _Track)" dargestellt). auf dem User Interface will ich dann den Track bearbeiten oder löschen usw. Das problem ist aber das man den Track nur über den Aufruf der "PlayList.DeleteTrack()" Funktion aus der Playlist...
Länge eines unbekannten Arrays?
01/05/2013 - C/C++ - 6 Replies
Hay, ich habe da ein Problem. Ich hole mir einen Pointer auf ein Array mittels inline asm. Später brauche ich aber die Größe von dem array, was jedoch dann nicht mehr geht. In Code ausgedrückt: char *bufebx; ... __asm { mov bufebx, EBX
[Hilfe] FreeBSD kein zugriff als root / kein FTP zugriff
03/25/2012 - Metin2 Private Server - 5 Replies
Hallo Community, ich beschäftige mich jetzt seit 3 Stunden mit einem Problem auf meinem FreeBSD-Server. Ich Installiere FreeBSD über die .iso in Virtual box und wen es installier ist Loge ich mich mit root ein. Dann aber habe ich mit root keinerlei Zugriffsrechte. Ich kann als normal angelegter User auf den FTP Server zugreifen aber als root nicht. Und ich kann nicht in /etc/ssh/sshd_config die Einlogrechte ändern weil dann Permissen denied kommt. Bitte um Hilfe mein Skype: passilp Ich...
Zugriff von Außerhalb auf GUI elemente
11/11/2007 - General Coding - 4 Replies
Nabend, ich krieg nochn Juppie. Ich brauch nen Algorithmus, wie ich von außerhalb auf GUI Elemente zugreifen kann. Eigentlich müsste man das mit Delegaten regeln können, allerdings weiss ich nicht, wie. Ich kann zwar dem Delegaten die Printfunktion in der GUI Klasse zuweisen, allerdings kann ich dann den Delegaten nicht in der Programmklasse verwenden. Wenn ich dem Delegaten in der Programmklasse die Printfunktion aus der GUI Klasse zuweisen muss, dann a) geht das nicht und b) muss ich ein...



All times are GMT +1. The time now is 12:13.


Powered by vBulletin®
Copyright ©2000 - 2026, 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 ©2026 elitepvpers All Rights Reserved.