Danke sehr erledigt Lösung:do while schleife



  • #include <iostream>
    using namespace std;
    
    int main(){
    
    char c;
    
    do{
    
    int h,n,sum=1;
    
    cout<<"Fakultaetsberechnung fuer Zahl? ausfuehren Bitte positive Zahl eingeben"<<endl;
    cin>>n;
    h=n;
    
    for(int i=2;i<=h;){
    
                sum=sum*h;
                h--;
    
                } 
    
    cout<<"Die Fakultaet von"<<n<<"ist gleich  "<<sum<<endl;
    
    cout<<"Nochmal J  Abbruch  N"<<endl;
    cin>>c;
    }while(c=='j');
    }
    


  • Die Eingabe von a mußte nur in die Schleife rein.
    Ich habs mal gemacht und noch unzählig viele Verbesserungen eingenaut:

    #include <iostream>
    
    int main()
    {
        using namespace std;
        char c;
        do
        {
            cout<<"Bitte geben Sie eine vierstellige Zahl ein"<<endl;
            int a;
            cin>>a;
    
            int b=1000;
            for(int i=0; i<=3; i++)
            {
                int s=(a/b)%10;
                b/=10;
    
                if(s==1)
                {
                    cout<<"eins-";
                }
                else if(s==2)
                {
                    cout<<"zwei-";
                }
                else if(s==3)
                {
                    cout<<"drei-";
                }
                else if(s==4)
                {
                    cout<<"vier-";
                }
                else if(s==5)
                {
                    cout<<"fünf-";
                }
                else if(s==6)
                {
                    cout<<"sechs-";
                }
                else if(s==7)
                {
                    cout<<"sieben-";
                }
                else if(s==8)
                {
                    cout<<"acht-";
                }
                else if(s==9)
                {
                    cout<<"neun-";
                }
                else if(s==0)
                {
                    cout<<"null-";
                }
    
            }
            cout<<'\n';
            cout<<"Nochmal, Sie Wicht? (j/n)\n";
            cin>>c;
        }while(c=='j');
    }
    


  • Dass das Programm anhält hat nichts mit der Schleife zu tun, sondern, dass du eine 0 Division bekommst. Da ich nicht weiss was das Programm machen soll kann ich nicht sagen was du anderst machen sollst, aber achte dich auf jeden Fall was mit b passiert im Laufe der Laufzeit.

    Benutz am besten den Debugger um das nachzuvollziehen (oder lern ihn zu benutzen).



  • drakon schrieb:

    Dass das Programm anhält hat nichts mit der Schleife zu tun, sondern, dass du eine 0 Division bekommst.

    Ach, ja. Die Initialisierung von b muß auch runter. Das ist mir gar nicht als Fehler aufgefallen. Für mich mußte b einfach runter, weil das hübscher ist. Aus Versehen repariert. 😃



  • Ich habs einfach mal laufen lassen, weil ich die Schleife an sich Ok fand. Bin dann aber gleich mal auf die 0-Division gestossen und wollte nicht überlegen was er mit dem Programm überhaupt genau machen will. ^^

    Ein bisschen was selbst tun sollte er ja auch noch. 😉


Log in to reply