Permalänk

Uppgift 3: Gissa talet

hej , uppgiften lyder:

Användaren ska gissa ett tal som slumpats fram.
När programmet startar ska lämplig text skrivas ut till användaren och ett tal slumpas i bakgrunden.
Detta tal ska vara mellan 1 och 100, och detta tal ska lagras i en variabel.
För att slumpa ett tal mellan 1 och 100 används följande kod:
Random randomerare = new Random();
int slump_tal = randomerare.Next(1, 100);
Notera att du inte behöver begripa den koden ännu, men längre fram och med mer kunskap kommer
du också förstå vad som händer i koden. Så i detta läge får man helt enkelt svälja att det är så man
skriver för att lagra ett slumptal mellan 1 och 100 i variabeln slump_tal.
Prova gärna att göra ett enkelt program som skriver ut 10 olika slumptal i en loop för
att dels öva på loopar och dels se att slumptalet fungerar som det ska.
Nu ska en loop inledas och i den loopen ska användaren få skriva in ett tal.
Om talet är mindre än det hemliga slumpade talet ska användaren noteras om detta, och samma sak
om talet är för stort.
Loopen ska snurra ända till användaren lyckas skriva in det hemliga talet. Då ska en lämplig text
skrivas ut.

Detta är min kod. den skriver ut allt samtidigt efter man har skrivit in sin gissning.snälla hjälp

Console.WriteLine("Hello welcome to Guess the number");
Console.WriteLine("Please guess a number, good luck");

Random randomerare = new Random();
int slump_tal = randomerare.Next(1, 101);

string strNr = Console.ReadLine();
int nr = Convert.ToInt32(strNr);
int guess = 0;

do
{

slump_tal = randomerare.Next(1, 101);
guess += 1;

if (nr > slump_tal)
{
Console.WriteLine("Sorry your guess incorrect");
Console.WriteLine("Please guess a smaller number");
}
else if (nr < slump_tal)
{
Console.WriteLine("Sorry your guess incorrect");
Console.WriteLine("PLease guess a higher number");
}

} while (nr != slump_tal);

Console.WriteLine("Congratulations you guess the number in " + guess + "tries");

Permalänk
Medlem

@Will Sheza C: Jag formaterade din kod och la den inom kod-block [ code ] [ / code] för att tydligare kunna läsa.
Har lagt till två kommentarer som bör guida dig åt rätt riktning

Console.WriteLine("Hello welcome to Guess the number"); Console.WriteLine("Please guess a number, good luck"); Random randomerare = new Random(); int slump_tal = randomerare.Next(1, 101); string strNr = Console.ReadLine(); //Användaren får aldrig mata in en ny gissning efter loopen startar. Det här bör hanteras i loopen. int nr = Convert.ToInt32(strNr); int guess = 0; do { slump_tal = randomerare.Next(1, 101); //Här slumpar du om talet vid varje iteration av loopen, det vill du inte göra. En tidigare fel gissning kan helt plötsligt vara korrekt. guess += 1; if (nr > slump_tal) { Console.WriteLine("Sorry your guess incorrect"); Console.WriteLine("Please guess a smaller number"); } else if (nr < slump_tal) { Console.WriteLine("Sorry your guess incorrect"); Console.WriteLine("PLease guess a higher number"); } } while ( nr != slump_tal ); Console.WriteLine("Congratulations you guess the number in " + guess + "tries");

Permalänk
Medlem

Det finns för övrigt redan en aktiv tråd om denna uppgift där exakt samma fel gjorts.

Permalänk

hej tack för hjälpen men nu skriver den attt man har gissat rätt efter två försök

Console.WriteLine("Hello welcome to Guess the number");
Console.WriteLine("Please guess a number, good luck");

Random randomerare = new Random();
int slump_tal = randomerare.Next(1, 101);
string strNr = Console.ReadLine();
int nr = Convert.ToInt32(strNr);
int guess = 1;

do
{
guess++;

if (nr > slump_tal)
{
Console.WriteLine("Sorry your guess incorrect");
Console.WriteLine("Please guess a smaller number");
Console.ReadLine();
}
else if (nr < slump_tal)
{
Console.WriteLine("Sorry your guess incorrect");
Console.WriteLine("Please guess a higher number");
Console.ReadLine();
}

Console.WriteLine("Congratulations you guess the number in " + guess + " try/s ");
Console.ReadLine();
} while (nr != slump_tal);

Permalänk
Medlem
Skrivet av Will Sheza C:

hej tack för hjälpen men nu skriver den attt man har gissat rätt efter två försök

Console.WriteLine("Hello welcome to Guess the number");
Console.WriteLine("Please guess a number, good luck");

Random randomerare = new Random();
int slump_tal = randomerare.Next(1, 101);
string strNr = Console.ReadLine();
int nr = Convert.ToInt32(strNr);
int guess = 1;

do
{
guess++;

if (nr > slump_tal)
{
Console.WriteLine("Sorry your guess incorrect");
Console.WriteLine("Please guess a smaller number");
Console.ReadLine();
}
else if (nr < slump_tal)
{
Console.WriteLine("Sorry your guess incorrect");
Console.WriteLine("Please guess a higher number");
Console.ReadLine();
}

Console.WriteLine("Congratulations you guess the number in " + guess + " try/s ");
Console.ReadLine();
} while (nr != slump_tal);

Din sista utprint bör vara efter loopen, dvs. att det ska ske när nr == slump_tal.
Nu skriver du ut det i varje iteration efter if/else-if.

Permalänk

hej tack har löst det

Console.WriteLine("Hello welcome to Guess the number");
Console.WriteLine("Please guess a number, good luck");

int nr;
string strNr;
Random randomerare = new Random();
int slump_tal = randomerare.Next(1, 101);
strNr = Console.ReadLine();
nr = Convert.ToInt32(strNr);
int guess =1;

do
{

guess++;

if (nr > slump_tal)
{
Console.WriteLine("Sorry your guess incorrect");
Console.WriteLine("Please guess a smaller number");
strNr = Console.ReadLine();
nr = Convert.ToInt32(strNr);
}
else if (nr < slump_tal)
{
Console.WriteLine("Sorry your guess incorrect");
Console.WriteLine("Please guess a higher number");
strNr = Console.ReadLine();
nr = Convert.ToInt32(strNr);
}

if (nr == slump_tal)
{
Console.WriteLine("Congratulations you guess the number in " + guess + " try/s ");
Console.ReadLine();

}

} while (nr != slump_tal) ;

Permalänk
Medlem
Skrivet av Will Sheza C:

hej tack har löst det

Console.WriteLine("Hello welcome to Guess the number");
Console.WriteLine("Please guess a number, good luck");

int nr;
string strNr;
Random randomerare = new Random();
int slump_tal = randomerare.Next(1, 101);
strNr = Console.ReadLine();
nr = Convert.ToInt32(strNr);
int guess =1;

do
{

guess++;

if (nr > slump_tal)
{
Console.WriteLine("Sorry your guess incorrect");
Console.WriteLine("Please guess a smaller number");
strNr = Console.ReadLine();
nr = Convert.ToInt32(strNr);
}
else if (nr < slump_tal)
{
Console.WriteLine("Sorry your guess incorrect");
Console.WriteLine("Please guess a higher number");
strNr = Console.ReadLine();
nr = Convert.ToInt32(strNr);
}

if (nr == slump_tal)
{
Console.WriteLine("Congratulations you guess the number in " + guess + " try/s ");
Console.ReadLine();

}

} while (nr != slump_tal) ;

Bra att du löst det! Förstår att du är ny, men försök gärna att refaktorera koden nu när det fungerar. Du upprepar logik på flera ställen som skulla kunna köras enbart en gång.