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.
