Fehler?? :(



  • Hallo 🙂

    Hier ersteinmal mein Code:

    #include <iostream>
    using namespace std;
    
    main()
    {
            float R1, R2;
            char Ohm;
            cout << "Bitte geben Sie 2 Wiederstaende ein." << endl
                 << "1. Wiederstand: " << endl;
            cin >> R1;
            cout << "2. Wiederstand: " << endl;
            cin >> R2;
            cout << "Wie möchten Sie die Widerstände zusammenrechnen?" << endl
                 << "Reihe <R> // Parallel <P>" << endl;
            cin >> Ohm;
            switch(Ohm)
            {
                    case 'R': Ohm = R1 + R2;
                            cout << "Wiederstaende in einer Reihenschaltung: " << Ohm << " Ohm" << endl;
                            break;
                    case 'P': Ohm = (R1 * R2) / (R1 + R2);
                            cout << "Wiederstaende in einer Parallelschaltung: " << Ohm << " Ohm" << endl;
                            break;
                    default: cout << "Falsche Eingabe." << endl;
                            break;
            }
            system("pause");
    }
    

    Ich nutze DevC++ 🙂
    Mein Problem: Wenn ich diesen Code compiliere kommt eine Warnmeldung:
    [Warning] converting to 'char' from 'float'

    Starten lässt sich das Programm aber trotzdem, doch leider kommt völliger unsinn heraus. Wenn ich 2 und 3 und dann "R" eingebe kommt bei mir "♣" heraus und wenn ich 3 und 4 und dann "R" eingebe, piept mein PC :-)))

    Leider kann ich keinen fehler finden und ich habe mich auch bei der deklaration der Variablen an die Vorgaben meiner Lehrerin gehalten, ganz sicher bin ich mir aber mit den Datentypen nicht 🙂

    Könnt ihr mir vielleicht den Fehler nennen? Und bitte nicht zu komplex werden ich habe erst seit ca. 2 Monaten 1x in der Woche Programmierunterricht und wir sind noch nicht so weit 🙂

    Danke für alle Antworten im Vorraus und mfG,
    Benny


  • Mod

    Guck mal genau hin, die Warnung sagt ja schon alles:

    float R1, R2;   // Fließkommazahlen
    char Ohm;       // Ein einzelnes Zeichen
    
    [...]
    
    Ohm = R1 + R2;  // Und was soll das jetzt sein? Links ist Speicherplatz für ein Zeichen, rechts steht eine Fließkommazahl die diesem Speicherplatz zugewiesen werden soll. Das passt nicht.
    

    Übrigens: Kein vernünftiger Compiler sollte dieses Programm kompilieren. Such dir einen anderen.



  • komisch, wie viele studiengänge widerstände berechnen sollen : D
    scheint dieses jahr irgendwie in zu sein ;o)

    switch(Ohm)
      {
        case 'r':
        case 'R':
          cout << "Wiederstaende in einer Reihenschaltung: " << R1+R2 << " Ohm" << endl;
          break;
        case 'p':
        case 'P':
          cout << "Wiederstaende in einer Parallelschaltung: " << R1*R2 / (R1+R2) << " Ohm" << endl;
          break;
        default:
          cout << "Falsche Eingabe." << endl;
          break;
      }
    

    1. schon geht es
    2. schon ist es lesbar ;o) (nen tab von 8 zeichen ist doch echt ekelhaft - 4 reichen da aus - und damit ich hier im forum nicht 2000mal meine leertaste betätigen muss, nehm ich hier auch nur 2^^)

    bb

    PS:
    "Wiederstaende"
    nen Duden zur Hand?
    zur not reicht auch google ;P



  • Danke! :-)))
    *lach* Was für ein dähmlicher Fehler, hätte mir auch selber auffallen müssen 🙂

    Habe den Code jetzt abgeändert und nun funktioniert das Prog auch einwandfrei 🙂

    #include <iostream>
    using namespace std;
    
    main()
    {
            float R1, R2, erg;
            char Ohm;
            cout << "Bitte geben Sie 2 Wiederstaende ein." << endl
                 << "1. Wiederstand: " << endl;
            cin >> R1;
            cout << "2. Wiederstand: " << endl;
            cin >> R2;
            cout << "Wie möchten Sie die Widerstände zusammenrechnen?" << endl
                 << "Reihe <R> // Parallel <P>" << endl;
            cin >> Ohm;
            switch(Ohm)
            {
                    case 'R': erg = R1 + R2;
                            cout << "Wiederstaende in einer Reihenschaltung: " << erg << " Ohm" << endl;
                            break;
                    case 'P': erg = (R1 * R2) / (R1 + R2);
                            cout << "Wiederstaende in einer Parallelschaltung: " << erg << " Ohm" << endl;
                            break;
                    default: cout << "Falsche Eingabe." << endl;
                            break;
            }
            system("pause");
    }
    

    Danke nochmal 🙂



  • xUnl!m!teDx schrieb:

    Was für ein dähmlicher Fehler

    🤡



  • ich hoffe, du hast gesehen, das ich auch schon gepostet hatte...

    main()
    ist falsch
    [/c]int main()[/c]
    ist richtig

    was nimmst du denn bitte für nen compiler?
    spricht irgendetwas gegen msvc, wenn du schon windows hast? (ich nehm einfach mal an, dass du das system("PAUSE") nicht einfach nur übernommen hast und es bei deinem os gar nicht funktioniert...

    bb



  • stimmt, dass mit dem int main() schreib ich normalerweise auch so... hab ich irgendwie grad ausversehen weg gemacht 🙂 (komisch das es trotzdem geht :-))

    ich nutze DevC++... DevC++ wurde uns von unserer Lehrerein empfohlen und wir arbeiten damit auch an den Schul-Rechnern. Ist der denn so schlecht? 🙂



  • xUnl!m!teDx schrieb:

    stimmt, dass mit dem int main() schreib ich normalerweise auch so... hab ich irgendwie grad ausversehen weg gemacht 🙂 (komisch das es trotzdem geht :-))

    ich nutze DevC++... DevC++ wurde uns von unserer Lehrerein empfohlen und wir arbeiten damit auch an den Schul-Rechnern. Ist der denn so schlecht? 🙂

    japp, ist total veraltet
    auf gar keinen fall zu empfehlen
    http://www.microsoft.com/germany/Express/ <-das hier ist auf jeden fall zu empfehlen...

    bb



  • xUnl!m!teDx schrieb:

    Ist der denn so schlecht? 🙂

    Ja, wahrscheinlich genau so schlecht wie eure Lehrerin. Dev-C++ ist stark veraltet, entweder das neue wxDev-C++, Code::Blocks oder Visual Studio Express nehmen.


  • Mod

    unskilled schrieb:

    was nimmst du denn bitte für nen compiler?

    Er benutzt DevC++, schreibt er. Mir war bisher nicht klar, warum hier im Forum immer pauschal gesagt wird, dass man den nicht nehmen sollte. Jetzt verstehe ich es - das ist ja wirklich der Horror, wenn so etwas kompilierbar ist.

    edit: Oh, viel zu langsam.



  • SeppJ schrieb:

    unskilled schrieb:

    was nimmst du denn bitte für nen compiler?

    Er benutzt DevC++, schreibt er. Mir war bisher nicht klar, warum hier im Forum immer pauschal gesagt wird, dass man den nicht nehmen sollte. Jetzt verstehe ich es - das ist ja wirklich der Horror, wenn so etwas kompilierbar ist.

    edit: Oh, viel zu langsam.

    hab ich mal wieder nur die hälfte gelesen... sry ^^
    ich habs bisher auch meist für übertrieben gehalten, aber jz versteh ich es vollkommen^^



  • Kóyaánasqatsi schrieb:

    Ja, wahrscheinlich genau so schlecht wie eure Lehrerin. Dev-C++ ist stark veraltet, entweder das neue wxDev-C++, Code::Blocks oder Visual Studio Express nehmen.

    Okay... das unsere Lehrerin schlecht ist das wissen wir ALLE in der Klasse schon :-)))) ich werd mir mal die 3 anschauen und diese dann auf meinem PC ausprobieren.

    Danke nochmal für alle Antoworten 🙂
    Benny


Anmelden zum Antworten