was ist hier falsch???
-
Hallo miteinander
Könnt ihr mir vielleicht helfen??
Bin langsam aber sicher echt verzweifelt und seh den Wald vor lauter Bäumen nicht mehr.Im folgenden Code sollte doch die Primzahl übergeben werden, leider tut sich da überhaupt nichts. Könnt ihr mir bitte erklären was ich falsch gemaacht habe?
/* Aufgabe: Schreiben Sie ein Unterpgrogramm, welches testet ob es sich bei einer überge- benen Zahl um eine Primzahl handelt. */ #include <iostream.h> #include <stdlib.h> class Cdetector { public: int eingabe(); int test(int Primzahl); private: int Primzahl, Divisor; }; //------------------------------------------------------------------------------ int Cdetector::eingabe() { cout << "Bitte geben Sie die zu ueberpruefende Zahl ein --> "; cin >> Primzahl; return Primzahl; } //Diese Methode prüft, ob eingegebene Zahle eine Primzahl ist int Cdetector::test(Primzahl) { //Primzahl=9; cout <<"Primzahl lautet: " << Primzahl; //debug-Test for (Divisor=2; Divisor<Primzahl; Divisor++) { // Ist das restlos teilbar? if (0 == Primzahl%Divisor) { // Zahl ist teilbar, ist also keine Primzahl! // Testausgabe: cout << Primzahl << "-" << Divisor << endl; } } cout << endl; } //------------------------------------------------------------------------------ void main() { int Primzahl; Cdetector myprim; myprim.eingabe(); cout << "Prim in main --> " << Primzahl << endl; //debug-Test myprim.test(Primzahl); system("PAUSE"); }Für euch ist dieser Code wohl beinahe schon lachhaft, doch ich komme echt nicht weiter. Ich hoffe, ihr habt Verständnis für meine Anfängerprobleme.
Vielen Dank für eure Hilfe.
Gruss, nemico
-
Du hast dich offenbar total verknotet mit deinen Variablen-Bezeichnern. Cdetector::test() arbeitet auf dem Parameter "Primzahl" (der das gleichnamige Element überdeckt) - und der hat vom Hauptprogramm eine nicht initialisierte Zahl zugewiesen bekommen.
(PS: Wenn ich genauer hinschaue - da fehlen noch einige Grundlagen)
-
CStoll schrieb:
(PS: Wenn ich genauer hinschaue - da fehlen noch einige Grundlagen)
Da hast du leider absolut recht! Ich bin ins 2.Semester einer Informatikerausbildung eingestiegen und muss nun unbedingt die Grundlagen von c++ auf-/ bzw. erarbeiten.
Ich danke dir für dein Posting, doch wäre ich echt froh, wenn du mir etwas genauere Erklärungen geben könntest, da ich leider noch immer keine Ahnung habe, wo der Fehler liegt.
Wie muss ich denn "Primzahl" aus der Methode int Cdetector::eingabe() übergeben, dass ich "Primzahl" in int Cdetector::test(Primzahl) wieder verwenden kann??? Bzw, wie muss ich sie übernehmen? Liegt da der Hauptfehler?
Vielen Dank, nemico
-
Ich würde es einfach erst mal ohne Klassen versuchen. Wenn du dann verstanden hast, wo welche Variablen gültig sind kannst du auch mit Klassen weiter machen...
/* Aufgabe: Schreiben Sie ein Unterpgrogramm, welches testet ob es sich bei einer überge- benen Zahl um eine Primzahl handelt. */ #include <iostream.h> #include <stdlib.h> int eingabe() { int Zahl; cout << "Bitte geben Sie die zu ueberpruefende Zahl ein --> "; cin >> Zahl; return Zahl; } //Diese Methode prüft, ob eingegebene Zahle eine Primzahl ist bool test(Primzahl) { for (int Divisor=2; Divisor<Primzahl; Divisor++) { // Ist das restlos teilbar? if (0 == Primzahl%Divisor) { // Zahl ist teilbar, ist also keine Primzahl! return false; } } return true; } void main() { int Primzahl = eingabe(); cout << "Die Zahl " << Primzahl; if (test(Primzahl)) cout << " ist eine Primzahl" << endl; else cout << " ist keine Primzahl." << endl; }
-
Muss natürlich lauten:
... bool test(int Primzahl) ...
-
Hallo miteinander
Herzlichen Dank für eure Hilfe!!!!!
Ich habe mein ursprüngliches Programm unterdessen Schritt für Schritt verbessert und nun endlich das gewünschte Resultat erzielt.
Wohl mit vielen Umwegen und Rückschritten, aber ich glabue, es hat sich gelohnt
!Vielen Dak für eure Inputs!!!
Liebe Grüsse, nemico