Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

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....

  • Antworten 62
  • Ansichten 12.3k
  • Erstellt
  • Letzte Antwort

Top-Poster in diesem Thema

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.

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????

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. :)

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.....

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. ;)

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.......

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???!!!

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)

Habe das Programm jetzt mal so geschrieben.... :D


#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.!.!.!.!

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....

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.