Neuer Fehler: rechtwinkelige Dreiecke, Anfänger fehler



  • Hallo nochmal, ich melde mich mit einem neuem Problem zurück:
    und zwar habe ich jetzt einiges geändert, und hinzugefüügt, ich stehe jetzt abr vor einem neuen Problem, und zwar wenn ich das so habe (s. unten) dann nimmt er zwar jeweils wenn ich a,b und b,c eingebe, aber er nimmt es nicht, wenn ich a,c eingebe.
    Hoffe es kann mir wieder jmd. helfen

    #include <iostream>
    #include <cmath>
    
    using namespace std;
    
    int main () {
    
        float a, b, c, h, alpha, beta, A, U, R;
        const float pi = 3.14159265359;
        string e,z;
        cin >> e >> z;
    
        if (e=="a" && z=="b") {
              cout << "bitte zuerst den Wert fuer a, dann den Wert fuer b eingeben \n";
              cin >> a >> b;
              c = sqrt (a*a+b*b);
              A = a*b/2;
              h = 2*A/c;
              U = a+b+c;
              R = c/2;
              alpha = (asin (a/c))*(360/(2*pi));
              beta = 90 - alpha;
              cout << "\n gegebene Werte: a= " << a << " ,b= " << b << endl << "\n Die Seite c= " << c << "\n Die Hoehe= " << h << "\n Der Flaechninhalt= "<< A << "\n Der Umfang = " << U <<
              "\n Der Umkreisradius= " << R<< "\n Der Winkel Alpha= " << alpha<< "\n Der Winkel Beta = " << beta << endl;  
              }
    
        if (e=="b" && z=="c") {
              cout << "Bitte zuerst den Wert fuer b und dann fuer c eingeben" << endl;
              cin >> b >> c;
              a = sqrt (c*c-b*b);
              A = a*b/2;
              h = 2*A/c;
              U = a+b+c;
              R = c/2;
              alpha = (asin (a/c))*(360/(2*pi));
              beta = 90 - alpha;
              cout << "\n gegebene Werte: b= " << b << " ,c= " << c << endl << "\n Die Seite a= " << a << "\n Die Hoehe= " << h << "\n Der Flaechninhalt= "<< A << "\n Der Umfang = " << U <<
              "\n Der Umkreisradius= " << R<< "\n Der Winkel Alpha= " << alpha<< "\n Der Winkel Beta = " << beta << endl;}
    
       if (e=="a" && z=="c") {
              cout << "Bitte zuerst den Wert fuer a und dann fuer c eingeben" << endl;
              cin >> a >> c;
              a = sqrt (c*c-a*a);
              A = a*b/2;
              h = 2*A/c;
              U = a+b+c;
              R = c/2;
              alpha = (asin (a/c))*(360/(2*pi));
              beta = 90 - alpha;
              cout << "\n gegebene Werte: a= " << a << " ,c= " << c << endl << "\n Die Seite b= " << b << "\n Die Hoehe= " << h << "\n Der Flaechninhalt= "<< A << "\n Der Umfang = " << U <<
              "\n Der Umkreisradius= " << R<< "\n Der Winkel Alpha= " << alpha<< "\n Der Winkel Beta = " << beta << endl;}    
    
        system ("Pause");
        return 0;
    }
    

    bei letzten if befehl geht irgendetwas nicht


  • Mod



  • Also bei mir geht das (für "compiliert, wenn ich system auskommentiere" und "läuft durch, gibt aber nicht unbedingt das richtige aus"):

    `

    ~/test % ./cpp

    a c

    Bitte zuerst den Wert fuer a und dann fuer c eingeben

    5 7

    gegebene Werte: a= 4.89898 ,c= 7

    Die Seite b= 8.82691e-39

    Die Hoehe= 6.17755e-39

    Der Flaechninhalt= 2.16214e-38

    Der Umfang = 11.899

    Der Umkreisradius= 3.5

    Der Winkel Alpha= 44.4153

    Der Winkel Beta = 45.5847

    `

    Man sieht schon, ich habe 5 für a eingegeben und das Programm behauptet, ich hätte 4.89 eingegeben...



  • Hast recht, wenn man irgendwelche Buchstaben eingibt (z.B. k und L) und anschließend werte eingibt spuckt er immer deine Werte aus.

    weiß jemand woran das liegen kann?



  • Mein Lieblingsfehler: vergessen zu kompilieren. Hast du kompiliert?

    Oder hast du ggf was anderes als "a c" (oder a(Enter) c(Enter)) eingegeben?



  • Wenn man k l eingibt, erfolgt überhaupt keine Ausgabe. Verstehe nicht, warum du da etwas ausgegeben bekommen solltest.



  • Ja kompiliert habe ich und ich gebe auch immer a (enter), c(enter) ein, aber so ist das auch programmiert. Was ich nicht verstehe ist , dass er immer die Werte ausgibt, auch wenn man Buchstaben eingibt, die garnicht im Programmcode vorkommen.



  • Ja er gibt da noch nichts aus, erst wenn du danach noch einen Wert für die beiden eingibst wirft er sinnlose Zahlen heraus.?



  • Nein, das Programm beendet sich, wenn du "falsche" Buchstaben eingibst.

    Hier:
    `

    ~/test % ./cpp

    k l

    ~/test %

    `

    Wie zu erwarten. Nix da.

    Du benutzt wohl ein anderes Programm bei dir als das, was du hier gepostet hast.



  • es sollte das selbe Programm sein:

    #include <iostream>
    #include <cmath>
    
    using namespace std;
    
    int main () {
    
        float a, b, c, h, alpha, beta, A, U, R;
        const float pi = 3.14159265359;
        string e,z;
        cin >> e >> z;
    
        if (e=="a" && z=="b") {
              cout << "bitte zuerst den Wert fuer a, dann den Wert fuer b eingeben \n";
              cin >> a >> b;
              c = sqrt (a*a+b*b);
              A = a*b/2;
              h = 2*A/c;
              U = a+b+c;
              R = c/2;
              alpha = (asin (a/c))*(360/(2*pi));
              beta = 90 - alpha;
              cout << "\n gegebene Werte: a= " << a << " ,b= " << b << endl << "\n Die Seite c= " << c << "\n Die Hoehe= " << h << "\n Der Flaechninhalt= "<< A << "\n Der Umfang = " << U <<
              "\n Der Umkreisradius= " << R<< "\n Der Winkel Alpha= " << alpha<< "\n Der Winkel Beta = " << beta << endl;  
              }
    
        if (e=="b" && z=="c") {
              cout << "Bitte zuerst den Wert fuer b und dann fuer c eingeben" << endl;
              cin >> b >> c;
              a = sqrt (c*c-b*b);
              A = a*b/2;
              h = 2*A/c;
              U = a+b+c;
              R = c/2;
              alpha = (asin (a/c))*(360/(2*pi));
              beta = 90 - alpha;
              cout << "\n gegebene Werte: b= " << b << " ,c= " << c << endl << "\n Die Seite a= " << a << "\n Die Hoehe= " << h << "\n Der Flaechninhalt= "<< A << "\n Der Umfang = " << U <<
              "\n Der Umkreisradius= " << R<< "\n Der Winkel Alpha= " << alpha<< "\n Der Winkel Beta = " << beta << endl;}
    
       if (e=="a" && z=="c") {
              cout << "Bitte zuerst den Wert fuer a und dann fuer c eingeben" << endl;
              cin >> a >> c;
              a = sqrt (c*c-a*a);
              A = a*b/2;
              h = 2*A/c;
              U = a+b+c;
              R = c/2;
              alpha = (asin (a/c))*(360/(2*pi));
              beta = 90 - alpha;
              cout << "\n gegebene Werte: a= " << a << " ,c= " << c << endl << "\n Die Seite b= " << b << "\n Die Hoehe= " << h << "\n Der Flaechninhalt= "<< A << "\n Der Umfang = " << U <<
              "\n Der Umkreisradius= " << R<< "\n Der Winkel Alpha= " << alpha<< "\n Der Winkel Beta = " << beta << endl;}    
    
        system ("Pause");
        return 0;
    }
    


  • Letzte Chance: kompilierst du auch die richtige Datei?

    Bau doch ganz oben mal ein:

    cout << "Bitte die Seiten des Dreiecks eingeben (z.B. 'a c'): ";
    

    und stelle sicher, dass diese Ausgabe auch erscheint.

    Ansonsten gibt es nur noch die Möglichkeit, dass du ein Programm namens "Pause" hast, das nicht tut, was du denkst (ich habe hier kein "Pause" und habe die Zeile daher auskommentiert, ansonsten aber nichts geändert und kann deine Aussagen nicht nachvollziehen).



  • Danke, dass du dir so viel Zeit genommen hast.
    Anscheinend hat er
    1. eine Datei überchrieben aber falsch kopiliert, der Tipp mit den cout war toll, 2. hat ich ihm eine falsche formel gegeben,

    funktioniert jetzt grundsätzlich


Anmelden zum Antworten