fakultäten von 0! bis 15! --- C

Aufgabe: "Schreiben Sie ein Programm, das eine Tabelle von Fakultäten erstellt. Die Tabelle soll die Werte für 0! bis 15! enthalten."

also, ich wusste ja anfangs nicht mal, was "Fakultäten" sind, hat uns aber dann der lehrer erklärt. :D

so, nun aber zu meinem quellcode. also
1. er ist falsch (das weiß ich, weil das prog nicht geht :D )
2. wenn ihr euch den anschaut (und vorallem die aufgabenstellung seht) werdet ihr euch denken: "omg, is ja eh so leicht". tut mir leid, ich steh erst bei den anfängen von C.
3. wichtig: C, nicht C++!

ok, danke schon mal für eure vorschläge.

Code:
#include <stdio.h>
#include <conio.h>

int main (void){

	int a=0, i=0, erg=0;

	for(i=1;i=15;i++){
			for(a=i;a=1;a--){
				erg=i*a;
				printf("%d", erg);
			}
	}


return 0;
}


...ich weiß, extrem falsch ;( ;( :(
 
zum einen : 15! ist schon 1.30767e+12 was bedeutet das es den bereich von INTEGER vollkommen SPRENGT!

zum zweiten: 3! ist 3*2*1 , und 15! ist 15*14*13*12*11*10*9*8*.... *1 ... was du da berechnest ist was anderes :D
 
aber die erste "for" passt ja, oder? weil ich das ganze ja insgesamt 15 mal ( 0! bis 15!) machen muss !?!?

edit: ich hab das gerechnet oder? : 3! = 3*2 3*1 ... oda sowas ähnliches... auf alle fälle was falsches ;(

//EDIT: ich weiß echt voll nicht, wie ich den algorithmus umsetzten soll :(
 
hmm
ich würde es so machen:

Code:
ergebnis=n;
for (i=n;i>0;i--)
{
     ergebnis = ergebnis *  i;
}

das Dingen geht von der eingegebenen Zahl bis 1 und multipliziert immer alles vorhergehende mit der Zahl darunter :D
 
Original von Watchme
... das Dingen geht von der eingegebenen Zahl bis 1 ...

es gibt keine eingegebene zahl. es ist fix festgelegt, welche fakultäten ich ausgeben soll, nämlich die von 0! bis 15!. :)

habs aber trotzdem probiert, funzt nicht ;(
 
Hi Unsecure,
ich kenn mich nicht so mit printf aus, aber das cout(c++) kannst du ja leicht ersetzen...

#include <iostream.h>
#include <conio.h>
#include <stdio.h>

long int fakultaet(int n)
{
if (n <= 1) return n;
else return n * fakultaet(n - 1);
}

int main()
{
clrscr();

for (int i = 0; i < 15; i++)
{
cout << "\n" << i + 1 << "\t";
cout << fakultaet(i + 1);
}

getch();
return 0;
}

Hoffe ich konnte helfen.
 
Ich hab den Code mal aufgegriffen und für C umgemodelt:


#include <stdio.h>

float fakultaet(int n)
{
float z=1;
if (n <= 1) return n;
else { for (j=1, j<n , j++) {
z=j*z;
}}}


void main()
{
for (int i = 1; i < 16; i++)
{
printf("%d! \t%f\n",i,fakultaet(i));
}
}
 
Hi Stek.
Kann es sein dass man für die Funktion nicht noch einen Prototypen braucht.
Ich bin mir aber nicht sicher ob das zwingend notwendig ist.
 
@ stek

der code geht nicht :(

der compiler meldet 5 fehler. zb
"Fehlendes ';' vor 'type' "
"Fehlendes ')' vor 'type'

obwohl eigentlich von den klammern und semikolons her alles passt. ?(

PS: geht es theoretisch auch ohne funktionen? X(

DANKE für eure hilfe! :)
 
Hi, nimm doch einfach meinen Code und ersetze die cout´s durch printf´s.
steks Code ist eher Pseudocode. Klar kannst du das auch ohne Funktion machen!
 
hab ich schon gemacht ;(

da kommen die gleichen fehler :(

und wie gehts ohne funktionen? ist wahrscheinlich viel komplizierter, oder?
 
Bei meinem Code gibts Compilerfehler? Kann nicht sein! :D
Welchen Compiler benutzt du denn?
Ohne Funktionen ists komplizierter finde ich.
Was für Fehler schmeißt er denn?

PS: Kann dir leider nicht mehr helfen, mach jetzt Feierabend... Aber sicher
hilft dir Jemand anders! ;)
 
Ich weiß nicht genau ob ich verstehe was das prog tun soll aber zb alle zahlen von 15 bis 1 miteinander mulitplizieren oder? sollte einfach nur ne frage sein weil ich glaube das ich das nicht ganz richtig verstanden habe. oder hab ich doch verstanden?
 
ds prog soll einfach nur das ausgeben:

0! = 1
1! = 1
2! =2
3! =6
4! =24
5! =120
6! =720
7! =5040
8! =40320
usw.
... bis:

15! = 1.307674368 *10 ^12


und ich weiß absolut nich wie ich das anstellen soll ?!?! ?(

PS: das '^' sollte "hoch" bedeuten. ;)
 
Moin,

ich würde es ehrlich gesagt genau wie Guybrush machen, nämlich rekursiv.
Vesuch mal i in long int umzuschreiben sonst kriegt er probleme in der Schleife.

Kovok
 
hab eine lösung ;)

Code:
#include <stdio.h>
#include <conio.h>


int main (void){
	double faku=1;
	int i=1;

	printf("0! = 1\n");

	for(i=1;i<=15;i++){
		printf("%d! = ", i);
		faku=faku*i;
		printf("%.2e\n",faku);
		
	}
	getch();
return 0;
}
 
Hauptsache läuft! ;)
@Kovok:
Das i in der Schleife ist nur der counter der von 0 bis 14 inkrementiert wird,
da reicht ein Integer dicke aus. Oder hab ich dich falsch verstanden?

Greetz
 
Zurück
Oben