C SteckHalma Spiel: Funktionswert & Parameter an Unterfkt übergeben

ID: 58267
L
17 Mai 2006
122
5
Hey klammunity,

ich bin mittlerweile schon recht weit beim Programmieren meines SteckHalma Spiels gekommen, stoße allerdings beim compilieren und bei einigen kleinen Sachen doch an meine Grenze.

Compiler-Fehlermeldung:
eingeben.c:27: Warnung: Verarbeiten des Argumentes 1 von »im_feld« von inkompatiblem Zeigertyp

Zeile 27:
var=im_feld(spielfeld,zeile, spalte);


Die Funktion im_feld wurde uns gegeben, liegt also als object-datei bereits im selben Verzeichnis.

Der Rückgabewert dieser ist '1' für Spielzug ist im Spielfeld und analog dafür '0' nicht im Spielfeld.

spielfeld ist ein Array: spielfeld[9][9]
(also Zeile, Spalte)


Der Quellcode der eingeben.c ist als *.txt im Anhang!


2. Problem:

Mein Tutor sagte mir, dass ich das Array spielfeld in main definieren und dann als Parameter an seine Unterfkt. weitergeben muss.

Geht das dann einfach so:

// Funktion 'eingeben' aufrufen
eingeben(spielfeld);

Wie initialisiere ich dann in der Unterfunktion spielfeld?


Ich hoffe meine Problemstellung ist klar geworden. Falls nicht einfach nachfragen.
Vielen Dank schonmal für eure Hilfe!


Grüße, Benni
 

Anhänge

  • eingeben.c.zip
    984 Bytes · Aufrufe: 6
Zu 1.:
Der Prototyp für die Funktion lautet:
PHP:
int im_feld (int spielfeld[9][9], int zeile, int spalte);
Du übergibst als ersten Parameter aber char[9][9]. Logisch, dass dies zu einer Warnung führt. Übergebe exakt den von der Funktion geforderten Typ.
(Ich hoffe, dass der Prototyp stimmt. Der Ersteller der Objekt-Datei muss dir sagen, wie er lautet. Verwendest du einen falschen Prototyp, linkt dein Programm hinterher nicht.)

Zu 2.:
Spielfeld ist ein Zeiger, den kannst du einfach so übergeben. Beachte bitte, dass C keinerlei Überprüfung vornimmt, ob du den richtigen Zeiger verwendest. Ob dahinter nun ein ein-dimensionales Array mit 20 Elementen oder ein fünf-dimensionales Array mit 2, 42, 45, 43 und 4711 Elementen steckt, musst du wissen und dich drum kümmern, das korrekt zu machen.

Die Frage mit Initialisierung versteh ich nicht. In der Unterfunktion kannst du das nicht machen, da du ja nicht an deren Code kommst und ihn ändern kannst.
Macht von der Nomenklatur und der Funktionsweise des Programms auch nicht viel Sinn. Das Feld sollte zum Zeitpunkt wo du prüfen willst, schon initialisiert sein.

Logisch. Was bringt die Frage, ob ein Stein im Spielfeld is, wenn es noch gar kein Spielfeld gibt? Zu Beginn des Spiels erstellst du ein leeres Spielbrett. Wie das aussehen muss, guckst du im Netz nach. Ich kenn Halma nicht :mrgreen:
 
Dankeschön!

Hab grad (in den letzten 20min) alles hinbekommen.

Bin grad am Testen der (erwünschten) Fehlermeldungen :)

Grüße, Benni