Ganze Teiler



  • Hallo,
    gleich der Code. 😉

    #include <stdio.h>
    
    int main()
    {
        int x,c,z;
        printf("Geben sie bitte eine Zahl ein dessen Teiler sie suchen:");
        scanf("%d\n",x);
        c=0;
    
        while(c != 8)
        {
                c++;
                z = x%c;
                if(z==0 && c!=1 && c!=x)
                {
                       printf("%d\n",c);
                }    
        }
        getchar();
    }
    

    Ich versuche mit diesen Programm alle Zahlen finden zu lassen die ganze Teiler von 6 sind. Ausgenommen 1 und die Zahl selbst. Demzufolge 2 und 3. Später soll das Programm erweitert werden für beliebe Zahlen. Nur jetzt zum Problem. Das Programm stürzt dauernd ab. 😞
    Ich benutze den DEV-C++ Compiler .
    MfG und vielen dank um jede Hilfe im voraus.
    Ernd



  • du solltest mal \n bei scanf rausnehmen...

    auserdem fehlt ein & bei scanf vor dem x 😉



  • http://www.cppreference.com/stdio/scanf.html

    @cmampf: kaust denen wohl alles vor, ne? dabei lernen die aber garnichts, ne?



  • wieso? ich würde mich auch über richtige hilfe freuen und nicht nur ein link...



  • vorkauen ist so komfortabel, dass der OP dabei rein garnichts lernt

    ein link reicht. glaub mir. sowas nennt sich hilfe zur erleuchtung.



  • schon mal was gehört wie: Aus Fehlern lernt man 😉

    Außerdem glaube ich nicht, dass auf der Seite steht: Du darfst kein \n in scanf reinmachen.... und diesen Fehler machen sehr viele nun einmal am Anfang



  • ist \n nicht erlaubt? bist du da sicher? kannst du das beweisen?



  • Hallo,
    👍
    C-Mampf vielen dank für deine Hilfe! Jetzt wo du es mir wieder gesagt hast ist es mir auch wieder eingefallen. Ich denke mein Problem war nur das ich eine zu große Pause eingelegt habe.
    👎
    crackwitz, denk daran das du auch einmal ein n00b warst. Ich fang jetzt nicht an dich zu beleidigen wobei es jetzt angebracht wäre!

    Freundliche Grüße an Alle



  • Wie so fängst du nicht gleich mit c=2 an, da du c=0 ja gleich erhöhst und c=1 abfängst. (ein sinnloser Durchlauf gespart)
    Was soll das mit c != 8? Teiler sind doch immer kleiner als als die Zahl.

    c=2;
      while(c < x) // immer kleiner als x
      {
         if( ( x%c ) ==0 ) // nur dieser Fall noch wichtig
           {
              printf("%d\n",c);
           }
         c++; // erst nach Ende erhöhen.
      }
      getchar();
    }
    


  • Ich habe erstmal die Zahl 6 gesucht. Dieser Algorithmus soll in einer späteren Programm ,das vollkommene Zahlen sucht, also Funktion dienen. Ich habe mir darüber keine gedanken gemacht da das Programm sowieso nur so wenig Resourcen frist. Natürlich hast du recht das es ein sinnloser durchlauf war aber mit einen 2100+ kann man sich das ja schon mal erlauben 😉 . c=2 ist eine gute idee da 1 ja sowieso immer nat. Teiler einer beliebigen Zahl ist. Ich habe mir dann vorgestellt das x immer um 1 erhöht wird. Eine endlos Schleife dort reinzubasteln wäre natürlich auch nicht so fein. Also vorrübergehend eine Beschränkung auf 8. Ich muss noch sagen deine Variante mit

    if((x%c)==0)
    

    gefällt mir sehr.
    Also im großen und ganzen könnte man sagen das dies nur eine beta version war die noch wesentlich ausgebaut werden muss (sollte).
    Simon



  • c.rackwitz schrieb:

    ist \n nicht erlaubt? bist du da sicher? kannst du das beweisen?

    also bei mir funktioniert es dann nicht, weil ein Fehler angezeigt wird 😉


Anmelden zum Antworten