Hallo liebe Fachinformatiker.de-User,
ich habe folgende Aufgabe:
Ich habe dazu nun folgenden Code geschrieben:
#include <iostream>
// ------- Nebenfunktionen-------
// >Eingabe
int eingabe (int x) {
std::cout<<"Bitte geben sie eine natuerliche Zahl ein: "<<std::endl;
std::cin>>x;
while (x<1) {
std::cout<<"Die eingegebene Zahl ist nicht natuerlich!\nBitte geben sie erneut eine natuerliche Zahl ein: "<<std::endl;
std::cin>>x;
}
return x;
}
// >Test ob Primzahl
int primtest (int p) {
int zaehler;
if (p < 2) return 0;
if (p == 2) return 1;
if (p %2 == 0) return 0;
for (zaehler = 3; zaehler * zaehler <= p; zaehler = zaehler+2) {
if (p % zaehler == 0) return 0;
}
return 1;
}
// >Primzahlzerlegung
void primzer (int y) {
int i;
while (y > 1) {
i = 2;
while ((y%i != 0) && (primtest(i) == 0)) {
i = i + 1;
}
std::cout<<i<<" "<<y<<"\n";
y = y/i;
}
}
// ------ Hauptfunktion -----------
int main () {
int n;
std::cout<<"Primfaktorzerlegung einer natuerlichen Zahl\n ------------------------- "<<std::endl;
eingabe (n);
primzer (n);
return 0;
}
Mein Problem ist nun: Ich denke eigentlich müssten die einzelnen Funktionen(Eingabe, Primzahlentest, Primzahlenzerlegung) von der Sache her stimmen, lass mich natürlich auch eines besseren Belehren! Doch wenn ich dieses Programm nun teste, wird der eingegebene Wert von der Eingabefunktion nicht weiter an die zweite Funktion übergeben (so sieht das zumindest aus wenn ich "y" mit ausgeben lasse) und ich komm einfach nicht drauf warum?! Ich hab da jetzt schon eine Ewigkeit dran rumprobiert...doch leider ohne Erfolg!
Kann mir hier evtl. jemand weiter helfen?
Vielen Dank schonmal,
Beste GRüße,
Chillee
EDIT: Entschuldigt den Fehler in der Überschrift !