Zitat:
n wurde nicht initialisiert also dürfte das programm überhaupt nicht kompiliert werden.
|
natürllich wir kompiliert ist kein "Fehler" an sich jedoch kann irgendetwas in n stehen.
Die rot makierte stelle ist sehr wichtig in C da man Variablen initilisieren muss, sonst kann dort irgendetwas drin stehen und somit wird deine while schleife nicht einmal ausgeführt.
In deinem Fall könnte n z.B 3568422 sein sieht man vorallem gut wenn man in Eclipse /VS den Debugger benutzt. Und nur als Tipp der Debugger ist dein bester Freund beim Programmieren!!!
Die restlichen Farben sind Anmerkungen.
Code:
#include <stdio.h>
#include <stdlib.h> //entfernen
int primfaktor(int);
int main()
{
int pf ;
while ((pf = primfaktor(12))>1)
printf("%d\n", pf) ;
while((pf = primfaktor(7))>1)
printf("%d\n", pf) ;
printf( "%d\n", primfaktor(1));
system("PAUSE"); //entfernen
return 0;
}
int primfaktor (int wert)
{
int n = 0; //wichtig sonst kann irgendetwas darin stehen in C!!!
int zahl; // static braucht man eigentlich nicht
while (n<1) //while Schleife bis jetzt auch noch unsinnig da du nichts mit n machst bring auch nur was bei arrays also int primfaktor(int *werte)
{
zahl=wert;
}
int erg, t, x;
if (zahl<2)
{
return -2;
}
else
{
t=2;
erg=zahl;
while (zahl>t)
{
x=erg%t;
while (x==0)
{
erg=erg/t;
x=erg%t;
return t;
}
while (x>0)
{
t=t+1; //kann man auch so schreiben t+=1; oder t++;(Inkrementation um 1)
x=erg%t;
if (t==zahl)
{
x=0;
}
}
}
}
return -1; //test falls Funktion mal durchläuft
}