Return der Funktion
-
[EDIT] selber Inhalt wie bei SeppSchrot [/EDIT]
Wenn du den C/C++-Button unter dem Postfenster benutzt, kann man gleich alles viel besser lesen. Hilfreich ist auch Einrückung, die ich jetzt nicht vorgenommen habe:#include <stdio.h> #include <stdlib.h> float fahrtkosten(int start, int ziel, int vkmittel) { int entfernung[4][4]={(0, 350, 450, 400), (340, 0 , 900, 500), (420, 880, 0, 280), (630, 480, 300, 0)}; int km; float autopreis=0.40, bahnpreis=0.38, gesamtpreis; // Berechnung des Preises if (start>ziel) { if (vkmittel=1) { km = entfernung[start][ziel]; autopreis = autopreis * km; } else if (vkmittel=2) km = entfernung[start][ziel]; autopreis = autopreis * km; } else if (ziel>start) { if (vkmittel=1) { km = entfernung[start][ziel]; autopreis = autopreis * km; } else if (vkmittel=2) km = entfernung[ziel][start]; autopreis = autopreis * km; } return start; return ziel; return vkmittel; } int main(int argc, char* argv[]) { char stadt[4][10]={"Frankfurt", "Muenchen", "Hamburg", "Berlin"}; char verkehrsmittel[3][10]={"", "Auto", "Bahn"}; float preis; int start, ziel, vkmittel, i; // Header printf("Fahrtkostenberechnung\n"); printf("---------------------\n"); // Start und Ziel for (i=0; i<=3; i++) printf("%d %s\n", i, stadt[i]); printf("Startort: "); scanf ("%d", &start); printf("Zielort: "); scanf ("%d", &ziel); printf("Verkehrsmittel: \n"); // Verkehrsmittel for (i=1; i<=2; i++) printf("%d %s\n", i, verkehrsmittel[i]); printf("Wahl: "); scanf ("%d", &vkmittel); // Funktionsaufruf preis = fahrtkosten(start, ziel, vkmittel); // Ausgabe des Fahrtkostenpreises printf("Fahrt von %s nach %s mit %s\n", stadt[start], stadt[ziel], verkehrsmittel[vkmittel]); printf("Fahrtkosten: %6.2f\n", preis); return 0; }
Deine Funktion hat drei returns hintereinander, aber nur das erste wird ausgeführt, weil die Funktion nach einem return beendet wird und beim Aufrufpunkt der Funktion weitergemacht wird.
-
Hi,
will nächsten winter wahrscheinlich auch auf der fh informatik anfangen. Ist es bei dir bis jetzt zu empfehlen, sofern du auf der fh studierst?
Zum Thema:
Michael E. schrieb:
return start;
return ziel;
return vkmittel;Hier wird nur der erste wert returned und die funktion verlassen.
möchtest du mehrere rückgabewerte einer funktion, musst du vom
hauptprogramm aus die adressen deiner variablen der funktion
übergeben um dort die werte abzulegen. Also übergib der funktion
fahrtkosten pointer auf die variablen start, ziel, vkmittel!:xmas2: b4sh0r :xmas2:
-
Hallo,
danke - das hat weitergholfen.
@Michael: mir gefällt das Studium an der fh sehr gut, weil es im Gegensatz zur Uni sehr praxisorientiert ist. Es gibt immer eine Möglichkeit bei einer Voresung Gast zu sein - einfach mal anfragen.
-
Hallo,
danke - das hat weitergholfen.
@Michael: mir gefällt das Studium an der fh sehr gut, weil es im Gegensatz zur Uni sehr praxisorientiert ist. Es gibt immer eine Möglichkeit bei einer Voresung Gast zu sein - einfach mal anfragen.
-
Hilfe, was hab ich angerichtet?
Ich hab nur den Code vom Threadersteller in C++-Tags gepostet, um es für die anderen besser lesbar zu machen und schon sagt /bin/bash0R *Mir*, was *ich* angeblich falsch gemacht habe. Und ich hab Spawny auch nicht gefragt, wie es an ner FH ist
-
sorry das war mein fehler, ich habe nämlich michael e. zitiert.
-
Verwirrung nicht nur hier, sondern auch bei meinem Programm.
Ich krieg den zweidimensionalen array nicht gelesen:
km = entfernung[start][ziel];
das ergebnis ist 0 - kann aber nicht sein
*nochmal hilfe brauch*
-
Spawny schrieb:
Ich krieg den zweidimensionalen array nicht gelesen:
km = entfernung[start][ziel];
das ergebnis ist 0 - kann aber nicht sein
Ist auch nicht so. Das Problem ist, dass du start aus fahrtkosten() zurückgibst, was ja nicht dem Fahrtkostenpreis entspricht.
btw:
Diese Bedingungif (vkmittel=1)
ist immer wahr, da vkmittel der Wert 1 zugewiesen wird. Anschliessend wird dieser Wert in einen boolschen Ausdruck umgewandelt. 0 evaluiert dabei zu false, alles andere zu true.
autopreis = autopreis * km;
Für sowas gibts die verschiedenen Assignment Operatoren
autopreis *= km;
-
Ok,
if (vkmittel=1)
in
if (vkmittel==1)
geändert.
autopreis = autopreis * km;
in
gesamtpreis = autopreis * km;
geändert.
Habe leider immer noch nicht verstanden, wie ich nun meine array auslesen kann?!
-
Habe herausgefunden dass der array nur bei Auswahl Start = 1 und Ziel = 0 ein ergebnis zurückbringt. Nämlich der Wert 500 - wie kommt das ???