Vector & Array
-
Du kannst das Array natürlich auch dynamisch verwalten und Speicher zur Laufzeit je nach Bedarf bereitstellen und wieder aufräumen.
-
Checker&Murckser schrieb:
Du kannst das Array
naürlich auch dynamisch verwalten und Speicher zur Laufzeit je nach Bedarf bereitstellen und wieder aufräumen.ja das hab ich versucht.. also nur mal ein kleiner Code,der nun mit vc++ 2005(Express Edition oder wie das Programm heißt^^) von einer Headerfile entrießen wurde:
int orcatk_func(int hp_full, int pz_full, int gegner_atk[0]) { int gs =(pz_full <= 1 ? hp_full - gegner_atk[0] : pz_full - gegner_atk[0] && hp_full - gegner_atk[0]); return gs; }Das Problem ist hier,dass folgende Meldung kommt:
error C2466: Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
Und in der main Datei(sourcedatei/.cpp Datei) sieht es so aus:
//0.. Ork Angriffspunkte //1.. Wolf Angriffspunkte int gegner_atk[1]; int orc_hp = 200; gegner_atk[0] = 80; int wolf_hp = 40; gegner_atk[1] = 20;Das sollte aber schon logisch sein und nicht irgendwie verkehrt^^
Könntet ihr mir da bitte sagen,wie ich das machen soll
Ich hab ja nähmlich nur zwei freie Plätze,nähmlich "0" und "1"

Daniel
-
:Daniel: schrieb:
Checker&Murckser schrieb:
Du kannst das Array
naürlich auch dynamisch verwalten und Speicher zur Laufzeit je nach Bedarf bereitstellen und wieder aufräumen.ja das hab ich versucht..
Wie hast du das versucht?
:Daniel: schrieb:
int orcatk_func(int hp_full, int pz_full, int gegner_atk[0]) { int gs =(pz_full <= 1 ? hp_full - gegner_atk[0] : pz_full - gegner_atk[0] && hp_full - gegner_atk[0]); return gs; }Das ist absoluter Bullshit. Was du hier schreibst ist eine Funktion und die Werte in Klammern sind die Parameter die an diese übergeben werden. Da gehört kein Array hin.
So macht diese Funktion wieder Sinn:int orcatk_func (int hp_full, int pz_full, int orkangriffspunkte { // Hier steht der Code }Aufgerufen wird diese Funktion mit
orcatk_funk (Wert1, Wert2, gegner_atk[0])nicht definiert! Du übergibst den ersten Wert deines Arrays an die Funktion und arbeitest dann innerhalb dieser mit dem Namen orkangriffspunkte.
Alles klar?
Gruß
-
hallo
es geht schon,es passt alles doch warum geht es nicht mit "0"?
so geht es auf einmal bei mir,aber ich würde "0" auch einen Wert zuweisen
int orcatk_func(int hp_full, int pz_full, int gegner_atk[1]) { int gs =(pz_full <= 1 ? hp_full - gegner_atk[1] : pz_full - gegner_atk[1] && hp_full - gegner_atk[1]); return gs; }besser kann ich es nicht

-
Zeig mir doch mal bitte, wie du diese Funktion aufrufst.
-
int gegner_atk[1];Du scheints Arrays noch nicht verstanden zu haben.
Du legst ein Array mit genau einem Element an. Es existiert nur gegner_atk[0].Willst du zwei Elemente ( [0] und [1] ) musst du es so machen
int gegner_atk[2];Bei der Deklaration eines Arrays gibt man die Anzahl der Element an (hier: 2). Die einzelnen Elemente spricht man mit einem Index an der von 0 bis MAX-1 geht.
Gruß
Don06
-
Don06 schrieb:
int gegner_atk[1];Du scheints Arrays noch nicht verstanden zu haben.
Du legst ein Array mit genau einem Element an. Es existiert nur gegner_atk[0].Willst du zwei Elemente ( [0] und [1] ) musst du es so machen
int gegner_atk[2];Bei der Deklaration eines Arrays gibt man die Anzahl der Element an (hier: 2). Die einzelnen Elemente spricht man mit einem Index an der von 0 bis MAX-1 geht.
Gruß
Don06Danke Don06, nun weiß ich es wieder dank dir

Dankeschön
-
Allerdings macht es keinen Sinn ein Array als Funktionsparameter zu deklarieren. Die Funktion ist nach wie vor Schwachsinn.
-
basti33 schrieb:
Allerdings macht es keinen Sinn ein Array als Funktionsparameter zu deklarieren. Die Funktion ist nach wie vor Schwachsinn.
Welcher Teil der Funktion ist bitteschön "Schwachsinn"?
Die Logik?
Die Parameterleiste?Daniel
-
Deine Funktion:
int orcatk_func(int hp_full, int pz_full, int gegner_atk[1]) { int gs =(pz_full <= 1 ? hp_full - gegner_atk[1] : pz_full - gegner_atk[1] && hp_full - gegner_atk[1]); return gs; }Wie man sieht enthält die Parameterliste ein Array. Ich versteh nicht so ganz, was das bezwecken soll. In die Parameterlist sollte nur ein normaler Integer und beim Aufruf übergibst du dann den Index des Arrays. Also so:
int orcatk_func(int hp_full, int pz_full, int gegner_atk) { int gs =(pz_full <= 1 ? hp_full - gegner_atk : pz_full - gegner_atk && hp_full - gegner_atk); return gs; } int main () { int Array [3] = {4,7,9}; orcatk_func(1,3,Array[2]); return 0; }Gruß
-
Also, bei einer Funktiondeklaration gibst im Funktionskopf in den Klammern Parameter an (oder auch nicht, ist jetzt aber egal).
Rufst du die Funktion später auf gibst du die aktuellen Parameter an. Diese werden dann in die lokalen Variablen in der Funktion kopiert. Deshalb müssen deine Variablen auch nicht die selben Namen haben.
Ausserdem soll deine Funktion ja nur einen Angriffswert übernehmen (Ork oder Wolf? war das so?) also übergibst du der Funktion nur einen Wert, kein Array von Werten.Das sieht dann so aus wie basti33 gesagt hat:
int orcatk_func (int hp_full, int pz_full, int orkangriffspunkte) { // Hier steht der Code }Hoffe mal da war jetzt kein Fehler drin.
//edit: zu spät
//edit2: Mir fällt auf das du Englisch und Deutsch gemischt gebrauchst, nicht so gut. Entscheide dich für eine Sprache (am besten Englisch).Gruß
Don06