Hallo Ich hätte noch mal eine Frage und da mir ihr mir schon zuvor so gut geholfen habt würde ich mich nochmal gerne an euch wenden. Ich habe ein Programm entworfen um die Fakultät einer Zahl zu berechnen (zumindest versuche ich es...). Leider stehe ich gerade ziemlich auf dem Schlauch... Das Programm sieht wie folgt aus:
C++:
#include <iostream.h>
void main () { int z,f; char c; do { cout<<"Fakultät-Berechnung"<<endl<<endl; cout<<"Bitte geben sie die Zahl ein"<<endl; cout<<"die sie als Fakultät berechnen lassen möchten\n"; cin>>z; for (f=1;f<=z;f++) { f=f*; } cout<<"Das Ergebniss ist: "<<f<<endl; cout<<"Wenn sie weitermachen möchten drücken sie J/j"<<endl; cin>>c; }while (c=='J' || c=='j'); } [/cpp]
[/cpp]
Ich habe es mit for (f=1;f<=z;f++) versucht, weiss aber nicht ob das der richtige Weg ist... und vor allem weiss ich nicht wie ich es schaffen soll die Fakultät "auszudrücken"(f=f*??????.Weiss jemand vielleicht Rat?Danke
Also, ich danke dir für deinen Vorschlag aber leider kenne ich den befehl mit der Rekursion nicht.Ich bin noch ein ziemlicher Anfänger.Um ehrlich zu sein habe ich mit der frage gemeint ob mein Entwurf oben mit der For-Schleife funktioniert (so wie er da steht)?Eigentlich müsste es doch funktionieren: for (f=1;f<=z;f++) fängt bei der 1 an und macht weiter bis z (also die zahl die ich eingegeben habe )und bei der Fakultät ist doch genau das gefragt oder nicht?
//#include <iostream.h> // das nicht mehr verwenden ist veraltet... #include <iostream> usingnamespace std;
int main (){ int i,z,f; char c; do{ cout<<"Fakultät-Berechnung"<<endl<<endl; cout<<"Bitte geben sie die Zahl ein"<<endl; cout<<"die sie als Fakultät berechnen lassen möchten\n"; cin>>z; for (f=i=1;i<=z;i++)f*=i; cout<<"Das Ergebniss ist: "<<f<<endl; cout<<"Wenn sie weitermachen möchten drücken sie J/j"<<endl; cin>>c; }while (c=='J' || c=='j');
}
C++:
for (f=1;f<=z;f++)f=f*;
das kann gar nicht gehen.... mal von f=f* abgesehen brauchst du eine variable zum zwischenspeichern weil du f ja bei jedem schritt inkrementierst und gleichzeitig noch multiplizierst... -- ...fleißig wie zwei WeißbroteDieser Post wurde am 07.01.2004 um 20:49 Uhr von Windalf editiert.
Nun ich habe jetzt das versucht,klappt trotzdem nicht.Könntest du mir vielleicht sagen was ich falsch mache?
C++:
#include <iostream.h>
void main () { int z,f,x; char c; do { cout<<"Fakultät-Berechnung"<<endl<<endl; cout<<"Bitte geben sie die Zahl ein"<<endl; cout<<"die sie als Fakultät berechnen lassen möchten\n"; cin>>z; for (f=1;f<z;f++) { x=f*(f++); } cout<<"Das Ergebniss ist: "<<x<<endl; cout<<"Wenn sie weitermachen möchten drücken sie J/j"<<endl; cin>>c; }while (c=='J' || c=='j'); }
na du musst mal von hand deine schleife durchgehen dann wird dir auch klar was du falsch machst... also erstens ist x nicht initialisiert... da steht beim start garantiert keine 1 drin so wie sein soll
dann muss f<=z gelten sonst vergisst du den letzten wert und berechnest nur fac(n-1)
x=f*(f++); das setzt x auf f*(f+1); also beim ersten durchlauf ist es 1*2 dann 2*3 dann 3*4 usw... was du willst ist das du dein altes x beibehälst und mit dem f multiplizierst... also x=x*f.... die kurzschreibweise dafür ist x*=f... jetzt klar -- ...fleißig wie zwei Weißbrote