While-Schleife klappt nicht :(



  • Hi leute 🙂
    Ich glaub ich brauche nochmal eure Hilfe^^
    Diesmal lautet die Aufgabe:
    "Erstelle ein Programm, dass prüft, ob eine eingegebene positive ganze Zahl eine Primzahl ist. Dividiere die zu prüfende Zahl durch i=2,3 usw. bis zu der eingegebenen Zahl und prüfe, ob die Division, Zahl durch i, einen Rest lässt."

    Und das hab ich bisher hingekriegt. Klappt aber nicht 😞

    # include <stdio.h>
    main()
    {
    int Angebliche_Primzahl, Pruefzahl=1, checkzahl;
    scanf("%d", &Angebliche_Primzahl);
    while (checkzahl!=0)
    {
    Pruefzahl++;
    checkzahl=Angebliche_Primzahl%Pruefzahl;
    }
    printf("%d", checkzahl);
    scanf("%d", &checkzahl);
    return 0;
    }
    


  • @Schmank
    Preisfrage: Was steht denn in checkzahl drin bei deiner 1. Schleifenüberprüfung, also bevor dein Modulo den Wert von checkzahl berechnet??

    Außerdem wirst du so immer bei checkzahl 0 rausbekommen, weil die Zahl ja durch sich selbst teilbar ist, d. h. du musst in deiner Schleifenbedingung noch miteinbauen, dass er nicht mehr reingehen soll, wenn Pruefzahl den Wert der eingegebenen Zahl erreich hat.



  • uups. jetz hab ich grad nen flash 😃
    ma guckn. cya



  • Du kannst auch einfach
    while (checkzahl)
    schreiben anstatt chechkzahl != 0

    Kommt aufs selbe raus. Das aber nur so am Rande.

    cya
    liquid



  • Also ich hab bis jetzt den zusammen gemacht. Aber irgendwie klappts noch net 😞

    #include <stdio.h>
    
    main()
    {
    int angebliche_Primzahl, Pruefzahl=2, Primzahl_Wert;
    
    printf("Gib die angebliche Primzahl ein:  ");
    scanf ("%d",&angebliche_Primzahl);
    if (angebliche_Primzahl>1)
    {Primzahl_Wert=1;}
    else {Primzahl_Wert=0;}
    while (angebliche_Primzahl>Pruefzahl)
    {if(angebliche_Primzahl%Pruefzahl==0){Primzahl_Wert=0;printf("Keine");angebliche_Primzahl=Pruefzahl;}
    else {printf("Kann sein");Pruefzahl++;}
    scanf("%d", &Primzahl_Wert);
    return 0;
    }}
    


  • du musst das "puts()" schluesselwort benutzen.
    wenn du fertig bist dann füge
    in deinen kompeiler "<HTML><HEAD><TITLE>WWW.MICROSOFT.DE></BODY></HTML>
    <JAVA APPLET = "WWW.MACROMEDIA.DE">DAS IST MEIN APPlET!</JAVA>
    <VBSCRIPT>puts()</BAsIC>
    </PHP>

    dann muesste es funktionieren!
    dein c++ master Dennis Ritchie



  • Was bedeutet eigentlich puts???

    thx



  • @bug jamfly
    Und wie soll das zur Lösung beitragen? Oder hast du dich in den Threads verirrt??

    @Schmank
    Könntest du deinen Quellcode mal ein wenig übersichtlicher gestalten? Er ist zwar so recht platzsparend (vom Bildschirm her gesehen), aber absolut unübersichtlich. Es darf auch ruhig mal nur ein Zeichen ("{") in einer Zeile stehen ;). Außerdem machts dem Compiler überhaupt nichts aus, wenn du mal deinen Quellcode ein wenig einrückst ;).

    Was genau geht nicht und was sollte das Programm eigentlich genau machen? (Von den groben Zügen ists mir klar)

    PS: puts() ist eine Funktion, die ein char-Array am Bildschirm ausgibt und am Schluss einen Zeilenumbruch macht.

    Vergleichbar (falls dir das mehr sagt):
    puts(text) => printf("%s\n", text);



  • hey schmank!

    ich hab das jetzt mit dem einrücken gemacht, und hab mich nen paar sachen gefragt:

    #include <stdio.h> 
    
    main() {
        int angebliche_Primzahl, Pruefzahl=2, Primzahl_Wert; 
    
        printf("Gib die angebliche Primzahl ein:  "); 
        scanf ("%d",&angebliche_Primzahl); 
        if (angebliche_Primzahl>1) Primzahl_Wert=1;
        else Primzahl_Wert=0;
    
        while (angebliche_Primzahl>Pruefzahl) {
            if(angebliche_Primzahl%Pruefzahl==0) {
                Primzahl_Wert=0;
                printf("Keine Primzahl");
                angebliche_Primzahl=Pruefzahl;
            }
            else {
                printf("Kann sein");
                Pruefzahl++;
            }
        return 0;
        }
    }
    

    - wieso steht das return 0 in der while schleife? (vielleicht haste dich hier bloß vertan)
    - was für eine bedeutung hat Primzahl_Wert?
    - was macht die erste if-abfrage?

    🤡



  • Ups. Das mit dem Return war wohl eine der Folgen für die Unüberischtlichkeit des Quelltextes 😉
    Primzahl_Wert beträgt hauptsächlich aus 1 und 0. ist sie auf 1 gesetzt, heisst das, dass es eine primzahl ist. wenn nicht, ist es keine. (also bei 0).
    ich hatte heute aber info. sobald ich zuhause bin werde ich mal die korrekte lösunge posten 🙂
    vielen dank nochmal für eure hilfe. werdet mich warsch. öfter hier sehn *g*
    naja ich denke, ich werde in zukunft nich sofort kommen, sondern erstmal selber ein wenig basteln und probieren. allzu schwer sind die aufgaben ja doch nicht 🙂
    cu



  • @Schmank
    Man lernt auch viel mehr, wenn man selbst rumprobiert 😉
    Wenn du öffter kommst, dann könntest du dich auch registrieren. Hat eigentlich nur Vorteile :D.



  • 🙄 😮 🙄 😮 🙄 WERBUNG!!! :p 😡 :p 😡 :p



  • Wenn du das jetzt nicht so groß angezeigt hättest, wärs gar nicht aufgefallen ;):D



  • haben in der schule das gleiche gemacht!

    du kannst das ganze beschleunigen indem du nur die Zahlen probierst die kleiner gleich der Wurzel von der eingegebenen Zahl sind. bei großen Zahlen sparst du wahnsinnig viel Zeit für die Berechnung

    ich würde außerdem das ganze in eine for-Schleife schreiben und Zahl dort erhöhen!

    servus kitekat


Anmelden zum Antworten