Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Beispiel:
Die Fakultät (geschrieben n!) einer Zahl n berechnet sich als n!=123(n-1)n. Schreiben Sie ein Programm das die Fakultät einer eingegebenen Zahl berechnet.
Wie lös ich das am Besten? Muss mit einer Schleife sein!
Es gibt einen eigenen Bereich für Hausgaben,
sollte es doch keine Hausaufgabe sein -> stelle deine Frage genauer! Was verstehst du nicht, wo hängst du?
Zeige deinen bisherigen Code.
Es gibt einen eigenen Bereich für Hausgaben,
sollte es doch keine Hausaufgabe sein -> stelle deine Frage genauer! Was verstehst du nicht, wo hängst du?
Zeige deinen bisherigen Code.
Wie ihr vielleicht sehen konntet war dies mein erster Beitrag, sprich ich hab leider nicht gesehen, dass es einen eigenen HÜ Ordner gibt - sorry!
Zweitens: Kopieren tu ich keine Codes. Bin noch ein Anfäger und versuche selbst auf die Lösung zu kommen d.h. ich schau mir die Codes an, versuche sie zu verstehen und versuch es anschließend selbst. Teilweise tipp ich sie auch ab was meiner Meinung noch immer besser ist als kopieren und fertig.
Wo man auch schon beim Problem sind. Mit der ersten Lösung kann ich leider nichts anfangen - sorry... Liegt bestimmt daran, dass ich noch Anfänger bin...
Genauere Angeben zur Aufgabenstellung hab ich leider auch nicht. Hab dies 1:1 von von dem Mail, welches ich vom Prof. bekommen hab, kopiert!
Entweder habt ihr in Mathe schon die Fakultät durchgenommen und du weißt wie man die Fakultät einer Zahl X berechnet, oder
du musst deinen Professer darauf aufmerksam machen, dass ihr die Fakultät noch nicht berechnen könnt und er auch entsprechende Möglichkeiten geben muss dies zu lernen oder ähnliches.
Ansonsten gibt es auf Wikipedia eine super Erklärung zur Fakultät. Schau dort einfach mal nach, eine allgemeine Formel findet man da auch. Diese musst du dann nur noch in dein Programm übertragen.
Ich weiß einfach nicht wie ich angfangen soll. Was Fakultät bedeutet usw. ist mir natürlich klar.
Mein Hauptproblem ist, wie ich dazu komme, dass es dem Programm egal ist, ob eine Zahl mit ziffern eingegeben wird oder eine mit 5 Ziffern...
Mein Anfang sieht wie folgt aus:
Java:
package fakultaet;
import java.util.Scanner;
public class Fakultaet
{
public static void main(String[] args)
{
Scanner scan = new Scanner ( System.in );
long z;
System.out.println( "Bitte geben Sie eine Zahl ein!" );
z = scan.nextLong();
}
}
Wie gesagt auf Wikipedia gibt es eine gute Erklärung der Fakultät. Dort findet sich auch der Sourcecode zur Berechnung der Fakultät geschrieben mit Phyton.
Dein Anfang passt schon mal ... aber du liest ja nur eine Zahl ein. Wenn du mehr hast kannst dich ja wieder melden.
Oh man, das war ein anderes Programm, was ich geübt hab. Sorry...
Hier ist nochmal das richtige:
[Java]
package fakultaet;
import java.util.Scanner;
public class Fakultaet
{
public static void main(String[] args)
{
Scanner scan = new Scanner ( System.in );
long z, faku = 1;
System.out.println( "Bitte geben Sie eine Zahl ein!" );
z = scan.nextLong();
if ( z >= 0 )
{
while ( z > 1 )
{
faku = faku * z;
z = z - 1;
}
System.out.println( "Die Fakultät der eingebenen Zahl lautet " + faku );
}
else
{
System.out.println( "Eingegebene Zahl muss 0 od. größer sein!" );
}
}
}
[/code]
int fac = 0;
int result = 1; // eine Fakultät ist immer >= 1 , also ist Result minimum1
while(fac != 0)
{
if(fac == 0) result = 1; // 0! = 1
else {
result *= fac;
fac--;
}
}
1. Für seinen Wissensstand was Java betrifft passt sein Code schon
2. Deinen Code könntest du ruhig in Java-Tags geben -> machs uns nicht so schwer den Code zu lesen!
3. So wie dein Code hier steht passiert genau nichts. Wenigstens ein weitere Kommentar zu "int fac = 0;" wäre notwendig
int fac = 0;
int result = 1; // eine Fakultät ist immer >= 1 , also ist Result minimum1
while(fac != 0)
{
if(fac == 0) result = 1; // 0! = 1
else {
result *= fac;
fac--;
}
}
Ich habe ja gesagt ein weiteres Kommentar bei der Zeile wo du "fac" deklarierst und initialisierst wäre nicht falsch gewesen.
Dann wäre das sofort klar das anstatt direkt eine Zahl als Startwert festzulegen diese auch von der Konsole oder so einlesen könnte
Was ist los mit dir, der code ist richtig. Du kannst fac per scanner als userinput einlesen und wenn der benutzer 0 als fac ausgerechnet haben will dann wird die if Bedingung erfüllt, das einzige was fehlt ist die Überprüfung auf positive zahlen
und wenn der benutzer 0 als fac ausgerechnet haben will dann wird die if Bedingung erfüllt, das einzige was fehlt ist die Überprüfung auf positive zahlen
int fac = 0; // Startwert, ggf. als UserInput verlangen
int result = 1; // n-Fakultät ist immer >= 1
do
{
if(fac == 0) break; // 0! = 1
else {
result *= fac;
fac--;
}
} while(fac != 0);
System.out.println(result);
}
Achtung bei seiner Variante mit der "while" Schleife ist die if-Abfrage wirklich unnötig.
Bei dieser Variante mit der "do-while" Schleife muss sie drinnen sein.
Natürlich ist die Version mit der "while"-Schleife der anderen vorzuziehen.
Um es einmal richtig zu schreiben wie man es optimiert. Wobei ich die Version des TO vollkommen in Ordnung finde.
Java:
int zahl = 6; // hier bitte die Zahl zuweisen deren Fakultät errechnet werden soll.
if (zahl <= 1) return 1;
int ergebnis = 1;
while(zahl > 1) ergebnis *= zahl--;
return ergebnis;