Brauche hilfe bei einem C Programm!



  • Wir nehmen zurzeit in Informatik in der Schule, das Thema Kontrollstrukturen dursch (das mit den schleifen). Jetzt wurde uns die Aufgaben gestellt ein Programm zu schreiben welches aus den zahlen 1-100 alldiejenigen Zahlen auf dem Bildschirm ausgibt die durch 4 Teilbar sind. Ich denek es würde sich eine for schleife anbiten, oder? Kann mir jemand sagen wie es auszusehen hat, mit erklärung wenn es geht?
    lg



  • Hallo,

    der primitivste Ansatz ist wohl:

    Schleife von 1 bis 100
      Wenn Rest der Division von aktueller Zahl durch 4 == 0 ist
        Zahl ausgeben
    

    Das ist nicht viel zum Coden, kannst du fast 1:1 in C übertragen^^

    Edit: Deppen-Fehler behoben *schäm*

    MfG

    GPC



  • GPC schrieb:

    Hallo,

    der primitivste Ansatz ist wohl:

    Schleife von 1 bis 100
      Wenn Ergebnis der Division von aktueller Zahl durch 4 == 0 ist
        Zahl ausgeben
    

    Das ist nicht viel zum Coden, kannst du fast 1:1 in C übertragen^^

    MfG

    GPC

    Na so nicht... so:

    Schleife von 1 bis 100
      Wenn der Rest der Division von aktueller Zahl durch 4 == 0 ist
        Zahl ausgeben
    

    Tipp: Guck mal nach, was der Modulo Operator bedeutet 😉



  • shit^^ 😃



  • #define TEILBAR_DURCH_4(x) !((x)&0x03)
    
    int main (void)
    {
       int s;
       for (s=0; s<100; s++)
          printf ("%d %s\n", s, TEILBAR_DURCH_4(s)?"Ja":"Nein");
    }
    

    🙂



  • Krass, wie ihr das drauf habt... habe leider net viel verstanden, wir haben das thema "Kontrollstrukutren" erst ne halbe stunde durchgenommen. Bitte nochmal!
    lg





  • @Andromeda
    Ich glaub nicht wirklich das ein Gewirr aus Macros und Bitoperationen
    eienn Anfänger weiterbringen. Trotzdem ein schönes Stück Code 😉

    Ok ich erklärs mal ganz langsam und ausführlich

    #include <stdio.h>
    
    int main ()
    {
       int s;                //Deklariert (=bekanntmachen) ein Variable s
       for (s=0; s<100; s++) {
       //s=0 initalisiert (=setzt) die variable s auf 0
       //s<100 die schleife läuft solange s kleiner als 100 ist
       //s++ Nach jedem Durchlauf wird s um 1 erhöht werden
          int mod=s%4; //%=Modulo Operator, er gibt den Rest aus einer Division zurück
                       //bei allen Zahlen die durch 4 teilbar sind also 0.
                       //Das Ergebnis wird der Variablen mod zugewiesen.
    
          if(mod == 0) { //wenn die Variable mod also = 0 ist.
             printf ("%i\n", s); //Dann gebe die Zahl aus (ich hoffe den printf befehl kennst du)
          }
    
       } //hier endet die Schleife
    
       return 0;
    }
    

    Für eine noch ausführlichere Erklärung lies bitte den ersten Link im post obendrüber.



  • Klasse, sehr toll erklärt, dickes Lob 👍 👍 👍 . Ich dürfte es nun auch verstanden haben. Ich habe mich nur auf die lösungen die wir in der shcule machten fixiert und nicht weiter gedacht, das ja auch noch andere dinge einfluss haben! Muss der befehl if denn dabei sein, weil den hatten wir eigentlich definnitiv noch nicht?
    lg



  • Hi, gib alle Vielfachen von 4 aus.

    for(i=(Anzahl der durch 4 teilabaren Zahlen unter 100);i<=(der Zahl von vorhin;i=4*j,j++)
    {
    printf ("%i",i);
    }
    

    Ist zwar sehr statisch, aber enstpricht deinen Ansprüchen (kein if)



  • Oder noch einfacher:

    for(i=0/*oder i=4*/;i<=100;i+=4)
      printf("%d ",i);
    

    (die Zählvariable in der for()-Schleife kann sich bei jedem Schritt beliebig ändern - das muß nicht unbedingt "++i" heißen ;))


Anmelden zum Antworten