Array/string an Funktion übergeben!
-
Hallo zusammen, ich bereite mich gerade für meine Informatik Klausur vor und bekomme folgende Aufgabe einfach nicht gelöst.
Es handelt sich um folgende Aufgabe:
Pferderennen
Ein K¨onig mit den Pferden A, B und C und sein General mit den Pferden a, b, c
veranstalten ein Pferderennen. Die Pferde sind nach ihrer Geschwindigkeit wie folgt
geordnet: A > a > B > b > C > c. Es gibt insgesamt 3 Runden, in denen jeweils
andere Pferde gegeneinander antreten. Dabei muss immer der K¨onig zuerst angeben,
welches Pferd er in die n¨achste Runde schicken will.
Der folgende C-Code implementiert die Gewinnstrategie des Generals, der seine Wahl
des Pferdes von der Wahl des K¨onigs abh¨angig macht, um von den 3 Runden 2 zu
gewinnen, obwohl der K¨onig das schnellste Pferd hat. Finden und korrigieren Sie alle
darin enthaltenen Syntaxfehler und logischen Fehler (Bugs). Korrigieren Sie direkt im
Original:#include <stdio.h>
#define round 3void general_trick (char *king, char *general)
{
int i;
while (i < round)
{
if (king[i] = 'A') general[i] = 'c';
else if (king[i] = 'B') general[i] = 'a';
else if (king[i] = 'C') general[i] = 'b';
i++;
}
}
int main ()
{
char king [3] {'A' , 'B', 'C'};
char general [3];
general_trick (king, general);
printf("general horses: %s %s %s \n", general [0], general [1], general [2]);
getchar ();
return 0;}
Ich denke, dass ich die Strings mit Zeigern in die Funktion übergeben muss, aber das Programm gibt mir folgendes aus: general horses: <NULL> <NULL> <NULL>
Ich hoffe es kann mir jemand helfen!
Vielen Danke schonmal
-
Die Übergabe passt schon. Der Rest der Funktion ist halt (absichtlich) falsch. Außerdem ist die Ausgabe auch falsch, daher kommt nur Null raus. Die meisten der Fehler solltest du doch auch schon vom Compiler gemeldet bekommen, wenn du nur Warnungen anstellen würdest (was man immer tun sollte). Doofe Aufgabe.
-
Du hast gar keine Strings.
-
Ja ich weiß. Aber wo ist denn der Fehler? In den If_bedingungen muss ein == stehen oder? Aber das hilft auch nicht weiter. Und wenn ich den Platzhalter %c benutze geht es auch nicht. Ich habe leider noch nicht so den Überblick. Ist mein erstes Semester in Informatik.
-
JPO schrieb:
In den If_bedingungen muss ein == stehen oder?
Ja, schon mal der erste Anfängerfehler.
Gewöhne dir an, bei der if-Bedingung immer das Literal voranzustellen, dann bekommst du kaum einen C-Compiler dazu, hier weiterzumachen, wenn du den klassischen Anfängerfehler der Verwechslung von = mit == machst, also:if( 'A'==king[i] ) statt if( king[i]=='A' )
if( 'A'=king[i] )
wird dir wie eben erwähnt, kaum jemand abnehmen.
int i;
ist nicht initialisiert, auch hierfür geben viele Compiler Warnungen, die du ignorierst.