cout problem

  • hey,
    ich lern gerade für eine klassenarbeit, leider schaffe ich es nicht das ergebnis auszugeben. soweit ich das verstehe geht es nicht weil float nur für gleitkommazahlen ist aber es ist ein a als eingabeparameter dabei.


    [cs]#include <iostream>
    #include <string>


    using namespace std;


    //Cango/Rasim


    float rechnen(float zahl1, float zahl2, char zeichen) {
    float ergebnis;


    if ((zeichen=='a')||(zeichen=='A')) {
    ergebnis=zahl1+zahl2;
    }
    else if ((zeichen=='s')||(zeichen=='S')) {
    ergebnis=zahl2-zahl1;
    }
    else if ((zeichen=='m')||(zeichen=='M')) {
    ergebnis=zahl1*zahl2;
    }
    else if ((zeichen=='d')||(zeichen=='D')) {
    ergebnis=zahl2/zahl1;
    }
    else {
    ergebnis=0;
    }
    return ergebnis;
    }



    int main() {
    float test;
    test=rechnen(5,2,a);
    cout<<test;
    }
    [/cs]
    MfG

  • test=rechnen(5,2,a);



    Hier liegt der Fehler. Deine Funktion will ein char als 3. Parameter. In der Funktion selbst machst du alles richtig ( z.B. zeichen=='a' ).


    Die Lösung deines Problems müsste als das hier sein:


    C
    1. test=rechnen(5,2,'a');
  • Dankeschön Termi, ich hätte noch eine Frage. Hab heute meine Arbeit geschrieben nur bin ich mir bei einer Funktion sehr unsicher.
    Und zwar bei der ersten Funktion auswahlRoute. Die aufgabe war es eine Funktion zu schreiben die zwei Strecken als eingabeparamter erhält und stets die kürzere Strecke wählen soll. Ich hab die funktion erst als float deklariert doch dann hab ich mit return ergebnis; immer ein Fehler bekommen das String nicht in float umgewandelt werden kann oder so kann mich nicht mehr wirklich dran erinnern. Da ich nicht wusste wie ich das beheben soll hab ich einfach eine Void Funktion drauß gemacht. Darf man das einfach so machen? Und ist sonst im Quellcode vielleicht was falsch? Der compiler hatte mir nichts angezeigt.+
    MfG




  • Ah ok, aber ich gib dann mit return trotzdem die Variable ergebnis zurück oder?
    Also

    Code
    1. string auswahlRoute(float strecke1, float strecke2) {
    2. string ergebnis;
    3. if (strecke1<=strecke2) {
    4. ergebnis="Route 1";
    5. }
    6. else {
    7. ergebnis="Route2";
    8. }
    9. return ergebnis;
    10. }


    Und die Funktion stimmt doch auch als void oder? Also so wie ich sie im ersten Post hab. In der Aufgabenstellung stand auch nichts von einem bestimmten Datentyp.

  • Ja der Unterschied ist jetzt halt dass du bei der ersten Variante (mit der void Deklaration) dein Ergebnis direkt auf der Console ausgibst.
    In der zweiten Variatne gibst du das Resultat mittels 'return' zurück und könntest es dann weiter verarbeiten.

  • Ah ok, aber ich gib dann mit return trotzdem die Variable ergebnis zurück oder?
    Also

    Code
    1. string auswahlRoute(float strecke1, float strecke2) {
    2. string ergebnis;
    3. if (strecke1<=strecke2) {
    4. ergebnis="Route 1";
    5. }
    6. else {
    7. ergebnis="Route2";
    8. }
    9. return ergebnis;
    10. }


    Und die Funktion stimmt doch auch als void oder? Also so wie ich sie im ersten Post hab. In der Aufgabenstellung stand auch nichts von einem bestimmten Datentyp.

    was stand in der aufgabenstellung?


    • "Schreibe eine Funktion die, die kürzere strecke ausgibt! "
    • "Schreibe eine Funktion die, die kürzere strecke zurückgibt! "


    wenn 1. dann passt deine lösung, wenn nicht - dann nicht.


    weiters: warum deklarierst du, dass deine verkehrsWarnung(..) einen float zurückgibt, wenn du dann in er funktion einen bool rausschmeißt?
    ich glaub es wär gut wenn du dir das mit den Funktionen noch mal anschaust (was, wird wann zurückgegeben?...)