Schleife wird unendlich durchlaufen



  • Hallo Forum
    ICh musste als Buchaufgabe aus meinem Buch "C++ Lernen und Professionell anwenden" ein Programm schreiben dass die Potenz einer Zahl berechnet.

    #include "stdafx.h"
    #include <iostream>
    
    double ergebnis=1;
    double pow(double x, int n)
    {
    	if (x !=0 && n==0)
    
    		ergebnis=1.0;
    	else
    	{
    		if (x==0 && n!=0)
    
    		ergebnis=0.0;
    		else
    		{
    			for(int i=1;i<=n;i++)
    			{
    				ergebnis *=x;
    			}
    		}
    	}
    	return ergebnis;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	int exponent=0;
    	double basis=0;
    	char taste ='j';
    
    	while(taste=='j' || taste== 'J')
    	{
    
    		std::cout << " Geben Sie die Basis ein: " << std::endl;
    		std::cin >> basis;
    		std::cout << "Geben Sie einen Exponenten ein" << std::endl;
    		std::cin >> exponent;
    		pow(basis, exponent);
    		std::cout << "Das ergebnis der potenz lautet: " << ergebnis << std::endl;
    
    		do
    		{
    			std::cout <<"Wollen Sie neustarten? j//n" << std::endl;
    			std::cin >> taste;
    		}
    		while (taste != 'J' || taste != 'j' || taste != 'n' || taste != 'N');
    
    	}
    
    	std::cin.clear();
    	std::cin.ignore(std::cin.rdbuf()->in_avail());
    	std::cin.get();
    	return 0;
    }
    

    dann hab ich noch eine schleife eingebaut die überprüft ob man neustarten will oder nicht. Wenn man die Taste j drückt soll neugestartet werden wenn man n drückt soll beendet werden. Nur geht die schleife endlos weiter egal was man einigibt. Hat wer na Ahnung woran das liegen könnte?



  • mit logisch und, nicht oder, verknüpfen. du hast dir da ne tautologie geschaffen.



  • die schleife wird solange durchlaufen wie die taste nicht 'j' oder nicht 'n' ist.



  • danke für eure hilfe, das hab ich wohl übersehen 😃


Anmelden zum Antworten