www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Englisch
  Status Grammatik
  Status Lektüre
  Status Korrekturlesen
  Status Übersetzung
  Status Sonstiges (Englisch)

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Softwaretechnik und Programmierung" - Fakultät berechnen in Java
Fakultät berechnen in Java < Softwaretechnik+Pro < Praktische Inform. < Hochschule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Softwaretechnik und Programmierung"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Fakultät berechnen in Java: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 16:56 Mo 01.11.2010
Autor: Fatih17

Aufgabe
Schreiben Sie ein Programm, welches für eine eingegebene natürliche Zahl oder 0 die Fakultät zu dieser Zahl berechnet. Der Benutzer soll zu Programmbeginn solange dazu aufgefordert werden, eine natürliche Zahl oder 0 einzugeben, bis er dies gemacht hat.

Die Fakultät ist rekursiv für alle natürlichen Zahlen inkl. der Zahl 0 definiert durch:
0! = 1 n! = (n-1)! * n Beispiele: 0! = 1, 1! = 1, 2! = 2, 3! = 6, 4! = 24, 5! = 120

Verwenden Sie in Ihrem Programm eine geeignete Schleife. Begründen Sie Ihre Entscheidung für eine bestimmte Schleifenart.

Ich bin bis jetzt so weit gekommen, dass das Programm einen immer wieder auffordert eine Zahl über 0 einzugeben. Leider weiß ich nicht wie ich dem weismachen soll, dass er 5=1*2*3*4*5=120 rechnen soll.

Gibt es da einen bestimmten Befehl für Primzahlen?

Hier mein Code bis jetzt:


public class Fakultät
{
public static void main ( String[] args )
{
System.out.println ("Dieses Programm berechnet die Fakultaet einer eingegeben Zahl");
int x;

do {
System.out.print ("Geben Sie eine natuerliche Zahl ein: " );
x= In.readInt();
} while (x<=0);


}
}



        
Bezug
Fakultät berechnen in Java: Antwort
Status: (Antwort) fertig Status 
Datum: 17:01 Mo 01.11.2010
Autor: fencheltee


> Schreiben Sie ein Programm, welches für eine eingegebene
> natürliche Zahl oder 0 die Fakultät zu dieser Zahl
> berechnet. Der Benutzer soll zu Programmbeginn solange dazu
> aufgefordert werden, eine natürliche Zahl oder 0
> einzugeben, bis er dies gemacht hat.
>
> Die Fakultät ist rekursiv für alle natürlichen Zahlen
> inkl. der Zahl 0 definiert durch:
>  0! = 1 n! = (n-1)! * n Beispiele: 0! = 1, 1! = 1, 2! = 2,
> 3! = 6, 4! = 24, 5! = 120
>
> Verwenden Sie in Ihrem Programm eine geeignete Schleife.
> Begründen Sie Ihre Entscheidung für eine bestimmte
> Schleifenart.
>  Ich bin bis jetzt so weit gekommen, dass das Programm
> einen immer wieder auffordert eine Zahl über 0 einzugeben.
> Leider weiß ich nicht wie ich dem weismachen soll, dass er
> 5=1*2*3*4*5=120 rechnen soll.
>  
> Gibt es da einen bestimmten Befehl für Primzahlen?

wieso primzahlen?

also hier mal quasi c-mässig:

int zahl=5;
int fak=1;
while (zahl>0) {
fak*=zahl;
zahl--;
}

>  
> Hier mein Code bis jetzt:
>  
>
> public class Fakultät
>  {
>  public static void main ( String[] args )
> {
>  System.out.println ("Dieses Programm berechnet die
> Fakultaet einer eingegeben Zahl");
>  int x;
>  
> do {
>  System.out.print ("Geben Sie eine natuerliche Zahl ein: "
> );
>  x= In.readInt();
>  } while (x<=0);
>  
>
> }
>  }
>  
>  

gruß tee


Bezug
                
Bezug
Fakultät berechnen in Java: Korrekturmitteilung
Status: (Korrektur) kleiner Fehler Status 
Datum: 17:07 Mo 01.11.2010
Autor: Marc

Hallo T,

> int zahl=5;
>  int fak=0;

hier müsste int fak=1 stehen, da sonst alle Ergebnisse 0 werden :-)

>  while (zahl>0) {
>  fak*=zahl;
>  zahl--;
>  }
>  vorher noch ne if abfrage für die 0 rein.

Das ist dann doch auch nicht mehr nötig (oder?); die Variable fak enthält Ende des Programmlaufs den Wert von zahl! in jedem Fall.

-Marc

Bezug
                        
Bezug
Fakultät berechnen in Java: Korrekturmitteilung
Status: (Korrektur) oberflächlich richtig Status 
Datum: 18:20 Mo 01.11.2010
Autor: fencheltee


> Hallo T,
>  
> > int zahl=5;
>  >  int fak=0;
>  
> hier müsste int fak=1 stehen, da sonst alle Ergebnisse 0
> werden :-)

oha, ganz übersehen, ich danke dir für die korrektur!

>  
> >  while (zahl>0) {

>  >  fak*=zahl;
>  >  zahl--;
>  >  }
>  >  vorher noch ne if abfrage für die 0 rein.
>  
> Das ist dann doch auch nicht mehr nötig (oder?); die
> Variable fak enthält Ende des Programmlaufs den Wert von
> zahl! in jedem Fall.
>  

auch wieder wahr ;)

> -Marc

gruß tee

Bezug
                
Bezug
Fakultät berechnen in Java: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 17:12 Mo 01.11.2010
Autor: Fatih17

Hallo nochmal,

also ich bin noch reiner Java Anfänger und das mit der 5 war ja nur ein Beispiel.

Aus deiner Antwort werde ich leider irgendwie nicht schlau, tut mir leid :(

Bezug
                        
Bezug
Fakultät berechnen in Java: Antwort
Status: (Antwort) fertig Status 
Datum: 18:25 Mo 01.11.2010
Autor: fencheltee


> Hallo nochmal,
>  
> also ich bin noch reiner Java Anfänger und das mit der 5
> war ja nur ein Beispiel.
>  
> Aus deiner Antwort werde ich leider irgendwie nicht schlau,
> tut mir leid :(

dein problem war doch nur, einen algorithmus für die fakultät zu finden.
ich schrieb dir dann:

int zahl=5;
int fak=1;
while (zahl>0) {
fak*=zahl;
zahl--;
}

wobei statt zahl=5 auch direkt dein x da stehen kann (wo ja der eingelesene wert drin ist)

gruß tee

Bezug
                                
Bezug
Fakultät berechnen in Java: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 18:34 Mo 01.11.2010
Autor: Fatih17

Hallo nochmal,

also bei mir stehen jetzt z.B. in der Konsole bei der Zahl 4 z.B. die Zahlen 1,2,3,4. Das Problem ist aber, wie sage ich dem dass er diese Zahlen multiplizieren soll um am ende auf das ergebnis zu kommen?

Bezug
                                        
Bezug
Fakultät berechnen in Java: Antwort
Status: (Antwort) fertig Status 
Datum: 19:32 Mo 01.11.2010
Autor: fencheltee


> Hallo nochmal,
>  
> also bei mir stehen jetzt z.B. in der Konsole bei der Zahl
> 4 z.B. die Zahlen 1,2,3,4. Das Problem ist aber, wie sage
> ich dem dass er diese Zahlen multiplizieren soll um am ende
> auf das ergebnis zu kommen?

dazu ist die schleife da
int fak=1;
while (zahl>0) {
fak*=zahl;
zahl--;
}
fak*=zahl ist die kurzform für fak=fak*zahl

gruß tee

Bezug
                                                
Bezug
Fakultät berechnen in Java: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 20:55 Mo 01.11.2010
Autor: Fatih17

Hallo nochmal,

es hat alles funktioniert, danke an euch :)

Jetzt wüsste ich aber gerne was diese Schleife genau bewirkt bzw dieses Zahl--

Sagen wir mal die eingegebene Zahl ist 4 dann müsste demnach ja die zeile:

fak=fak*zahl

folgendermaßen lauten:

1=1*4

Es hat bestimmt etwas mit zahl-- zu tun, aber nur was?

Bezug
                                                        
Bezug
Fakultät berechnen in Java: Antwort
Status: (Antwort) fertig Status 
Datum: 21:01 Mo 01.11.2010
Autor: fencheltee


> Hallo nochmal,
>  
> es hat alles funktioniert, danke an euch :)
>  
> Jetzt wüsste ich aber gerne was diese Schleife genau
> bewirkt bzw dieses Zahl--
>
> Sagen wir mal die eingegebene Zahl ist 4 dann müsste
> demnach ja die zeile:
>  
> fak=fak*zahl
>
> folgendermaßen lauten:
>  
> 1=1*4
>  
> Es hat bestimmt etwas mit zahl-- zu tun, aber nur was?

als beispiel nehmen wir mal die 3:
int zahl=3;
int fak=1;
while (zahl>0) {
fak*=zahl;
zahl--;
}

1. durchlauf, fak=1
while (zahl>0) {  //3 ist grösser als 0
fak*=zahl;  //fak=fak*3=3
zahl--; //3-1=2
}

2. durchlauf, fak=3
while (zahl>0) {  //2 ist grösser als 0
fak*=zahl;  //fak=fak*2=6
zahl--; //2-1=1
}

3. durchlauf, fak=6
while (zahl>0) {  //1 ist grösser als 0
fak*=zahl;  //fak=fak*1=6
zahl--; //1-1=0, schleife wird abgebrochen
}

oder war nur unklar, dass zahl-- das gleiche ist wie zahl=zahl-1?

gruß tee




Bezug
                                                                
Bezug
Fakultät berechnen in Java: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 21:15 Mo 01.11.2010
Autor: Fatih17

Hallo,

nein du hast mir im grunde das Problem vor augen geführt, dass ich hatte :)

Ich wusste nicht dass solange die Schleife durchläuft, biss der Wert Null erreicht wurde, aber an welcher stelle multipliziert er die zahlen 3,2 und 1?

Und für "fak" galt ja "fak=1" , warum kommt dann im 2.Durchlauf 6 heraus?
Da steht doch dann:

1=1*2 , das macht aber nicht 6 oder verstehe ich hier etwas falsch?

Bezug
                                                                        
Bezug
Fakultät berechnen in Java: Antwort
Status: (Antwort) fertig Status 
Datum: 22:04 Mo 01.11.2010
Autor: fencheltee


> Hallo,
>  
> nein du hast mir im grunde das Problem vor augen geführt,
> dass ich hatte :)
>  
> Ich wusste nicht dass solange die Schleife durchläuft,
> biss der Wert Null erreicht wurde, aber an welcher stelle
> multipliziert er die zahlen 3,2 und 1?
>  
> Und für "fak" galt ja "fak=1" , warum kommt dann im
> 2.Durchlauf 6 heraus?
>  Da steht doch dann:
>  
> 1=1*2 , das macht aber nicht 6 oder verstehe ich hier etwas
> falsch?

die 1 steht ja von anfang an drin. "unsere" schleife multipliziert aber von unten nach oben.
wenn wir also 5! berechnen wollen, steht folgendes in fak:
init: fak=1 (DL=DurchLauf)
1. DL: fak=fak*5=1*5
2. DL: fak=fak*4=5*4=20
3. DL: fak=fak*3=20*3=60
4. DL: fak=fak*2=60*2=120
5. DL: fak=fak*1=120*1=120

wir sehn im 5. durchlauf, dass der code in der ersten zeile auch zu "while (zahl > 1)" verändert werden könnte, da die 1 am ende nix verändert

gruß tee


Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Softwaretechnik und Programmierung"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.englischraum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]