12 svar
115 visningar
ItsJustFallen 8
Postad: 30 jan 2023 17:49

Programmering... vi ska göra ett program om gissnings lek men jag får inte den helt redo.

 

Den skriver ut.... du har gissat för lågt när man gissar ända upp till 100 och för högt när man gissar på 0

 

 

static void Main(string[] args)

 


{
Console.WriteLine("Gissningsleken\nGissa nu ett nummer mellan 1-100");

int num;

Random random = new Random();

int slumptal = random.Next(1, 100);

String gissning = Console.ReadLine();

num = Convert.ToInt32(gissning);

int försök = 1;

do


{
försök++;

if (num < slumptal)
{
Console.WriteLine("Ditt tal är för högt");
gissning = Console.ReadLine();
num = Convert.ToInt32(gissning);
}

else if (num > slumptal)
{
Console.WriteLine("Ditt tal är för lågt");
gissning = Console.ReadLine();
num = Convert.ToInt32(gissning);
}

if (num==slumptal)
{
Console.WriteLine("Du gissade rätt" + försök !);

Console.ReadLine();
}
}

while (num != slumptal);
}

ItsJustFallen 8
Postad: 30 jan 2023 17:50 Redigerad: 30 jan 2023 18:16

Oavsätt vad jag skriver i så får jag du har gissat för lågt eller för högt 

 

Laguna Online 30472
Postad: 30 jan 2023 21:46

Visa en hel körning.

anders_k 237
Postad: 30 jan 2023 21:49 Redigerad: 30 jan 2023 21:55

Låt oss först få ordning på koden genom att stoppa in den i {;} burk

static void Main(string[] args)
{
  Console.WriteLine("Gissningsleken\nGissa nu ett nummer mellan 1-100");
  int num;
  Random random = new Random();
  int slumptal = random.Next(1, 100);
  String gissning = Console.ReadLine();
  num = Convert.ToInt32(gissning);
  int försök = 1;
  do
  {
    försök++;
    if (num < slumptal)
    {
      Console.WriteLine("Ditt tal är för högt");
      gissning = Console.ReadLine();
      num = Convert.ToInt32(gissning);
    }
    else if (num > slumptal)
    {
      Console.WriteLine("Ditt tal är för lågt");
      gissning = Console.ReadLine();
      num = Convert.ToInt32(gissning);
    }

    if (num==slumptal)
    {
      Console.WriteLine("Du gissade rätt" + försök !);
      Console.ReadLine();
    }
  }
  while (num != slumptal);
}

Om du kollar lite närmare på dina if satser ser du att du skriver fel text, om num < slumptal då är gissningen för lågt, inte för högt och vice versa.

Undvik använda String, använd string istället.

Personligen undviker jag åäl i variabel namn, men jag kanske bara är gammalmodig.

När du skriver ut värden, använd interpolerade strängar typ

Console.WriteLine($"{slumptal}");

Det gör det lite lättare att läsa.

ItsJustFallen 8
Postad: 30 jan 2023 23:30
Laguna skrev:

Visa en hel körning.

Hur menar du en hel körning jag är nybörjare så. Är otrolig tacksam att ni försöker hjälpa mig !

ItsJustFallen 8
Postad: 30 jan 2023 23:31
anders_k skrev:

Låt oss först få ordning på koden genom att stoppa in den i {;} burk

static void Main(string[] args)
{
  Console.WriteLine("Gissningsleken\nGissa nu ett nummer mellan 1-100");
  int num;
  Random random = new Random();
  int slumptal = random.Next(1, 100);
  String gissning = Console.ReadLine();
  num = Convert.ToInt32(gissning);
  int försök = 1;
  do
  {
    försök++;
    if (num < slumptal)
    {
      Console.WriteLine("Ditt tal är för högt");
      gissning = Console.ReadLine();
      num = Convert.ToInt32(gissning);
    }
    else if (num > slumptal)
    {
      Console.WriteLine("Ditt tal är för lågt");
      gissning = Console.ReadLine();
      num = Convert.ToInt32(gissning);
    }

    if (num==slumptal)
    {
      Console.WriteLine("Du gissade rätt" + försök !);
      Console.ReadLine();
    }
  }
  while (num != slumptal);
}

Om du kollar lite närmare på dina if satser ser du att du skriver fel text, om num < slumptal då är gissningen för lågt, inte för högt och vice versa.

Undvik använda String, använd string istället.

Personligen undviker jag åäl i variabel namn, men jag kanske bara är gammalmodig.

När du skriver ut värden, använd interpolerade strängar typ

Console.WriteLine($"{slumptal}");

Det gör det lite lättare att läsa.

Vad menar du med burk? Jag är nybörjare så samt att vad är interpolerade strängar typ vad menar du då?

Laguna Online 30472
Postad: 30 jan 2023 23:36
ItsJustFallen skrev:
Laguna skrev:

Visa en hel körning.

Hur menar du en hel körning jag är nybörjare så. Är otrolig tacksam att ni försöker hjälpa mig !

Jag menade all input och all output när du kör programmet, men jag ser att anders_k nog har hittat felet.

ItsJustFallen 8
Postad: 31 jan 2023 00:55

Jag försöker också lägga till en funktion så att man kan välja att spela om och då har jag försökt att göra så här. 

Men jag behöver veta hur man ska ta sig till. 

 

using System;
using System.Diagnostics.SymbolStore;

namespace MyApp // Note: actual namespace depends on the project name.
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("Gissningsleken\nGissa nu ett nummer mellan 1-100");

int num;

Random random = new Random();

int slumptal = random.Next(1, 100);

string gissning = Console.ReadLine();

num = Convert.ToInt32(gissning);

int försök = 1;

string svar;

do


{
försök++;

if (num > slumptal)
{
Console.WriteLine("Ditt tal är för högt");
gissning = Console.ReadLine();
num = Convert.ToInt32(gissning);
}

else if (num < slumptal)
{
Console.WriteLine("Ditt tal är för lågt");
gissning = Console.ReadLine();
num = Convert.ToInt32(gissning);
}

if (num==slumptal)
{
Console.WriteLine("Du gissade rätt! Det tog försök: " + försök );

Console.ReadLine();
}
}

while (num != slumptal);

Console.WriteLine("Vill du spela igen? Ja/Nej");
svar = Console.ReadLine();

if (svar == "Ja");
{
(do == true);

}

else (svar == "Nej");
{
(do == false);
}
}
}
}

ItsJustFallen 8
Postad: 31 jan 2023 01:14
ItsJustFallen skrev:

Jag försöker också lägga till en funktion så att man kan välja att spela om och då har jag försökt att göra så här. 

Men jag behöver veta hur man ska ta sig till. 

 

using System;
using System.Diagnostics.SymbolStore;

namespace MyApp // Note: actual namespace depends on the project name.
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("Gissningsleken\nGissa nu ett nummer mellan 1-100");

int num;

Random random = new Random();

int slumptal = random.Next(1, 100);

string gissning = Console.ReadLine();

num = Convert.ToInt32(gissning);

int försök = 1;

string svar;

do


{
försök++;

if (num > slumptal)
{
Console.WriteLine("Ditt tal är för högt");
gissning = Console.ReadLine();
num = Convert.ToInt32(gissning);
}

else if (num < slumptal)
{
Console.WriteLine("Ditt tal är för lågt");
gissning = Console.ReadLine();
num = Convert.ToInt32(gissning);
}

if (num==slumptal)
{
Console.WriteLine("Du gissade rätt! Det tog försök: " + försök );

Console.ReadLine();
}
}

while (num != slumptal);

Console.WriteLine("Vill du spela igen? Ja/Nej");
svar = Console.ReadLine();

if (svar == "Ja");
{
(do == true);

}

else (svar == "Nej");
{
(do == false);
}
}
}
}

Försöker också med detta det verkar så mycket text att fråga om hjälp tack till den som vill hjälpa!

Console.WriteLine("Vill du spela igen? Ja/Nej");
svar = Console.ReadLine();

if (svar == "Ja");
{
(spela == true);

}

else (svar == "Nej");
{
(spela == false);
}


}

while (num != slumptal||spela);

anders_k 237
Postad: 31 jan 2023 22:25

Burk: (kanske dåligt ordval)

anders_k 237
Postad: 31 jan 2023 22:40
using System;
using System.Diagnostics.SymbolStore;

namespace MyApp // Note: actual namespace depends on the project name.
{
  internal class Program
  {
    static void Main(string[] args)
    {
      Console.WriteLine("Gissningsleken\nGissa nu ett nummer mellan 1-100");
      int num;
      Random random = new Random();
      int slumptal = random.Next(1, 100);
      string gissning = Console.ReadLine();
      num = Convert.ToInt32(gissning);
      int försök = 1;
      string svar;

      do
      {
        försök++;

        if (num > slumptal)
        {
          Console.WriteLine("Ditt tal är för högt");
          gissning = Console.ReadLine();
          num = Convert.ToInt32(gissning);
        }
        else if (num < slumptal)
        {
          Console.WriteLine("Ditt tal är för lågt");
          gissning = Console.ReadLine();
          num = Convert.ToInt32(gissning);
        }
        if (num==slumptal) // du kan ta bort detta och ersätt med else
        {
          Console.WriteLine("Du gissade rätt! Det tog försök: " + försök );
          Console.ReadLine();
        }
      }
      while (num != slumptal);

      Console.WriteLine("Vill du spela igen? Ja/Nej");
      svar = Console.ReadLine();

      //-------------------------------
      // följande rader är inte rätt.
      //-------------------------------

      if (svar == "Ja");
      {
        (do == true);
      }
      else (svar == "Nej");
      {
       (do == false);
      }
    }
  }
}

 

Du behöver lägga en do-loop runtomkring för att kunna köra ditt spel igen.

Typ

using System;
using System.Diagnostics.SymbolStore;

namespace MyApp // Note: actual namespace depends on the project name.
{
  internal class Program
  {
    static void Main(string[] args)
    {
      Console.WriteLine("Gissningsleken\nGissa nu ett nummer mellan 1-100");
      int num;
      Random random = new Random();
      string svar;
      do
      { 
        int slumptal = random.Next(1, 100);
        string gissning = Console.ReadLine();
        num = Convert.ToInt32(gissning);
        int försök = 1;

        do
        {
          försök++;

          if (num > slumptal)
          {
            Console.WriteLine("Ditt tal är för högt");
            gissning = Console.ReadLine();
            num = Convert.ToInt32(gissning);
          }
          else if (num < slumptal)
          {
            Console.WriteLine("Ditt tal är för lågt");
            gissning = Console.ReadLine();
            num = Convert.ToInt32(gissning);
          }
          else
          {
            Console.WriteLine("Du gissade rätt! Det tog försök: " + försök );
            Console.ReadLine();
          }
        }
        while (num != slumptal);

        Console.WriteLine("Vill du spela igen? Ja/Nej");
        svar = Console.ReadLine();
      }
      while (svar == "Ja"); // fast du borde istället göra som nedan.
    }
  }
}

// string.Equals(val, "Ja", StringComparison.OrdinalIgnoreCase)
ItsJustFallen 8
Postad: 1 feb 2023 01:31
anders_k skrev:
using System;
using System.Diagnostics.SymbolStore;

namespace MyApp // Note: actual namespace depends on the project name.
{
  internal class Program
  {
    static void Main(string[] args)
    {
      Console.WriteLine("Gissningsleken\nGissa nu ett nummer mellan 1-100");
      int num;
      Random random = new Random();
      int slumptal = random.Next(1, 100);
      string gissning = Console.ReadLine();
      num = Convert.ToInt32(gissning);
      int försök = 1;
      string svar;

      do
      {
        försök++;

        if (num > slumptal)
        {
          Console.WriteLine("Ditt tal är för högt");
          gissning = Console.ReadLine();
          num = Convert.ToInt32(gissning);
        }
        else if (num < slumptal)
        {
          Console.WriteLine("Ditt tal är för lågt");
          gissning = Console.ReadLine();
          num = Convert.ToInt32(gissning);
        }
        if (num==slumptal) // du kan ta bort detta och ersätt med else
        {
          Console.WriteLine("Du gissade rätt! Det tog försök: " + försök );
          Console.ReadLine();
        }
      }
      while (num != slumptal);

      Console.WriteLine("Vill du spela igen? Ja/Nej");
      svar = Console.ReadLine();

      //-------------------------------
      // följande rader är inte rätt.
      //-------------------------------

      if (svar == "Ja");
      {
        (do == true);
      }
      else (svar == "Nej");
      {
       (do == false);
      }
    }
  }
}

 

Du behöver lägga en do-loop runtomkring för att kunna köra ditt spel igen.

Typ

using System;
using System.Diagnostics.SymbolStore;

namespace MyApp // Note: actual namespace depends on the project name.
{
  internal class Program
  {
    static void Main(string[] args)
    {
      Console.WriteLine("Gissningsleken\nGissa nu ett nummer mellan 1-100");
      int num;
      Random random = new Random();
      string svar;
      do
      { 
        int slumptal = random.Next(1, 100);
        string gissning = Console.ReadLine();
        num = Convert.ToInt32(gissning);
        int försök = 1;

        do
        {
          försök++;

          if (num > slumptal)
          {
            Console.WriteLine("Ditt tal är för högt");
            gissning = Console.ReadLine();
            num = Convert.ToInt32(gissning);
          }
          else if (num < slumptal)
          {
            Console.WriteLine("Ditt tal är för lågt");
            gissning = Console.ReadLine();
            num = Convert.ToInt32(gissning);
          }
          else
          {
            Console.WriteLine("Du gissade rätt! Det tog försök: " + försök );
            Console.ReadLine();
          }
        }
        while (num != slumptal);

        Console.WriteLine("Vill du spela igen? Ja/Nej");
        svar = Console.ReadLine();
      }
      while (svar == "Ja"); // fast du borde istället göra som nedan.
    }
  }
}

// string.Equals(val, "Ja", StringComparison.OrdinalIgnoreCase)

Hej tack för att du hjälper jag testade detta men det fungerade inte. samt att varför lämnar man vissa variablre utanför den första do? Problemet med koden du skrev var att jag får upp meddelandet om man vill spela igen. Men därefter fungerar den inte. Jag måste lära mig detta och förstå. Tack igen för hjälpen!

anders_k 237
Postad: 1 feb 2023 16:29

eftersom du skall börja om spelet så får du initialisera saker som nytt slump tal.

har du prövat debuggern? så ser du hur programmet kör och kanske kan se varför det inte fungerar.

Svara
Close