Phade Geschrieben 24. November 2004 Autor Geschrieben 24. November 2004 Ok, habe das jetzt mal so geschrieben: #include <iostream> // Headerdatei using namespace std; int main () { int eingabe; // Deklaration der Ein- und Ausgabe int zaehler; // Deklaration des Zählers cout << "Bitte geben Sie eine beliebige Zahl ein: "; cin >> eingabe; // Einlesen der Eingabe mit cin for(int zaehler=2; zaehler<=eingabe-1; zaehler++) { if(eingabe % zaehler == 0) // Wenn das zutrifft, dann tue das { cout << "\n\nDie Zahl ist eine Primzahl!" << endl; // Anweisung } else // Wenn nicht, dann tue das { cout << "\n\nDie Zahl ist KEINE Primzahl!" << endl; // Anweisung } } return 0; } Komisch ist nur, wenn ich nun das Programm laufen lasse, gibt es mir beide Ausgaben wieder. Also die if und die else Ausgabe.... Zitieren
Klotzkopp Geschrieben 24. November 2004 Geschrieben 24. November 2004 Wenn du das wirklich komisch findest, hast du nicht verstanden, was du da selbst geschrieben hast. Schau dir den Algorithmus nochmal an. Simuliere den Ablauf deines Programms Schritt für Schritt mit Papier und Bleistift. Nachdenken, nicht Rumprobieren. Wenn du einen Zähler gefunden hast, durch den eingabe teilbar ist (if), ist eingabe keine Primzahl. Aber nur weil du einen Zähler gefunden hast, durch den eingabe nicht teilbar ist (else), ist eingabe noch lange keine Primzahl. 25 ist nicht durch 3 teilbar. Ist 25 deswegen eine Primzahl? Dass eingabe eine Primzahl ist, kannst du erst feststellen, wenn die Schleife durchgelaufen ist. Die Ausgabe "Die Zahl ist eine Primzahl" kann also nicht in der Schleife stehen. Zitieren
Phade Geschrieben 24. November 2004 Autor Geschrieben 24. November 2004 Ich finde das echt super, dass du mich so darauf Trainirst, selber darüber nachzudenken, wie, warum, weshalb....ich das so schreiben muss und nicht anders !!!! :uli Doch zu meiner SChande muss ich gestehen, das ich aus dem letzten Beitrag nicht so richtig schlau werde...kannst du es irgendwie genauer andeuten???? Zitieren
Klotzkopp Geschrieben 24. November 2004 Geschrieben 24. November 2004 Ich finde das echt super, dass du mich so darauf Trainirst, selber darüber nachzudenken, wie, warum, weshalb....ich das so schreiben muss und nicht anders !!!! :uli Das ist reiner Eigennutz. Wenn du selber denken kannst, brauchst du später weniger Hilfe, und kannst dafür anderen helfen -> weniger Arbeit für mich. Doch zu meiner SChande muss ich gestehen, das ich aus dem letzten Beitrag nicht so richtig schlau werde...kannst du es irgendwie genauer andeuten????Das ist überhaupt keine Schande. Ob eingabe eine Primzahl ist, hängt davon ab, ob wir einen Zähler finden, durch den eingabe teilbar ist. Finden wir keinen, ist es eine Primzahl. Finden wir einen (oder mehrere), ist es keine. Soweit klar? Wir könnten uns in einer weiteren Variablen merken, ob wir einen Teiler gefunden haben. Wir setzen die Variable zu Beginn auf false, und wenn wir einen Teiler finden, setzen wir sie auf true. Ansonsten machen wir gar nichts. Setz das bitte mal um. Zitieren
Phade Geschrieben 24. November 2004 Autor Geschrieben 24. November 2004 Ob eingabe eine Primzahl ist, hängt davon ab, ob wir einen Zähler finden, durch den eingabe teilbar ist. Finden wir keinen, ist es eine Primzahl. Finden wir einen (oder mehrere), ist es keine. Soweit klar? Ist klar! Wir könnten uns in einer weiteren Variablen merken, ob wir einen Teiler gefunden haben. Wir setzen die Variable zu Beginn auf false, und wenn wir einen Teiler finden, setzen wir sie auf true. Ansonsten machen wir gar nichts. das kann ich nicht nachvollziehen..... :confused: Ich würde zumindest diese Variable in die erste if Bedingung schreiben?.?.?.?. und zwar so: int var(0); aber weiter weiß ich noch nicht..... Zitieren
Klotzkopp Geschrieben 24. November 2004 Geschrieben 24. November 2004 Ich würde zumindest diese Variable in die erste if Bedingung schreiben?.?.?.?.Genau. Ich geb mal "Starthilfe". Ich habe meine Textbeschreibung von eben in Code umgesetzt. Versuch mal, das nachzuvollziehen. #include <iostream> using namespace std; int main () { int eingabe; cout << "Bitte geben Sie eine beliebige Zahl ein: "; cin >> eingabe; // Wir setzen die Variable zu Beginn auf false bool teilergefunden = false; for(int zaehler=2; zaehler<=eingabe-1; zaehler++) { // und wenn wir einen Teiler finden, if(eingabe % zaehler == 0) { // setzen wir sie auf true. teilergefunden = true; } else { // Ansonsten machen wir gar nichts. } } // Jetzt müssen wir nur noch die Variable auswerten... return 0; }[/CODE] Beim letzten Kommentar bist du jetzt wieder am Zug. Zitieren
Phade Geschrieben 24. November 2004 Autor Geschrieben 24. November 2004 Ok, hier ist mein Vorschlag. Ich würde jetzt schreiben: if(teilergefunden = true) { cout << "Die Zahl ist eine Primzahl!" << endl; } Diese Lösung erscheint mir als sinnvoll....... Zitieren
Klotzkopp Geschrieben 24. November 2004 Geschrieben 24. November 2004 if(teilergefunden = true) Vorsicht, das ist eine Zuweisung, kein Vergleich. Diese Lösung erscheint mir als sinnvoll....... Probier's aus. Zitieren
Phade Geschrieben 24. November 2004 Autor Geschrieben 24. November 2004 Vorsicht, das ist eine Zuweisung, kein Vergleich. Probier's aus. Ok, habe ich gerade bemerkt. es muss sein == (!!) und ich müsste nicht true, sonder false schreiben???!!! Zitieren
Klotzkopp Geschrieben 24. November 2004 Geschrieben 24. November 2004 Ok, habe ich gerade bemerkt. es muss sein == (!!) und ich müsste nicht true, sonder false schreiben???!!! Das, oder den Text ändern. Ein Tipp: if(teilergefunden == true) entspricht if(teilergefunden) if(teilergefunden == false) entspricht if(!teilergefunden) Zitieren
Phade Geschrieben 24. November 2004 Autor Geschrieben 24. November 2004 Habe das Programm jetzt mal so geschrieben.... #include <iostream> using namespace std; int main () { int eingabe; cout << "Bitte geben Sie eine beliebige Zahl ein: "; cin >> eingabe; // Wir setzen die Variable zu Beginn auf false bool teilergefunden = false; for(int zaehler=2; zaehler<=eingabe-1; zaehler++) { // und wenn wir einen Teiler finden, if(eingabe % zaehler == 0) { // setzen wir sie auf true. teilergefunden = true; printf("\nGefundener Teiler: %i \n", zaehler); // Hier wollte ich mir die Teiler noch ausgeben lassen...leider nur mit printf...cout habe ich nicht gefunden..... } else { // Ansonsten machen wir gar nichts. } } // Jetzt müssen wir nur noch die Variable auswerten... if(teilergefunden == false) { cout << "\nDie eingegebene Zahl, ist eine Primzahl!\n" << endl; } else { cout << "\nDie eingegebene Zahl, ist keine Primzahl!\n" << endl; } return 0; } Vielleicht kannst du mir ja noch den cout-Befehl für die Teilerausgabe sagen, die die ich versucht habe, hat nicht gefunzt :confused: . Deshalb habe ich printf genommen....... Ich bedanke mich trotzdem bei dir, für die Geduld und Hilfe!! :uli :uli :uli Bis dännchenmal und nochmal THANX.!.!.!.! Zitieren
Klotzkopp Geschrieben 24. November 2004 Geschrieben 24. November 2004 cout << "\nGefundener Teiler: " << zaehler << "\n"; Und bitte if(!teilergefunden) statt if(teilergefunden == false) Zitieren
Phade Geschrieben 24. November 2004 Autor Geschrieben 24. November 2004 Habe es noch geändert. War zwar eine schwere 'Geburt', aber es hat auch irgendwie spaß gemacht !!! :OD Ich kann mich gar nicht oft genug bedanken. Es hätte sicherlich nicht jeder so lange durchgehalten wie du !!! :uli Nochmal thanx.... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.