[gelöst] Auf Teilbarkeit in einem Breich prüfen



  • Hi!

    Ich habe folgendes Programm geschrieben, welches eine eine eingegebene Zahl auf Teilbarkeit durch 13 prüft:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main (void)
       {
        int i, quotient;
    
        printf("Geben Sie eine beliebige Zahl ein! \n");
        scanf("%d",&i);
        fflush(stdin);
    
        quotient=i%13;
    
        if (quotient==0) {
            printf("\nZahl ist durch 13 teilbar!!");
        }
        else
        {
             printf("\nZahl ist nicht durch 13 teilbar!!");
        }
    
        getchar();
        return(1);
    }
    

    Nun möchte ich aber, dass das Programm in dem Bereich -1000 bis 1000 prüft ob dort Zahlen durch 13 teilbar sind und diese Zahlen dann ausgibt.

    Ich weiß dass ich das mit einer Zählschleife der Form

    for(i=-1000; i < 1001; i++)
    

    machen muss. Aber wie muss ich die in mein Programm bringen?

    Danke!!!

    Gruß

    lakul



  • lakul38 schrieb:

    Nun möchte ich aber, dass das Programm in dem Bereich -1000 bis 1000 prüft ob dort Zahlen durch 13 teilbar sind und diese Zahlen dann ausgibt.

    vielleicht so: du lässt die schleife bei der ersten, durch 13 teilbaren zahl, die grösser ist als -1000 is, anfangen. dann zählst du immer 13 dazu. wenn der schleifenzähler >= 1000 ist, biste fertig.
    🙂



  • OK, ich habe es jetzt so gelöst:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main (void)
       {
        int i;
    
        for(i=-1000; i < 1001; i++)
        if (i%13==0) {
            printf("%d\n", i);
        }
        return(0);
    }
    


  • #include <stdio.h>
    #include <stdlib.h>
    
    int main (void)
       {
        int i;
    
        printf ("0\n");
        for(i=13; i <= 988; i+=13)
        {
            printf("%d\n%d\n", i, -i);
        }
        return(0);
    }
    


  • Ist das eine weitere Möglichkeit, oder ist meines falsch?

    Gruß



  • lakul38 schrieb:

    Ist das eine weitere Möglichkeit, oder ist meines falsch?

    das sieht wie 'ne abkürzung aus. nur die reihenfolge stimmt nicht. aber vielleicht ist die auch gar nicht wichtig.
    🙂



  • Dein programm testet alle zahlen von -1000 bis +1000 durch, das programm von Optimizer gibt einfach alle zahlen, die durch 13 teilbar sind aus (da man sehr schnell einsieht, dass jede 13te zahl durch 13 teilbar ist... d.h. man gibt einfach 0 aus, dann gibt man +13 und -13 aus, dann gibt man +26 und -26 aus, und so weiter).
    Der unterschied zw. euren programmen ist, dass du wirklich testet, ob das durch 13 teilbar ist. Optimizer hat erstmal nachgedacht welche zahlen durch 13 teilbar sind, und hat dann ein Programm geschrieben, das genau diese zahlen ausgibt...

    Zwei unterschiedliche ansätze liefern aber beide das selbe resultat 😉



  • Jocker16 schrieb:

    Optimizer hat erstmal nachgedacht welche zahlen durch 13 teilbar sind, und hat dann ein Programm geschrieben, das genau diese zahlen ausgibt...

    das programm ist aber total unflexibel. da hätte gleich 'n array mit konstanten nehmen können. besser wär's, wenn die erste zahl gesucht wird, und dann mit +13 bis zur obergrenze weitergezählt wird.
    🙂


Anmelden zum Antworten