www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

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
Dt. Schulen im Ausland: Mathe-Seiten:

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.vorhilfe.de