Ausgabe einer Zahlenreihe



  • Hallo,

    wir haben in der Schule angefangen mit C zu programmieren und haben folgende Aufgabe bekommen:

    Ausgabe folgender Zahlenreihe: 12,13,24,25,36,37,48,49

    Mein Ansatz sieht so aus:

    #include <stdio.h>
    #include <stdlib.h>

    int main(int argc, char *argv[])
    {

    int i,b;

    for (i=1;i<=49;i++)
    {
    b=i%2;
    if (b==1)
    {
    i=i+11;
    }
    printf("%d,",i);
    };

    system("PAUSE");
    return 0;
    }

    Jedoch bekomme ich damit nicht die richtige Ausgabe. Irgendetwas muss mit meiner Modulo-Berechnung verkehrt sein. Lasse ich mir am ende testweise mal "b" anstatt "i" ausgeben, errechnet er als Modulo immer eine "1".

    Hat vielleicht jemand einen Vorschlag zur Besserung?

    Danke schonmal im Vorraus

    mfg

    didi



  • Wieso beginnst du nicht einfach bei i=12, zählst pro Iteration i += 12 und gibst dann jeweils i und i+1 aus?



  • Geh deinen Code doch einfach mal per Hand durch, dann siehst du den Fehler:
    i=1 => b=1 => i=12 => Ausgabe
    Nächster Schleifendurchlauf (i wird um 1 erhöht)
    i=13 => b=1 => i=24 => Ausgabe



  • 1. Wenn du C lernst, warum postest du dann im C++-Forum? Guckst du hier: http://c-plusplus.net/forum/viewforum-var-f-is-10.html

    2. Der Code ist lesbarer, wenn du ihn in cpp-Tags einschließt.

    3. Nach der schließenden, geschweiften Klammer einer for-Schleife brauchst du kein Semikolon zu notieren.

    4. Gibt's irgendwelche Vorgaben für die Aufgabe? Denn die einfachste Lösung ist eigentlich nur ein Zweizeiler, da brauchst du auch keinen Modulo-Operator (einfach eine Schleife mit 2 printf-Ausgaben und entsprechender Inkrementierung zweier int-Variablen).



  • also eine vorgabe an sich gibt es nicht, der lehrer meinte nur als hilfestellung "versuchts ma mit dem modulo operator".

    auf jeden fall waren einige leute schon fertig und haben es mit dieser methode gelöst, nur versteh ich leider nicht genau wie...

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[])
    {
    
      int i,b;
    
      for (i=12;i<=49;i++)
      {   
          b=i%2;
          if (b==1)
          {
                   i=i+10;
          }
          printf("%d,",i);
      }
    
      system("PAUSE");	
      return 0;
    }
    

    würde ich bei 12 anfangen und 10 addieren, bekomme ich folgende ausgabe:

    12,23,24,35,36,47,48,59

    aufgabenstellung war 12,13,24,25,36,37,48,49



  • Die Idee war ja:

    - i auf 12 setzen

    - i und i+1 ausgeben
    - i um 12 erhöhen
    - goto 2



  • oder so:

    int delta = 1; // zu i im Wechsel 1 und 11 addieren
        for( int i = 12; i < 50; i += delta, delta = 12 - delta )
        {
            cout << i << ","; // bzw.: printf("%d,",i);
        }
        cout << endl;
    

    oder mit modulo:

    for( int i = 12; i < 50; ++i )
        {
            switch( i%12 )
            {
            case 0:
            case 1:
                cout << i << ",";
                break;
            }
        }
        cout << endl;
    


  • mh ok danke für die vielen antworten. habe es nun ohne modulator gemacht, so wie matze es erklärt hatte.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[])
    {
    
      int i = 12;
      while(i<=49)
      {
                  printf("%d,",i);
                  i=i+1;
                  printf("%d,",i);
                  i=i+11;
    
      }
    
      system("PAUSE");	
      return 0;
    }
    

    wir werden nur kurz c programmieren und bald auf c++ umsteigen, also werd ich dieses forum in nächster zeit öfter nutzen, um hilfestellungen zu erhalten.

    also danke schonmal

    didi



  • Du könntest natürlich auch bei der For-Schleife bleiben:

    for ( int i = 12; i < 49; i += 12 )
    	printf( "%d %d ", i, i+1 );
    


  • Für C gibt es trotzdem ein eigenes Unterforum.

    Und erst C, dann C++ (als Add-On) lernen: oh oh, das wird meistens nichts richtiges (denn C und C++ sind zwei völlig unterschiedliche Sprachen, bezogen auf die Herangehensweise). Wie man es hier im Forum schon öfters gesehen hat, wird dann einfach C Code mit einem C++ Compiler benutzt...

    Ich wünsche dir trotzdem viel Erfolg beim Lernen von C++!



  • David_pb schrieb:

    Du könntest natürlich auch bei der For-Schleife bleiben:

    for ( int i = 12; i < 49; i += 12 )
    	printf( "%d %d ", i, i+1 );
    

    Nur, dass die Variablendeklaration im Schleifenkopf mit einem C89-Compiler wahrscheinlich nicht klappt (also wenn du es so machen willst, dididid, da es eine schöne kurze Lösung ist, dann also einfach i vor der Schleife deklarieren).


Anmelden zum Antworten