none
Code RRS feed

  • Frage

  •  for (int i = 33; i < 128; i++)
                {
                    for (int x = 0; x < 8; x++)
                    {
                        Console.Write(i +  " = ");
                        Console.Write(Convert.ToChar(i));
                        Console.Write(" ");
    
                    }
                    Console.Write("\n");
                }
    
                Console.ReadKey();
    Ich krieg es nicht hin das er weiter zählt also das er nicht 34 = !   7 mal hintereinader macht sondern weiter macht mit 35  und wenn er die Reihe vervollständigt hat  geht er in die zweite und macht solang bis 127 
    Dienstag, 11. November 2014 09:49

Antworten

  • Hallo zusammen,

    Schreibe ein Programm mittels Schleifen. Es sollen alle ASCII-Zeichen mit den dazugehörenden Dezimalwerten auf dem Bildschirm ausgegeben werden.

    Die Aufgabe gestattet somit nur Schleifen und keine if-Anweisungen. Du kannst mit dem folgenden Codeausschnitt probieren:

    for (int j = 33; j < 128; j+=8 )
    {
        for (int i = j; (i<j+8)&&(i<128); i++)
        {
            Console.Write(i + " = ");
            Console.Write(Convert.ToChar(i));
            Console.Write(" ");
        }
        Console.Write("\n");
    }
    Console.ReadKey();

    Hier ist die obere Grenze 127. Wenn Du auch 128 mit einschließen willst, kannst Du &&(i<128) auslassen. Eine if-Anweisung ist jedoch lesbarer und üblicher (und schneller).

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.



    Dienstag, 11. November 2014 15:43
    Administrator
  • Hallo Artur,

    In der inneren Schleife (wo der Wert von a erhöht wird) machst Du von der Variable i keinen Gebrauch. Es soll i auch in die Berechnung mit einbezogen werden:

                        Console.Write(a*i + " ");

    Wenn i nicht erwähnt wird, druckst Du nur a aus, das die Werte von 1 bis 10 durchläuft. Es soll aber das Produkt der beiden Zahlen ausgedruckt werden.

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    • Als Antwort markiert Arthur222 Mittwoch, 12. November 2014 11:58
    Mittwoch, 12. November 2014 11:46
    Administrator

Alle Antworten

  • Hi,

    welche Reihe?

    Dein Code durchläuft jeden Wert der äußeren Schleife 8 mal, da die innere Schleife das so vorgibt. Wenn Du die innere Schleife nicht brauchst, lass sie einfach weg.

    Solltest Du aus irgendeinem Grund nach 8 Durchläufen der äußeren Schleife"\n" ausgeben wollen, mach das so:

    int counter = 0;
    for (int i = 33; i < 128; i++)
    {
        Console.Write(i +  " = ");
        Console.Write(Convert.ToChar(i));
        Console.Write(" ");
    
        counter++;
        if( counter % 8 == 0 )
        {
            Console.Write("\n");
        }
    }
    Console.ReadKey();
    


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert Arthur222 Dienstag, 11. November 2014 10:09
    • Tag als Antwort aufgehoben Stefan FalzModerator Dienstag, 11. November 2014 17:01
    Dienstag, 11. November 2014 10:01
    Moderator
  • Hay Stefan .

    genauso so wollt ich ausgeben , nur mit einer for schleife  also ohne if würde das überhaupt gehen ? 

    gruß Artur 

    Dienstag, 11. November 2014 10:05
  • Hallo Artur,

    gehen würde das schon aber warum sollte man das machen? Denn bessere Lesbarkeit bedeutet das nicht und irgendeinen anderen Vorteil sehe ich da auch nicht. Aber der Vollständigkeit halber dennoch mal ein solches Beispiel.

    int counter = 0;
    for (int i = 33; i < 128; i++)
    {
        Console.Write(i +  " = ");
        Console.Write(Convert.ToChar(i));
        Console.Write(" ");
    
        counter++;
        Console.Write( counter % 8 == 0 ? "\n" : "" );
    }
    Console.ReadKey();

    Mit einer zweiten, inneren Schleife kannst Du das zwar machen, für sinnvoll halte ich das aber nicht. Mich würde aber interessieren, warum Du das unbedingt so machen willst?


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community




    • Bearbeitet Stefan FalzModerator Dienstag, 11. November 2014 17:03 Fehleinschätzung meinerseits bzgl. der Machbarkeit
    Dienstag, 11. November 2014 10:09
    Moderator
  • Weil das der Chef verlangt ich fange erst an zu Programmieren und bekomme relativ wenig Hilfe und muss mir alles selber erarbeiten. Er hat mir 20 Aufgaben mit Gegeben die ich mit for- Schleife lösen muss. Die aufgabe Lautet: 

    Schreibe ein Programm mittels Schleifen. Es sollen alle ASCII-Zeichen

    mit den dazugehörenden Dezimalwerten auf dem Bildschirm ausgegeben werden. Wähle eine geeignete Darstellungsform. z.B. maximal 7 Werte in einer Zeile.

    Beispielsweise 65 = A auf dem Bildschirm.  Dazu meinte er ich kann von 33 bis 124 machen das langt 

    Gruß , Artur 


    • Bearbeitet Arthur222 Dienstag, 11. November 2014 10:17
    Dienstag, 11. November 2014 10:13
  • Hallo Artur,

    das ist mit dem ersten Codebeispiel meinerseits erfüllt. Du hast dort ja eine for Schleife. Der gepostete Text spricht nicht von einer zweiten, dritten, vierten, ... Schleife.

    Die Aufgabenstellung heißt auch nicht, dass Du für alle noch so kleinen Details eine (weitere) Schleife verwenden sollst denn das ist a) nicht möglich und b) in keinem Fall sinnvoll.

    Wie gesagt, das erste Beispiel wäre das, was die Aufgabenstellung fordert. Wenn max. 7 Werte in einer Zeile stehen sollen, musst Du counter % 8 noch durch counter % 7 ersetzen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Dienstag, 11. November 2014 10:16
    Moderator
  • Hallo Stefan , 

    alles klar ich legs ihm so vor  mal schauen was er dazu sagt :) 

    vielen dank schon mal 

    Gruß Artur 

    Dienstag, 11. November 2014 10:19
  • Hallo Artur,

    bevor Du es ihm vorlegst, solltest Du den Code aber auch verstanden haben :) Da Du ja noch am Anfang stehst, sind dir manche Konstrukte ggfs. noch nicht so geläufig. Wenn dein Chef dich aber dann fragen sollte "Was bedeutet denn bspw. "Console.Write( counter % 8 == 0 ? "\n" : "" );" und Du dann keine oder eine falsche Antwort hast, bringt dir das ja auch nicht wirklich was.

    Daher noch ein paar Links :)

      http://msdn.microsoft.com/de-de/library/0w4e0fzs.aspx

      http://msdn.microsoft.com/de-de/library/ty67wk28.aspx

    Lies dir die mal durch.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 11. November 2014 10:24
    Moderator
  • hallo Stefan, 

    hab mir alles angeschaut und auch verstanden , aber mein Chef meint ich soll das mit for - schleife lösen und nicht mit anderen Bedienungen sonst hat das ja nichts mit for schleife üben zu tun .. Er hat gemeint ich muss nur zu meinem obigen Code nur eine Kleinigkeit verändern damit es geht ...  

    Gruß Artur 

    Dienstag, 11. November 2014 14:07
  • Hallo zusammen,

    Schreibe ein Programm mittels Schleifen. Es sollen alle ASCII-Zeichen mit den dazugehörenden Dezimalwerten auf dem Bildschirm ausgegeben werden.

    Die Aufgabe gestattet somit nur Schleifen und keine if-Anweisungen. Du kannst mit dem folgenden Codeausschnitt probieren:

    for (int j = 33; j < 128; j+=8 )
    {
        for (int i = j; (i<j+8)&&(i<128); i++)
        {
            Console.Write(i + " = ");
            Console.Write(Convert.ToChar(i));
            Console.Write(" ");
        }
        Console.Write("\n");
    }
    Console.ReadKey();

    Hier ist die obere Grenze 127. Wenn Du auch 128 mit einschließen willst, kannst Du &&(i<128) auslassen. Eine if-Anweisung ist jedoch lesbarer und üblicher (und schneller).

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.



    Dienstag, 11. November 2014 15:43
    Administrator
  • Hay Dimitar,

    danke ich glaube so wollte er es haben.

    Gruß Artur

    Dienstag, 11. November 2014 16:02
  • Hallo Artur,

    sag ihm einen schönen Gruß, man sollte einen angehenden Programmierer nicht schon gleich zu Beginn mit sowas versauen.

    Sicherlich wird es im Verlauf deines Programmiererlebens oft dazu kommen, dass Du mehrfach verschachtelte Schleifen brauchst. Aber für eine Anforderung wie die oben dargestellte ein solches Konstrukt (auch wenn es funktioniert) zu basteln ist IMO nicht zielführend und hat meiner Meinung nach mit Übung nicht viel zu tun.

    Aber sei es drum, in einem Punkt muss ich mich korrigieren. Man kann das schon so machen. Sieht halt dann aber scheiße aus :) (@Dimitar, geht natürlich nicht gegen dich!)



    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Dienstag, 11. November 2014 17:01
    Moderator
  • hallo stefan , 

    bin deiner Meinung , aber ich kann nicht viel tun. Ich Zeige euch einfach nur die Restlichen Aufgaben nur zum Spaß .

    Aufgabe 9

    Schreibe ein Programm mit einer Schleife zur Berechnung des Benzinpreises.

    Die Ausgabe auf dem Bildschirm soll folgendermaßen aussehen:

    Der Preis für ein Liter Benzin kostet 1,06 Euro

    1 Liter kostet: 1.060000 Euro

    2 Liter kostet: 2.120000 Euro

    3 Liter kostet: 3.180000 Euro

    4 Liter kostet: 4.240000 Euro

    5 Liter kostet: 5.300000 Euro

    6 Liter kostet: 6.360000 Euro

    7 Liter kostet: 7.420000 Euro

    8 Liter kostet: 8.480000 Euro

    9 Liter kostet: 9.540000 Euro

    10 Liter kostet: 10.600000 Euro

    Am Ende des Programms bekommt der Benutzer eine Ausgabe angezeigt: "Wollen

    Sie das

    Programm erneut ausführen? (J/N)". Bei Eingabe von "J" wird das Programm

    erneut

    ausgeführt. Bei Eingabe von "N" wird das Programm beendet.

    Aufgabe 10

    Schreibe ein Programm, das vom Benutzer die Eingabe mehrerer

    Noten (von 1-6) verlangt. Bei Eingabe einer ungültigen Note (außerhalb von 1- 6) soll eine Fehlermeldung ausgegeben werden. Bei Eingabe von 0 gibt das Programm die Summe der eingegebenen Werte auf dem Bildschirm aus und den Notendurchschnitt.

    Aufgabe 11

    lineare Abschreibung (lediglich Ganzzahlen sind zur Eingabe zugelassen)

    Bitte gebe den Anschaffungspreis ein:

    300000

    Bitte gebe an über wie viele Jahre die Anlage abgeschrieben wird:

    5

    Anschaffungspreis 300000

    1. Jahr Abschreibung 60000

    Restwert 240000

    2. Jahr Abschreibung 60000

    Restwert 180000

    3. Jahr Abschreibung 60000

    Restwert 120000

    4. Jahr Abschreibung 60000

    Restwert 60000

    5. Jahr Abschreibung 60000

    Restwert 0

    das muss ich alles alleine hinkriegen " lach "

    Mittwoch, 12. November 2014 07:42
  • Hallo Artur,

    generell sehe ich bei den Aufgaben kein Problem. Sind klassische Aufgabenstellungen und problemlos lösbar. Mich hat eigentlich nur die Anforderung "_Alles_ im Code _muss_ mit einer Schleife gelöst werden" gestört.

    Aber egal, ist dein Cheffe, daher mach das mal so, wie er es meint.

    Schaffst Du schon, ist nicht so schwierig. Dir das aber nun vorzukauen (also den Code zu posten) würde zu weit gehen. Denn letztendlich wollen er und wir dasselbe: Du sollst was lernen und dafür musst Du es schon selbst umsetzen :)


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Mittwoch, 12. November 2014 09:53
    Moderator
  • Hallo Stefan , 

    Ja klar hab auch nicht verlangt das ihr mir den Code  schreiben tut wollte nur die Aufgaben zeigen , falls ich nicht weiter komm mit ihrgendeiner aufgabe kann ich den Code ja hier rein posten  und einer kann drüber schauen an was es liegt  .. 

    Gruß , artur

    Mittwoch, 12. November 2014 10:00
  •             for (int i = 1; i < 11; i++)
                {
                    for (int a = 1; a < 11 ; a++)
                    {
                        Console.Write(a + " ");
    
    
                    }
                    Console.Write("\n");
                }
                
                
                
                Console.ReadKey();

    z.B hab ich ne frage wo lese ich das nach wenn ich nicht weiter komme , ich will eine Rechentabelle erstellen 

    wo das ausgibt  

    1 2 3 4 5 6 7 8 9 10

    2 4 6 8 10 12 14 16 18 20

    3 6 9 12 15 18 21 24 27 30

    4 8 12 16 20 24 28 32 36 40

    5 10 15 20 25 30 35 40 45 50

    6 12 18 24 30 36 42 48 54 60

    7 14 21 28 35 42 49 56 63 70

    8 16 24 32 40 48 56 64 72 80

    9 18 27 36 45 54 63 72 81 90

    10 20 30 40 50 60 70 80 90 100 

    und ich weiß nicht was tut immer um eins erhöhen wenn ich einen Zeilenumbruch mache.

    Wo kann ich das nachlesen ?

    Gruß , Artur


    Mittwoch, 12. November 2014 10:26
  • Hallo Artur,

    In der inneren Schleife (wo der Wert von a erhöht wird) machst Du von der Variable i keinen Gebrauch. Es soll i auch in die Berechnung mit einbezogen werden:

                        Console.Write(a*i + " ");

    Wenn i nicht erwähnt wird, druckst Du nur a aus, das die Werte von 1 bis 10 durchläuft. Es soll aber das Produkt der beiden Zahlen ausgedruckt werden.

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    • Als Antwort markiert Arthur222 Mittwoch, 12. November 2014 11:58
    Mittwoch, 12. November 2014 11:46
    Administrator
  • Hallo Dimitar ,

    danke nochmal mir fehlen immer so kleine Kleinigkeiten das ist echt blöd .

    Gruß , Artur

    Mittwoch, 12. November 2014 11:58
  • Hallo Artur,

    danke nochmal mir fehlen immer so kleine Kleinigkeiten das ist echt blöd .

    Man kann nicht davon ausgehen, dass ein angehender Programmierer allen Kleinigkeiten Rechnung trägt. Ich hoffe nur, dass die erste eher verwirrende Aufgabe Dich nicht entmutigt hat. Sollten weitere Aufgaben Dir Schwierigkeiten bereiten, kannst Du sie stets mitteilen. Im Übrigen stimme ich Stefan zu.

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.


    Mittwoch, 19. November 2014 10:51
    Administrator
  • Hallo Dimitar ,

    nein mich entmutigt das nicht. Wenn ich drin im programmieren bin dann klappts auch meisten aber die Firma reist mich aus dem Programmieren raus und schick mich auf Rollouts... so verliere ich den faden und jetzt bin ich wieder da und muss weiter programmieren da hock ich dann viel zu lange an einer Aufgabe.


    Artur  



    • Bearbeitet Arthur222 Montag, 24. November 2014 13:56
    Montag, 24. November 2014 08:15