Menu schließen

Fakultät in einer Schleife programmieren

Frage: Fakultät in einer Schleife programmieren
(14 Antworten)


Autor
Beiträge 0
14
Ich sitz` seit heute morgen in der Schule an die Fakultät dran. Wir müssen im Fach Programmieren das Programm dazubringen die Fakultät direkt anzuzeigen und zwar mit einer for schleife.


Ich komm einfach nicht mehr weiter. Wir Programmieren mit C

Ich komm einfach nicht weiter und mein Programm zeigt mir dann irgend ein Fehler an, wenn ich etwas in die Schleife schreibe...

Ich hoffe mir kann jemand helfen
Frage von datina (ehem. Mitglied) | am 21.10.2008 - 18:15

 
Antwort von GAST | 21.10.2008 - 19:45
zeig
doch wie weit du gekommen bist....


Autor
Beiträge 0
14
Antwort von datina (ehem. Mitglied) | 21.10.2008 - 21:20
/*Fakultaet von Zahlen*/

#include <stdio.h>

main()
{

int x,y,z,a;
printf("ntProgramm zur Berechnung der Fakultaet einer Zahln");
printf("t------------------------------------------------nn");
printf("tGeben Sie die Zahl 10 <Zahl <= 10> ein, deren Fakultaet berechnet werden soll: ");
scanf("%i",&x);

for (x=0; x<=1; x=x+1)
{


}

printf("nnt Fakultaet der Zahl %i = %inn",x,a);

}





----------------------------------------------
ich weiß nur nicht was ich in der Schleife schreiben soll... also die Rechnung. alles was ich bisher ausprobiert habe funktioniert nicht

 
Antwort von GAST | 21.10.2008 - 21:36
Was eine Fakultaet ist ist dir denk ich mal klar?

Bsp Fakultaet von 4

1*2*3*4

Rechnest 1*2. Das Ergebnis davon wird *3 genommen. Wiederum das Ergebnis * 4 usw.....Immer das Ergebnis * die nächst ganze Zahl. Fällt dir da kein Algorythmus ein?

 
Antwort von GAST | 21.10.2008 - 21:46
ich frag mich grad ob die Bedingung in deiner Schleife so korrekt ist. wenn du die schleife nur bis x<=1 laufen lässt, dann stoppt die schleife nach dem ersten Durchlauf, denn x wird ja um eins erhöht: von 0 auf 1.
allerdings kann ich dir grad auch keine richtige Bedingung sagen.
der Schleifenrumpf berechnet immer die vorige variable mal der variable+1.
variable ist am anfang 1 und steigt immer höher bis zur gewählten Fakultät.
viel glück

 
Antwort von GAST | 21.10.2008 - 21:51
das kannste sogar mit ner while schleife lösen

Zitat:

int n,produkt=1;

scanf("%i",&n);

do{ produkt*=n; }while(--n);

printf("%i",produkt);

 
Antwort von GAST | 21.10.2008 - 22:09
"while(--n)" --> Bedingung?

 
Antwort von GAST | 21.10.2008 - 22:15
ja das is n kleiner trick in C

while(x)
hießt
while(x != 0)


und "unsigned long long int" ist wohl besser geeignet (größere fakultäten möglich)

--------------------------------------

unsigned long long n,produkt=1;

scanf("%llu",&n);

do{ produkt*=n; }while(--n);

printf("%llun",produkt);


Autor
Beiträge 0
14
Antwort von datina (ehem. Mitglied) | 22.10.2008 - 15:46
ja das funktioniert danke,

aber 1. versteh ich die Rechnung davon nicht, weil wenn ich das so mache, muss ich das auch erklären können...
2. wir MÜSSEN das mit der for schleife machen...


muss ich vielleicht zahl<=10 eingeben anstatt x<=1 ? weil das steht ja sozusagen auch in der aufgabe...

aber mien hauptproblem liegt ja nur bei der rechnung wie ich das schreiben muss bzw rechnen...

 
Antwort von GAST | 22.10.2008 - 15:55
du hast irgendeine laufvariable, die von 1 bis n läuft.

bis dieser wert n erreicht ist, wird p auf p*i gesetzt. (beginnend bei p=1)

so erhälst du für 4 z.b.:

p:=1*1=1. (i=1)
p:=1*2=2 (i=2)
p:=2*3=6 (i=3)
p:=6*4=24 (i=4)

n=4 wurde erreicht, also wird der wert ausgegeben.

 
Antwort von GAST | 22.10.2008 - 19:24
jo ich hatte mal (aus spaß) versucht einen möglichst kurzen code zu schreiben

hier mal ne einfachere variante
-----------------------------------
unsigned long long int n,i,produkt=1;

scanf("Argument: %llu ",&n);

for(i=1;i<=n;i++)
{
produkt = produkt * i;
// oder
// produkt *= i; // ist das selbe
}

printf("%llu ! = %llu",n,produkt);
-----------------------------

wenn du noch fragen hast, dann FRAG !

 
Antwort von GAST | 22.10.2008 - 19:32
aber schön dass hier mal nach einer "vernümftigen" sprache gefragt wird.

nicht nur so zeugs wie Delphi, Pascal oder (Visual) Basic

*WÜRG*


Autor
Beiträge 0
14
Antwort von datina (ehem. Mitglied) | 23.10.2008 - 10:51
^^

ja jetzt funktioniert es....


hab die schleife jetzt so gemacht:

for(i=1;i<=n;i++)
{
produkt = produkt * i;
}


nur was bedeutet das i++ ? den rest versteh ich ja nur nicht mehr

 
Antwort von GAST | 23.10.2008 - 10:58
wird um 1 hochgezählt


Autor
Beiträge 0
14
Antwort von datina (ehem. Mitglied) | 23.10.2008 - 11:09
ahh ok dankööööö... dann kann ich den thread ja schließen

Verstoß melden Thread ist gesperrt
Hast Du eine eigene Frage an unsere Informatik-Experten?

> Du befindest dich hier: Support-Forum - Informatik
ÄHNLICHE FRAGEN:
BELIEBTE DOWNLOADS: