none
Aufgabe Zahlenraten durch Eingabe einer bestimten Zahl RRS feed

  • Frage

  • Hallo,

    Ich schon wieder:)

    Habe folgendes vor:

    Eine Konsolenapplikation, bei der der Computer eine zufällige Zahl erstellt, die der User raten muss.

    Habe folgendes Programm entwickelt. Es funktioniert, sieht mir aber ziemlich "komisch" aus. Gibt es da eine kürzere Variantge bzw was kann ich in meinem Code ändern, damit es interessanter aussieht.

    Wie schon in meinem alten Thema genannt, haben wir nur If-else, while, do-while, for und Variablen gemacht.

    Trotzdem bin ich für alle neuen Dinge offen:)

    Danke

    string ZahlB;
    int Zahlb;
    
    Console.WriteLine("Geben sie die mögliche Zahl ein");
    ZahlB=Console.ReadLine();
    Zahlb=Convert.ToInt32(ZahlB);
    
    Random zufall = new Random();
    int ZahlA = zufall.Next(1,100);
     
    	
     
    for(int i=1; ZahlA>Zahlb || ZahlA<Zahlb ;i++)
    { 
    if(Zahlb>ZahlA)
    {
    Console.WriteLine("Die Zahl ist zu groß");
    Console.WriteLine("Geben sie eine weitere mögliche Zahl ein");
    ZahlB=Console.ReadLine();
    Zahlb=Convert.ToInt32(ZahlB);
    }
    if (Zahlb<ZahlA)
    {
    Console.WriteLine("Die Zahl ist zu klein");
    Console.WriteLine("Geben sie eine weitere mögliche Zahl ein");
    ZahlB=Console.ReadLine();
    Zahlb=Convert.ToInt32(ZahlB);
    }
    }
    if (ZahlA==Zahlb)
    Console.WriteLine("Richtig, die gesuchte Zahl ist {0}",Zahlb);
    }
    Console.ReadLine();

    Freitag, 6. Dezember 2013 10:48

Antworten

  • Hallo,
    ist das interessant genug? ;-)

    string ZahlB;
    int Zahlb;
    
    Random zufall = new Random();
    int ZahlA = zufall.Next(1, 100);
    
    for (int i = 1; ; i++) {
      Console.Write("Geben sie eine mögliche Zahl ein: ");
      ZahlB = Console.ReadLine();
      Zahlb = Convert.ToInt32(ZahlB);
    
      if (Zahlb > ZahlA) {
        Console.WriteLine("Die Zahl {0} ist zu groß", Zahlb);
      } else if (Zahlb < ZahlA) {
        Console.WriteLine("Die Zahl {0} ist zu klein", Zahlb);
      } else {
        Console.WriteLine("Richtig, die gesuchte Zahl ist {0}", Zahlb);
        Console.WriteLine("Sie haben {0} Versuche benötigt.", i);
        break;
       }
     }
     Console.ReadLine();
    Solltest du Fragen dazu haben, immer her damit :)

    Viele Grüße Holger M. Rößler

    • Als Antwort markiert Ciprian Bogdan Donnerstag, 12. Dezember 2013 14:04
    Freitag, 6. Dezember 2013 11:17

Alle Antworten

  • Hallo,
    ist das interessant genug? ;-)

    string ZahlB;
    int Zahlb;
    
    Random zufall = new Random();
    int ZahlA = zufall.Next(1, 100);
    
    for (int i = 1; ; i++) {
      Console.Write("Geben sie eine mögliche Zahl ein: ");
      ZahlB = Console.ReadLine();
      Zahlb = Convert.ToInt32(ZahlB);
    
      if (Zahlb > ZahlA) {
        Console.WriteLine("Die Zahl {0} ist zu groß", Zahlb);
      } else if (Zahlb < ZahlA) {
        Console.WriteLine("Die Zahl {0} ist zu klein", Zahlb);
      } else {
        Console.WriteLine("Richtig, die gesuchte Zahl ist {0}", Zahlb);
        Console.WriteLine("Sie haben {0} Versuche benötigt.", i);
        break;
       }
     }
     Console.ReadLine();
    Solltest du Fragen dazu haben, immer her damit :)

    Viele Grüße Holger M. Rößler

    • Als Antwort markiert Ciprian Bogdan Donnerstag, 12. Dezember 2013 14:04
    Freitag, 6. Dezember 2013 11:17
  • Das sieht schon besser aus:)

    Jetzt kommt die nächste Hürde, ich möchte gerne, dass es unterschiedliche Einstufungen gibt. 

    Zum Beispiel:

    Kalt

    warm

    heiß

    Treffer

    Wie kann ich sowas sinnvoll umsetzen?

    Wenn ich sage, Zahlb>20 oder sowas, dann ist es ja so, wenn die ZahlA wirklich 15 ist, schließe ich das ja dann dadurch aus. 

    Danke!

    Freitag, 6. Dezember 2013 11:21
  • Hallo,
    dann musst du definieren, bei welcher Abweichung welche entsprechende Stufe erscheinen soll. Dies ist auch von der Zufallszahl abhängig. Je kleiner die Zahl, umso kleiner solltest du die Grenzen definieren! Hier würde ich also die Abweichung in %-Werten definieren.

    So zum Beispiel:

                 x +/- 5% == heiß
                 x +/- 10 % == warm
                ansonsten kalt, wenn Zahl nicht getroffen wurde

    Ich hoffe, das hilft dir weiter...


    Viele Grüße Holger M. Rößler




    Freitag, 6. Dezember 2013 11:57
  • string ZahlB;
    int Zahlb;
    Random zufall = new Random();
    int ZahlA = zufall.Next(1,100);
     
    for(int i=1;;i++)
    { 	
    Console.WriteLine("Geben sie die mögliche Zahl ein");
    ZahlB=Console.ReadLine();
    Zahlb=Convert.ToInt32(ZahlB);
    	
    if((Zahlb/100)*10>ZahlA)
    {
    Console.WriteLine("Die Zahl ist zu groß");
    Console.Write("Heiß");
    }
    else if((Zahlb/100)*20>ZahlA);
    {
    Console.WriteLine("Die Zahl ist zu groß");
    Console.Write("Warm");
    }
    else 
    {
    Console.WriteLine("Die Zahl ist zu groß");
    Console.Write("Kalt");
    }
    if ((Zahlb/100)*10<ZahlA)
    { 
    Console.WriteLine("Die Zahl ist zu klein");
    Console.Write("heiß");
    }
    else if((Zahlb/100)*20<ZahlA)
    { 
    Console.WriteLine("Die Zahl ist zu klein");
    Console.Write("Warm");
    }
    else
    {
    Console.WriteLine("Die Zahl ist zu klein");
    Console.Write("Kalt");
    }
    if (ZahlA==Zahlb)
    {
    Console.WriteLine("Richtig, die gesuchte Zahl ist {0}",Zahlb);
    break;
    }
    }
    			

    Was habe ich nun falsch gemacht? .. 

    Er gibt mir folgende Fehler aus:

    Zeile 35 CS0642 Möglicherweise falsche leere Anweisung

    Zeile 39 CS1525 Ungültiger Ausdruck else

    Zeile 39 CS 1002 ; erwartet (hinter einem else? ...????)

    Freitag, 6. Dezember 2013 12:23
  • Hallo,
    dein Fehler ist das Semikolon (";") am Ende dieser Zeile:

    else if((Zahlb/100)*20>ZahlA);
     

    Viele Grüße Holger M. Rößler

    Freitag, 6. Dezember 2013 12:30
  • Jetzt gibt er mir beide if-Befehle aus.

    Er sagt Zu groß kalt und zu klein kalt.

    Fehlt da eine Klammer?

    Freitag, 6. Dezember 2013 12:54
  • Hallo,
    nein du hast einen Logikfehler drin!

    Schau mal bitte, in welchen Fällen deine if-Bedingungen zutreffen. (Nur die if, nicht else if und nicht else)!


    Viele Grüße Holger M. Rößler

    Freitag, 6. Dezember 2013 13:05
  • hmm, ich habe da jetzt einfach nur stehen das die gesuchte Zahl klener sein muss als die Prozentzahl der geratenen Zahl, das wäre ja falsch.

    Da muss sicherlich statt Zahlb/100*10 irgendwas anderes hin, aber ich habe leider noch keine Idee was..

    Montag, 9. Dezember 2013 18:21
  • Donnerstag, 12. Dezember 2013 14:11