Schleife (Anfänger)

Tutorials.at
Verfügbare Informationen zu "Schleife (Anfänger)"

  • Qualität des Beitrags: 0 Sterne
  • Beteiligte Poster: Joe - exbs - dani93 - Dirty Oerty - Xin
  • Forum: Tutorials.at
  • Forenbeschreibung: Programmierforum
  • aus dem Unterforum: C / C++
  • Antworten: 13
  • Forum gestartet am: Mittwoch 19.04.2006
  • Sprache: deutsch
  • Link zum Originaltopic: Schleife (Anfänger)
  • Letzte Antwort: vor 16 Jahren, 4 Monaten, 15 Tagen, 4 Stunden, 48 Minuten
  • Alle Beiträge und Antworten zu "Schleife (Anfänger)"

    Re: Schleife (Anfänger)

    Joe - 07.12.2007, 18:43

    Schleife (Anfänger)
    Kann mir jemand sagen mit was für einer Schleife ich diese Aufgabe in c++ am besten löse und wie ich vorgehe?

    Schreibe ein Programm, das in einer Schleife alle Zahlen z
    wischen 1 und 500 ausgibt die sowohl durch 5 als auch durch 2 teilbar sind.

    Gruß Joe



    Re: Schleife (Anfänger)

    exbs - 07.12.2007, 18:56


    Code: for( int x = 1; x < 500; x++)
    {
           if ( ( x % 2  == 0 ) && ( x % 5 == 0 ) )
               printf("%i\n", x);
    }

    Tja, wir haben hier einige echte Fuchse unter uns. Richtig gesehen!

    [edit]@xin, das mit dem sowohl als auch habe ich überlesen!!



    Re: Schleife (Anfänger)

    dani93 - 07.12.2007, 19:37


    Zitat: Code: for( int x = 1; <= 500; x++)
    {
           if ( ( x % 2  == 0 ) || ( x % 5 == 0 ) )
               printf("%i\n", x);
    }

    muss es in der schleife nicht x<=500 heißen? oder hast du das x nur vergessen?



    Re: Schleife (Anfänger)

    Dirty Oerty - 07.12.2007, 20:35


    Ich denke er hat nur das x vergessen.



    Re: Schleife (Anfänger)

    Joe - 07.12.2007, 23:02


    Ein Freund von mir muß folgende Aufgabe lösen!
    Ich hab keine ahnung wie das geht und er auch nicht!!!
    Vielleicht könnt ihr ihm (mir helfen)!!!

    Schreiben Sie ein Programm das eine ganze positive Zahl einliest, sie in ihre einzelnen Ziffern zerlegt und diese in umgekehrter Reihenfolge als Text auf dem Bildschirm ausgibt. Verwenden Sie hierzu eine while-Schleife und eine switch-Anweisung
    -----------------------------------------------------------------------------
    Die Zerlegung müsste ja mit dem % Operator funktionieren !! oder??
    Grülße



    Re: Schleife (Anfänger)

    dani93 - 08.12.2007, 10:57


    also mit switch kenn ich mich nicht aus aber sonst gehts glaube ich so

    Code: #include <stdio.h>
    #include <conio.h>

    int main(void)
    {
     int z, zif;
     printf("Zahl eingeben.\n");
     scanf("%d", &z);   

     while (z!=0)
     {
        zif= z% 10;
        printf("%d", zif);
        z= z/ 10;      
     }

     printf("\n");
     getch();

    }



    Re: Schleife (Anfänger)

    Xin - 09.12.2007, 02:58


    exbs hat folgendes geschrieben:

    Joe hat folgendes geschrieben: Schreibe ein Programm, das in einer Schleife alle Zahlen z
    wischen 1 und 500 ausgibt die sowohl durch 5 als auch durch 2 teilbar sind.

    Code: for( int x = 1; x <= 500; x++)
    {
           if ( ( x % 2  == 0 ) || ( x % 5 == 0 ) )
               printf("%i\n", x);
    }
    500 ist nicht zwischen 1 und 500.
    Und wenn schon so, dann mit &&.
    Und dann wird's unsinnig, weil es wie fahren mit angezogener Handbremse ist. Wer bitte stellt solche Aufgaben!?

    Code:
    for( int x = 10; x < 500; x+=10 )
      printf( "%d\n, x );




    Joe hat folgendes geschrieben: Schreiben Sie ein Programm das eine ganze positive Zahl einliest, sie in ihre einzelnen Ziffern zerlegt und diese in umgekehrter Reihenfolge als Text auf dem Bildschirm ausgibt. Verwenden Sie hierzu eine while-Schleife und eine switch-Anweisung.

    Ich, als studierter und diplomierter Informatiker, der mit Programmierung sein Geld verdient, habe nicht im entferntesten eine begründete Idee, wieso oder überhaupt wie man da eine Switch Anweisung gebrauchen könnte!?
    Was sollt ihr da lernen? Möglichst umständlich zu programmieren!?

    Pack ein if in dani93s Programm, dass sicherstellt, dass die Zahl positiv ist und fertig.



    Re: Schleife (Anfänger)

    Joe - 11.12.2007, 14:00


    Ich soll Z.B die Zahl 23456
    als Sechs fünf Vier Drei Zwei ausgeben!!
    Da macht doch die Switchanweisung sinn damit ich die Zahlen als Wort auszugeben kann!!(natürlich könnte ich dies auch über if ... realisieren)
    Oder liege ich da falsch????



    Re: Schleife (Anfänger)

    Xin - 11.12.2007, 14:48


    Joe hat folgendes geschrieben: Ich soll Z.B die Zahl 23456
    als Sechs fünf Vier Drei Zwei ausgeben!!
    Da macht doch die Switchanweisung sinn damit ich die Zahlen als Wort auszugeben kann!!(natürlich könnte ich dies auch über if ... realisieren)
    Oder liege ich da falsch????
    In Deutschland haben sinnvolle Dinge Sinn, in englischsprachigen Raum wird Sinn erst nachträglich produziert (it makes sense). ^^

    Okay, wenn Du die Zahlen als Wort ausgeben musst, sieht die Sache (etwas) anders aus, aber eine Switch-Anweisung hat weiterhin keinen Sinn und sie produziert auch keinen.

    Code:
    char * ZiffernAlsWort[] = { "null", "eins", "zwei", "drei", "ganz viele", .... }

    int main()
    {
      int ziffer;

      printf( "Ziffer eingeben: " );
      fflush( stdin );
      scanf( "%d", &ziffer );

      printf( "Ziffer %s als Wort: %s\n", ziffer, ZiffernAlsWort[ ziffer ] );
    }


    Es gibt eine Vielzahl sinnvoller Verwendungen für switch. Ich sehe in diesem Programm keine.

    Code:
    char * ZifferAlsWort;
    switch( ziffer )
    {
      case 0:
        Ziffer = "null";
        break;
      case 1:
        Ziffer = "eins";
        break;
      ...
      default:
        Ziffer = "weiß ich nicht";
        break;
    }


    Mehr Aufwand und viele überflüssige Fragen (ist es 0? ist es 1? ist es 2? ...)



    Re: Schleife (Anfänger)

    Dirty Oerty - 11.12.2007, 23:55


    Dafür aber in dem Fall nicht so fehleranfällig.

    Weil was ist wenn ziffer in deinem ersten Beispiel z.b. gleich 12 wird?

    Wenn ichs richtig gelesen und verstanden hab, dann kann da doch für ziffer auch z.b. 2323 geschrieben werden.

    Wobei dieser Fehler auch leicht auszumerzen ist und insgesamt trotzdem besser als das switch ist.

    MfG
    Daniel



    Re: Schleife (Anfänger)

    Xin - 12.12.2007, 00:47


    Dirty Oerty hat folgendes geschrieben: Dafür aber in dem Fall nicht so fehleranfällig.

    Weil was ist wenn ziffer in deinem ersten Beispiel z.b. gleich 12 wird?
    Eine Ziffer kann nicht aus zwei Ziffern bestehen.

    Dirty Oerty hat folgendes geschrieben: Wenn ichs richtig gelesen und verstanden hab, dann kann da doch für ziffer auch z.b. 2323 geschrieben werden.
    2323 ist eine Zahl, bestehend aus vier Ziffern.

    Wenn Du die Ziffern bestimmst, beispielsweise

    Code:
    int ziffer( int zahl, int pos )
    {
      while( pos -- ) zahl /= 10;
      return zahl % 10;
    }


    kann lediglich eine Ziffer von 0-9 als Ergebnis rauskommen.
    Die Lösung sieht vielleicht "fehleranfälliger" aus, aber wie Du siehst ist es kein großes Problem, die zuverlässigkeit des Codes zu garantieren.



    Re: Schleife (Anfänger)

    Dirty Oerty - 12.12.2007, 23:56


    Jaja, klar.

    Ich meinte:

    wenn du
    Code: int ziffer;
    schreibst, dann passt in "ziffer" ja mehr rein als 0-9
    Dann passt da ja auch 3424234 rein.

    Das meinte ich.

    Ich weiß nicht mehr genau, wie das mit dem scanf war:
    Code: scanf( "%d", &ziffer );

    Liest dir das nur EIN Zeichen ein?

    Weil wenn nicht: In "ziffer" (ist ja ein int) gehen ja auch mehrere Ziffern rein. Also auch Zahlen wie z.b. 342. Und wenn du das dann später als Index für deinen Array nimmst dann ist das nicht gerade sicher.

    Hoffe das ist jetzt verständlicher.

    Den Unterschied zwischen einer Ziffer und einer Zahl kenne ich schon^^

    MfG
    Daniel



    Re: Schleife (Anfänger)

    Xin - 13.12.2007, 13:05


    Dirty Oerty hat folgendes geschrieben: Jaja, klar.

    Ich meinte:

    wenn du
    Code: int ziffer;
    schreibst, dann passt in "ziffer" ja mehr rein als 0-9
    Dann passt da ja auch 3424234 rein.
    Richtig. Aber der Zweck eines wohlgeformten Algorithmus' ist wohl auch dafür zu sorgen, dass sich in einer Variable namens Ziffer auch nur eine Ziffer befindet. Als Sicherheitsfanatiker kannst Du Dir auch eine Klasse
    Ziffer schreiben.

    Wenn Du eine Variable Ziffer nennst und speicherst dann etwas ganz anderes darin - zum Beispiel eine Zahl - dann ist das ein semantischer Fehler im Quelltext, den der Compiler nicht finden können, weil Dein Typ die Bedeutung des Namens nicht widerspiegelt.

    Dirty Oerty hat folgendes geschrieben:
    Ich weiß nicht mehr genau, wie das mit dem scanf war:
    Code: scanf( "%d", &ziffer );

    Liest dir das nur EIN Zeichen ein?

    Weil wenn nicht: In "ziffer" (ist ja ein int) gehen ja auch mehrere Ziffern rein. Also auch Zahlen wie z.b. 342. Und wenn du das dann später als Index für deinen Array nimmst dann ist das nicht gerade sicher.
    Das ist liest ein Integer als %d (Dezimalzahl) ein und speichert das in der Integer-Variablen, die Du angibst. Wer allerdings scanf benutzt, kann sowieso nicht davon ausgehen, dass er eine Zahl erhält - ich kann genauso gut "Hallo Welt" mitgeben, was als Integer geparst niemals das repräsentieren kann, was ich eingeben habe.
    In dem Fall gibt es hier drei Fehler:
    1. die Variable heißt Ziffer, obwohl sie eine Zahl enthalten darf. Das ist, wie gesagt, semantisch falsch.
    2. Es wird darauf vertraut, dass der Benutzer etwas Sinnvolles eingibt. Das widerspricht dem gesunden Menschenverstand.
    3. Es wird scanf benutzt. Das widerspricht allen Regeln der Programmierkunst. scanf ist - freundlich ausgedrückt - ein Überbleibsel aus Kompatiblitätsgründen, bösartig gefährlich und weit entfernt von etwas, was man als State of the Art bezeichnen könnte.
    Ich akzeptiere von meinen Schülern ein gut begründetes Goto(!), aber scanf ist ein absolutes No-Go. Das vielleicht als Orientierung, wo scanf als Programmiertechnik einzuordnen ist.

    Wenn ihr Daten braucht, um eure Programme zu testen, gebt die als Parameter mit oder lest Dateien aus. Sobald ihr Datei-Streams verwendet, lassen sich die Programme auch pipen und damit sinnvoll verwenden, selbst wenn sie nur kleine Aufgaben ausführen. Shellprogramme laufen in der Regel ohne Benutzerinteraktion, sondern ein Programm liefert dem nächsten Programm die Information:

    Code:
    dd if=/dev/hda | gzip -c | ssh user@host "cat > image_hda.gz.dd"


    Lese Festplatte hda | packe Daten, die von links kommen | schiebe Daten, die von links kommen an server "host" und führe dort "Schreibe eintreffende Daten als image_hda.gz.dd auf die Platte" aus.

    Auf deutsch: Spiegeln einer Festplatte über das Netzwerk auf einen anderen Computer bei gleichzeitigem Komprimieren.
    Keins der Programme wurde für diesen Zweck geschrieben, aber da die Programme ihre Daten nicht vom User abfragen, lassen sie sich miteinander kombinieren.



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



    Weitere Beiträge aus dem Forum Tutorials.at

    Lottozahlengenerator - gepostet von Mucky am Sonntag 11.02.2007
    Wurzel ziehen - gepostet von Newbie am Donnerstag 06.12.2007
    C# ein Array von Main() ins PaintEvent kopieren - gepostet von :D am Montag 12.06.2006
    Lieblings Tools ? - gepostet von exbs am Dienstag 27.02.2007
    Feststellen, ob taste gedrückt - gepostet von Moritz am Dienstag 16.10.2007
    ersatz für getch() - gepostet von DrPhil_Guth am Freitag 28.07.2006
    % - gepostet von ottiotti am Samstag 07.10.2006



    Ähnliche Beiträge wie "Schleife (Anfänger)"

    Anfänger Quadranten - Johns (Montag 02.07.2007)
    An alle Anfänger! Ich stehe zum abschuss Frei! - Dungeon44 (Dienstag 26.12.2006)
    Anfänger braucht Hilfe - Ploggi074 (Sonntag 13.05.2007)
    welcher Anfänger Heli bis 600 € - heli_neuling (Samstag 23.06.2007)
    Anfänger Dargonfly22E oder Dragonfly 4 - tom_1975AQ (Mittwoch 26.07.2006)
    Hilfe für Anfänger: Antispyware - lucifer (Sonntag 08.05.2005)
    Anfänger aufgepasst! - nofear2004 (Sonntag 02.09.2007)
    TagTeamTurnierBattle/blutige Anfänger vs. Armee der Realität - Kral Tshudo (Samstag 22.07.2006)
    Bin noch Anfänger - STRAKA Klaus (Donnerstag 05.07.2007)
    Df 37 oder Df 36 blutiger Anfänger mit Flächenerfahrung - olegien (Montag 16.10.2006)