Geschachtelte Schleifen

Tutorials.at
Verfügbare Informationen zu "Geschachtelte Schleifen"

  • Qualität des Beitrags: 0 Sterne
  • Beteiligte Poster: Kimi - wirthi - DrPhil_Guth - Xin
  • Forum: Tutorials.at
  • Forenbeschreibung: Programmierforum
  • aus dem Unterforum: C / C++
  • Antworten: 8
  • Forum gestartet am: Mittwoch 19.04.2006
  • Sprache: deutsch
  • Link zum Originaltopic: Geschachtelte Schleifen
  • Letzte Antwort: vor 16 Jahren, 4 Monaten, 22 Tagen, 13 Stunden, 37 Minuten
  • Alle Beiträge und Antworten zu "Geschachtelte Schleifen"

    Re: Geschachtelte Schleifen

    Kimi - 29.11.2007, 18:38

    Geschachtelte Schleifen
    Hi ich will mit hilfer der Schleife folgendes hinbekommen:


    http://img100.imageshack.us/my.php?image=geschachtelteschleifegk6.jpg

    Wie auf dem Bild zu sehen ist möchte ich das kleine Einmal Eins mit hilfe der Schleife for mal probieren.

    Da hatte ich mir folgendes gedacht und dies sollte eigentlich auch funktionieren aber meine eigentliche frage ist: Sollte ich mit x++ bzw y++ arbeiten in der for Bedingung oder ist es besser wenn ich statt dieses "y++ bzw. x++" mit "x=x+1 bzw. y=y+1" arbeite.

    Danke

    Code: #include <stdio.h>
    main()
    {
       int x,y;
       for (x=1; x<=10; x=x++) // äußere Schleife
             {
    printf("\n");
       for (y=1; y<=10; y=y++) //innere Schleife
       printf("%4i", x*y);
    }
       getch();
    }



    Re: Geschachtelte Schleifen

    wirthi - 29.11.2007, 19:34


    Ob du x++ oder x=x+1 schreibst, ist egal, da kommt das gleiche dabei heraus.

    Im hier veröffentlichen Codestück schreibst du aber x=x++; Das stimmt nicht, weil:

    Damit würde (das rechte) x ausgewertet und zurückgegeben werden. Dann wird x erhöht; der zurückgegebene Wert wird dann x zugewiesen. In Summe bleibt x also gleich; der erhöhte Wert wurde durch die Zuweisung vernichtet.



    Re: Geschachtelte Schleifen

    DrPhil_Guth - 29.11.2007, 19:39


    Du könntest eigentlich mit beiden arbeiten. Womit du allerdings nicht arbeiten solltest ist die Mischform, denn die funktioniert zwar in diesem fall, aber es sieht verwirrend aus.

    die anweisung
    x++;
    bringt das selbe ergebnis wie
    x = x + 1;

    x++; ist allerdings kürzer und meiner Meinung nach verdeutlicht sie, dass der Wert inkrementiert wird.

    Ein kleines Wörtchen noch zu Pre- oder Post inkrement. (++x, x++):
    Was am ende herausschaut ist das gleiche: sie erhöhen die Zahl um eins. Der einzige unterschied besteht im rückgabewert. Denn beim pre- inkrement wird die erhöhte Zahl zurückgegeben, beim Post inkrement die ursprüngliche. Aber, ich warne vor solchen konstrukten wie x = x++ + ++x; oder ähnlichem: Das ist erstens Compilerabhängig und nicht definiert, wie das gelesen wird und zweitens vollkommen Sinnlos, und man sollte nicht seine Zeit damit verschwenden sich darüber gedanken zu machen.

    ps.:
    es heißt
    Code: int main()
    {

    return something;
    }
    und nicht void main(), auch nicht nichts main(). Außerdem muss die main funktion etwas zurückgeben, das bedeutet ein return statement muss drinnen sein!



    Re: Geschachtelte Schleifen

    Kimi - 29.11.2007, 21:33


    Jepp hatte oben vergessen das x= weg zumachen, Sorry.

    Aber ne frage noch zu den main().
    Unser Lehrer meinte wir sollten es so handhaben bzw. uns so angewöhnen das wir main() nehmen.


    Hmmm jetzt bin ich bissle durcheinander.



    Re: Geschachtelte Schleifen

    DrPhil_Guth - 30.11.2007, 14:11


    Naja, vielleicht solltest du mal fragen wieso ihr main so handhaben solltet. Nur im C- Standard steht, die main funktion soll einen integer wert zurückgeben und entweder keine oder char** und int als paramter erwarten.
    Alles andere sollte einen Fehler oder eine Warnung ergeben.
    Übrigens würde ich das wirklich gerne wissen, wieso das oft so unterrichtet wird, also wäre nett wenn du fragst und seine Antwort dann postest.



    Re: Geschachtelte Schleifen

    Kimi - 30.11.2007, 14:53


    Ok ich werde unseren Prof am Mittwoch wenn er denn dann wieder gesund ist fragen, momentan ist er krank und ich kann mein bisherigen stoff mehr festigen.

    Danke nochmal.



    Re: Geschachtelte Schleifen

    wirthi - 30.11.2007, 17:39


    DrPhil_Guth hat folgendes geschrieben: Übrigens würde ich das wirklich gerne wissen, wieso das oft so unterrichtet wird, also wäre nett wenn du fragst und seine Antwort dann postest.
    IIRC war's unter Turbo C kein Problem, das int nicht zu schreiben (und wohl auch bei anderen Compilern. Mir wurde es mit eben dieser Begründung (vor fast 10 Jahren) in der Schule deshalb auch gelehrt, dass es egal ist, ob man void main oder int main verwendet - mit dem Beisatz, dass das nur für unseren Compiler gilt, nicht etwa aber für gcc.



    Re: Geschachtelte Schleifen

    Xin - 01.12.2007, 14:00


    Kimi hat folgendes geschrieben: Jepp hatte oben vergessen das x= weg zumachen, Sorry.

    Aber ne frage noch zu den main().
    Unser Lehrer meinte wir sollten es so handhaben bzw. uns so angewöhnen das wir main() nehmen.

    Hmmm jetzt bin ich bissle durcheinander.
    Subjektve Antwort, da ich keinen Beleg weiß und auch keine Lust habe danach zu suchen...

    Soweit ich weiß, ist "resulttype function()" in C/C++ auch in Ordnung und nicht gegen den Standard. In Java ist "resulttype function( void )" sogar verboten. Allerdings ist die Deklaration "resulttype function( void )" in C/C++ guter Stil, die leeren Klammern eher weniger.

    "main()" stammt noch aus K&R C.

    Dort waren Funktionen, die keinen Typ angegeben hatten, automatisch int. Noch heute geben beim Aufruf nicht deklarierter Funktionen manche Compiler eine Fehlermeldung wegen ungültigen Castens von int auf irgendwas raus, statt zu sagen, dass die Funktion nicht existiert. Was (noch) nicht deklariert ist, gibt schließlich int zurück.

    Die leeren Klammen kommen daher, dass man im veralteten K&R C-Dialekt die Datentypen nicht in den Klammern angab:

    Code:
    main (argc, argv)          // Kerningham & Ritchie - C - Dialekt --- seit 20 Jahren VERALTET!
    int   argc;
    char  *argv[];
    {
      ..
    }


    Hatte man keine Argumente, waren die Klammern entsprechend leer. K&R-C ist allerdings Vergangenheit und heutzutage gilt es als guter Stil K&R zu meiden und das drückt man auch aus, in dem man keine leeren Klammern verwendet, sondern nach modernem C mit void klarstellt, dass es keine Argumente gibt.

    Inzwischen wird die Zahl der aktuellen Compiler, die K&R noch akzeptieren auch immer kleiner. Die leeren Klammern nicht zu akzeptieren wird sich aber vermutlich keiner wagen.

    Da Ritchie C entwickelt hat und Kerningham die Bibel dazu geschrieben hat, gibt es immernoch Leute, die das Buch von Kerningham als das einzig wahre C Buch huldigen und somit war K&R-C lange Zeit das breit akzeptierte Standard C.
    Selbst in aktuellen Auflagen von Kerninghams Buch gibt's kein K&R C mehr. Nach heutigen Programmier-Standards ist K&R-C ganz einfach falsch.



    Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken



    Weitere Beiträge aus dem Forum Tutorials.at

    Fragen/Kritik zum C++ Tutorial - gepostet von progger am Freitag 25.08.2006
    Feststellen, ob taste gedrückt - gepostet von Moritz am Dienstag 16.10.2007
    Frage 1.Kapitel - gepostet von Madless am Dienstag 11.09.2007
    Compiler? - gepostet von Thunderbird am Montag 03.07.2006
    Hey - gepostet von silver am Sonntag 31.12.2006
    ich kann mein programm nicht compilen - gepostet von absoluter noob tith am Dienstag 25.07.2006
    MP3 TAGS ? - gepostet von exbs am Donnerstag 04.01.2007
    Knifflige fehler im kleinem programm - gepostet von aimheld am Samstag 23.09.2006
    In welchen Programmiersprachen programmiert ihr? - gepostet von ggspp am Montag 15.05.2006



    Ähnliche Beiträge wie "Geschachtelte Schleifen"

    Schleifen Programm - Kimi (Samstag 01.12.2007)
    Schleifen - Sydney (Sonntag 29.10.2006)
    Angrosh kann euch Steine Schleifen - Angrosh (Dienstag 08.01.2008)
    Schneidern, Verzaubern, Schleifen und Brauen :) - Jolîe (Montag 18.06.2007)
    schleifen? - rthrued (Dienstag 10.07.2007)
    peifen? schleifen? - panaleman (Donnerstag 26.04.2007)
    Diplomatie - aorhad (Freitag 15.02.2008)
    schleifen? - fiosfee (Donnerstag 15.06.2006)
    Schleifen?! - Farina (Donnerstag 18.01.2007)
    Rosa Schafe? Karierte Schleifen? - Engel der Nacht (Donnerstag 24.08.2006)