Frage von uehcsxam, 19

(Programmiersprache C) Ist damit die Aufgabenstellung erfüllt?

Schreiben Sie eine C-Funktion, die als Argument zwei Zeiger auf Integer-Werte übergeben bekommt und die Werte, welche in den Variablen stehen, tauscht. Es muss nur diese Funktion geschrieben werden, kein Konstrukt außen herum wie eine Main-Funktion oder ähnliches!
Beispiel:
a=4 und b=8 werden übergeben. Nach Ausführung der Funktion hat a den Wert 8 und b den Wert 4.
Hier ist die Aufgabe nochmal in Textform falls das Bild zu klein ist.

int zahl1;

printf("\n\nGeben sie der Variable a einen Wert!");
scanf("%d", &zahl1);

int zahl2;

printf("\nGeben sie der Variable b einen Wert!");
scanf("%d", &zahl2);

printf("\nDie Variablen wurde vertauscht! Die Variable a hat jetzt den Wert %d und die Variable b den Wert %d!", zahl2, zahl1);
Antwort
von Franz159, 15

Hallo!

Auch eine Möglichkeit ;), aber ich glaube das ist nicht die Aufgabenstellung. Die Aufgabe ist doch den Wert von b in a zu speichern und den Wert von a in b zu speichern.

Ich gebe dir ein paar Tipps:
1) Du brauchst eine Funktion mit 2 Übergabeparameter a und b (vergiss den Stern nicht)
2) Damit der Wert von a oder b (je nachdem mit welcher Variable du zuerst anfängst) nicht verloren geht, nachdem er überschrieben wird, braucht man eine 3. Variable zum Zwischenspeichern

Viel Erfolg!

LG

Antwort
von phigeek, 2

http://www.programmieraufgaben.ch/aufgabe/tausche/ecu8pdg7

Das ist zwar nicht die Lösung mit der "Subroutine" und den "Pointern", doch es soll einen Denkanstoss geben, wie innerhalb der Funktion die beiden Werte vertauscht werden könnten.

Antwort
von kevinkirs38, 19

Du sollst doch eine Funktion benutzen! Wo ist diese bei der in Verwendung????

Kommentar von uehcsxam ,

Ich kenne mich nicht so gut damit aus, deswegen habe ich einiger Verständnisprobleme.

Kommentar von kevinkirs38 ,

Auf dieser Seite kannst du alles nachlesen: http://www.tutorialspoint.com/cprogramming/c_functions.htm

Kommentar von uehcsxam ,

Dank dir!

Antwort
von TeeTier, 7

Deine Lösung ist falsch. Es wird so etwas ähnliches wie das hier erwartet:

void tausche(int *a, int *b) {
*a ^= *b;
*b ^= *a;
*a ^= *b;
}

Diese Funktion wird dann so aufgerufen:

int a = 4;
int b = 8;

tausche(&a, &b);

/* a == 8, b == 4 */

Ja, ich weiß, dass du das nicht nachvollziehen kannst, soll ja auch nur ein Denkanstoß sein! An deiner Stelle würde ich eine temporäre Integer-Variable einführen, anstatt eine XOR-Zuweisung zu benutzen.

Ich habe absichtlich diese Lösung gewählt, da du ja selbstständig deine Hausaufgaben machen sollst. (normalerweise verwendet man so eine XOR-Zuweisung nur dann, wenn der Stack heiliger als die Laufzeit ist ... aber auch das musst du jetzt noch nicht verstehen)

Das einzige, was du jetzt noch machen musst, ist den Funktionskörper von tausche() so anzupassen, dass der Wert von a und b mithilfe einer temporären Variablen getauscht werden. Das bekommst du aber hin, oder?

Viel Erfolg bei deiner Aufgabe! :)

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten