Wie findet ihr diesen Code?



  • öhmm... wenn ich using namespace std weglass will er endl nich mehr o.O liegst an mir am compiler oder muss ichs doch benutzen?? xD



  • std::endl



  • Hab ich auch gedacht hatte mich wohl vertippt 😉 okay dann noch system ("cls") raus...
    Edith: Mit cin.get() geht switch nich mehr... also keine weitere rechnung 😮
    Mal schauen wie ich das umschreiben muss >:D



  • Dort musst du in nen temporären char einlesen. So:

    char tmp;
    std::cin >> tmp;
    switch(tmp)
    


  • okay wollt ich zwar eig selber drauf kommen aber danke 🙂 so okay verbesserungen abgeschlossen code perfekt 😃 nein wie findest du ihn jetzt?



  • Zeig nochmal verbesserte Version her 😉



  • #include <iostream>
    
    int main()
    {
       double accelaration;
       double mass;
       double power;
       bool fertig = false;
       int Durchlaeufe = 100;
    
       std::cout << "-------------------------------------------\n"
                 << "-----Willkommen bei dem Kraftberechner-----\n"
                 << "-------------------------------------------  " << std::endl;
       std::cout << "\n\n"                                          << std::endl;
       std::cout << "Bitte Waehlen sie ihre Berechnungsart:    \n"
                 << "(1)Kraft = Beschleunigung * Masse              \n"
                 << "(2)Beschleuniging = Kraft/Masse                \n"
                 << "(3)Masse = Kraft/Beschleunigung                  "  << std::endl;
    
    for (int i = 0; (i < Durchlaeufe) && !fertig; ++i)
    {
       switch (std::cin.get())
       {
              case '1':
    
                   std::cout << "Bitte geben Sie ihre Beschleunigung an(in m/s^2):\n";
                   std::cin  >> accelaration;
                   std::cout << "Geben Sie nun ihre Masse an(in Kilogramm):      \n";
                   std::cin  >> mass;
                   power = accelaration * mass;
                   system("cls");
                   std::cout << "Ergebnis:\n" << power << "N\n";
                   break;
              case '2':
    
                   std::cout << "Bitte geben Sie ihre Kraft an(in Newton):\n";
                   std::cin  >> power;
                   std::cout << "Bitte geben Sie ihre Masse an(in Kilogramm):\n";
                   std::cin  >> mass;
                   accelaration = power/mass ;
                   system("cls");
                   std::cout << "Ergebnis:\n" << accelaration << "m/s^2\n";
                   break;
              case '3':
    
                   std::cout << "Bitte geben Sie ihre Kraft an(in Newton):\n";
                   std::cin  >> power;
                   std::cout << "Bitte geben Sie ihre Beschleuniging an(in m/s^2):\n";
                   std::cin  >> accelaration;
                   mass = power/accelaration;
                   system("cls");
                   std::cout << "Ergebnis:\n" << mass << "kg\n";
                   break;         
       }
       std::cout <<"Wollen sie eine weitere Rechnung machen?(j/n)" << std::endl;
       char tmp; 
       std::cin >> tmp; 
       switch(tmp)
                 { 
                 case 'j':
                          std::cout << "Bitte Waehlen sie ihre Berechnungsart:    \n"
                                    << "(1)Kraft = Beschleunigung * Masse              \n"
                                    << "(2)Beschleuniging = Kraft/Masse                \n"
                                    << "(3)Masse = Kraft/Beschleunigung                  " << std::endl;
                          break; 
                 case 'n':
    
                         return 0; 
                         break; 
                 }; 
        }
    
    }
    

    flüchtigkeitsfehler vorbehalten xD habs nur schnell verbessert wie du gesagt hast 😉



  • #include <iostream>
    
    void processUserInput()
    {
    	std::cout << "Bitte Waehlen sie ihre Berechnungsart:" << std::endl
    	          << "(1)Kraft = Beschleunigung * Masse"      << std::endl
    	          << "(2)Beschleuniging = Kraft/Masse"        << std::endl
    	          << "(3)Masse = Kraft/Beschleunigung"        << std::endl;
    
    	char tmp;
    
    	std::cin >> tmp;
    	switch(tmp)
    	{
    	case '1':
    		std::cout << "Bitte geben Sie ihre Beschleunigung an(in m/s^2):" << std::endl;
    		std::cin  >> accelaration;
    
    		std::cout << "Geben Sie nun ihre Masse an(in Kilogramm):" << std::endl;
    		std::cin  >> mass;
    
    		power = accelaration * mass;
    
    		std::cout << "Ergebnis:"  << std::endl
    		          << power << "N" << std::endl;
    		break;
    
    	case '2':
    		std::cout << "Bitte geben Sie ihre Kraft an(in Newton):" << std::endl;
    		std::cin  >> power;
    
    		std::cout << "Bitte geben Sie ihre Masse an(in Kilogramm):" << std::endl;
    		std::cin  >> mass;
    
    		accelaration = power / mass;
    
    		std::cout << "Ergebnis:"             << std::endl
    		          << accelaration << "m/s^2" << std::endl;
    		break;
    
    	case '3':
    		std::cout << "Bitte geben Sie ihre Kraft an(in Newton):" << std::endl;
    		std::cin  >> power;
    
    		std::cout << "Bitte geben Sie ihre Beschleuniging an(in m/s^2):" << std::endl;
    		std::cin  >> accelaration;
    
    		mass = power/accelaration;
    
    		std::cout << "Ergebnis:"  << std::endl
    		          << mass << "kg" << std::endl;
    		break;
    
    	default:
    		// Was passiert, wenn der User weder '1', '2' oder '3' eingibt?
    	}
    
    	std::cout << "Wollen sie eine weitere Rechnung machen?(j/n)" << std::endl;
    
    	std::cin >> tmp;
    	switch(tmp)
    	{
    	case 'j':
    		processUserInput();
    		break;
    
    	case 'n':
    		return;
    
    	default:
    			// Was passiert, wenn der User weder 'j' noch 'n' eingibt?
    	}
    }
    
    int main()
    	{
    	double accelaration, mass, power;
    
    	std::cout << "-------------------------------------------" << std::endl
    	          << "-----Willkommen bei dem Kraftberechner-----" << std::endl
    	          << "-------------------------------------------" << std::endl;
    
    	processUserInput();
    }
    

    Habs mal etwas umgestellt. 😉



  • Das ist ja so fürn A**** in dem Fall alles einfach in eine Funktion zu packen...(vorallem weil deine Version nicht mal funktioniert). Schreib ruhig using namespace std; bei einfachen Programmen wie deins.



  • okay danke für den code 🙂 ich glaub ich lass den atomkrieg ausbrechen wenn der user nich auf 1,2,3, 'j' oder 'n' drückt >: D



  • Es heisst nicht Edith, sondern edit ohne h (kommt vom Englischen).

    Wie du wahrscheinlich schon selbst bemerkt hast, wiederholt sich der Code in den einzelnen switches zum Grossteil. Warum nicht sowas:

    int read_acceleration() { std::cout << "Bitte geben Sie ihre Beschleunigung an(in m/s^2):" << std::endl; int i; std::cin >> i; return i; }
    // analog für alle Grössen
    
              case '1':
                   int a = read_acceleration();
                   int m = read_mass();
                   std::cout << "Ergebnis:\n" << a*m << "N\n";
                   break;
              // analog für alle cases
    

    Das processUserInput würde ich auflösen, solche Sachen können problemlos in main rein.



  • HighLigerBiMBam schrieb:

    Das ist ja so fürn A**** in dem Fall alles einfach in eine Funktion zu packen...(vorallem weil deine Version nicht mal funktioniert). Schreib ruhig using namespace std; bei einfachen Programmen wie deins.

    Ist ungetestet 😉



  • ich weiß aber die Form "Edith (sagt:)" is auch gebräuchlich 😃



  • In dem Fall hilft immer eine do-while-Schleife die den user erneut auffordert j bzw. n einzugeben. Switchs case finde ich bei so wenigen Optionen unübersichtlich.

    char janein;
    do
    {
       std::cout << "Wollen sie eine weitere Rechnung machen?(j/n)" << std::endl;
       std::cin >> janein;
    }while(janein != 'j' || janein != 'n');
    
    if(janein == 'j')
       processUserInput();
    
    //andernfals ka was du machen willst
    


  • danke für eure ganzen antworten 🙂 so jetzt hab ich den schon fast perfekten code 😃



  • dann zeig her ich wette nicht



  • Du sagtest, dass du "Dev C++" als IDE verwendest.
    Ich empfehle dir eine andere zu wählen(Visual C++ 2010 Express oder CodeBlocks). Denn Dev C++ wird schon seit Jahren nicht mehr weiterentwickelt und es gibt einfach besseres 😉



  • hm ich find dev-c++ ganz gut 🙂 aber wenn du´s sagst dann schau ich mich mal nach einem neuen um 😃



  • Solltest du definitiv. Dev C++ hat so einige Fehler 😉



  • cool das mir das mal jmd sagt 😃 hmm... was könntet ihe den so empfehlen? 🙂
    (FAQ... is so ein thema mit mir xD)


Anmelden zum Antworten