Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Informatik in der Schule (http://www.informatikerboard.de/board/board.php?boardid=21)
--- For Schleife; Fakultät erstellen. (http://www.informatikerboard.de/board/thread.php?threadid=3883)


Geschrieben von forschleifenschreiber am 10.04.2018 um 13:26:

  For Schleife; Fakultät erstellen.

Meine Frage:
Hallo,
mir wurde folgende Aufgabe gestellt:
Gegeben den folgenden Code:

int n = 3;
berechnen Sie die Fakultät von n, also das Ergebniss der Multiplikation von
1 * 2 * ... * n.
Im Beispiel wäre das:6
Testen Sie Ihr Programm auch z.B. mit 5 und 10.

Meine Ideen:
int n=3;
for(int i=1;i<=n;i++) {
print(i);
}
Mein Problem hierbei ist, dass ich es zwar hinbekomme die Zahlenreihe 123 usw hinzubekommen, sondern daraus eine zusammenhängende Rechnung zu machen.

int n=3;

for(int i=1; i<=n; ++i) {

println(i*n--);




}
wäre mein zweiter Ansatz gewesen. Dennoch vorab ist da für mich keine Lösung in Sicht großes Grinsen :/



Geschrieben von as_string am 10.04.2018 um 14:47:

 

Du musst zuerst eine Variable anlegen, in der Du am Ende das Ergebnis haben willst, und diese mit 1 (das neutrale Element der Multiplikation) initialisieren.
Dann musst Du in der Schleife zu dieser Ergebnisvariable immer den neuen Faktor "dran-multiplizieren". Dafür kannst Du den Operator "*=" verwenden.
Also in der Schleife so was wie
code:
1:
result *= i;

Gruß
Marco



Geschrieben von ElAntonio am 10.04.2018 um 19:28:

  FOr schleife

int n=3;

for(int i=1; i<=n; i++) {

println(i*=n--);




}
macht das jetzt so mehr sinn?

ich denke nicht, denn jetzt kommt genau n jedes mal raus.
Ich weiss echt nicht was ich anders machen soll. Mir ist schon bewusst dass ich eine zweite Variable benötige. Aber was Du mir gerade erklärt hast habe ich ehrlichgesagt nicht verstanden.
Ich gehe von 1 schrittweise hoch
1 2 3
deshalb i++
und wenn ich das so hinschreibe dann klappt das ja auch.
Aber sobald ich was multiplizieren willl. klapppt das ganze nicht mehr.



Geschrieben von NixJava am 10.04.2018 um 20:40:

 

Hallo,

du solltest außerhalb der Schleife einen neuen Integer anlegen und mit 1 initialisieren. Marco hat diesen result genannt. An diese Variable kannst du innerhalb deiner for-Schleife jeweils die Zahlen i=1,2,3,...,n multiplizieren.
Nachdem die Schleife durchlaufen wurde, kannst du das Ergebnis (steht in result) ausgeben.

code:
1:
2:
3:
4:
5:
6:
7:
8:
int n;
// Variable anlegen und initialisieren

for(int i=1; i<=n; i++) {
  // multiplizieren
}

// Ergebnis ausgeben



Geschrieben von ElAntonio am 11.04.2018 um 18:21:

  For schleife

Ich weiss schon dass ich das dranmultiplizieren muss. Das ist ja auch nicht mein Problem.

int n=3;
for(int i = n; i>0;i--){
print(i+"*");





}
print("=");

ich hab das ganze jetzt umgestellt. Dennoch bekomme ich die multiplikation nicht gebacken. Ich bin ein absoluter Anfänger und weiss nicht genau was ihr damit meint.
Generell zeigt mir Processing an, dass ich den Operator *= nicht verwenden kann. Jedes mal wenn ich das schreiben will kreidet er mir das an. Egal in welchem Zusammenhang.

Ausserdem steht jedes mal nach der letzten Ziffer vor dem = ein *.
Kann ich irgendwie einen backslash einfügen?
unglücklich (



Geschrieben von ElAntonio am 11.04.2018 um 18:36:

 

VIELEN DANK AN ALLE,
Dank eurer Hilfe, habe ich das ganze verstanden!
DANKE!


Forensoftware: Burning Board, entwickelt von WoltLab GmbH