4 svar
734 visningar
lagamba 132
Postad: 23 feb 2023 22:47

Gissa talet - Do While loop

Hej, i den tidigare uppgiften skulle vi skapa en gissa talet. Nu ska vi använda en do while tills resultat uppnås. Jag har dock redan uppnått detta utan en do while i första uppgiften..? Eller har jag missuppfattat? Min kod loopar tills korrekt svar anges. Men nu måste jag använda en do while och har provat att göra om lite här och där men får felkod hela tiden. Ligger felet i att jag använt bool och inte kan använda en do while samtidigt? Har testat att sätta den vid if men då loopar den utan slut.. 

{
Random random = new Random();
bool playAgain = true;
int min = 1;
int max = 100;
int guess;
int number;
int guesses;
String responce;

while (playAgain)
{

guess = 0;
guesses = 0;
responce = "";
number = random.Next(min, max + 1);

while (guess != number)
{
Console.WriteLine("Kan du gissa vilket det slumpmässiga talet är? Skriv in ett tal mellan " + min + " - " + max + " : ");
guess = Convert.ToInt32(Console.ReadLine());

if (guess > number)
{
Console.WriteLine(guess + " Nära fångar ingen hare, talet var för högt. Gissa igen.");
}
else if (guess < number)
{
Console.WriteLine(guess + " Nästan där, talet var för lågt, gissa igen.");
}
guesses++;
}
Console.WriteLine("Number: " + number);
Console.WriteLine("Grattis du lyckades ju gissa rätt!");
Console.WriteLine("Gissningar: " + guesses);

Console.WriteLine("Vill du gissa igen?");
responce = Console.ReadLine();
responce = responce.ToUpper();

if (responce == "J") ;
{
playAgain = true;
}
if (responce == "N") ;
{
playAgain = false;
}
}

Console.WriteLine("Tack för din medverkan!");

Console.ReadKey();
}

Laguna 28708
Postad: 23 feb 2023 22:52

Vad får du för fel?

lagamba 132
Postad: 24 feb 2023 11:31

Uppgiften är "Utmaningen i denna uppgift (för att bli godkänd) är att jämföra det hemliga talet med det inskrivna värdet. Koden ska upprepa inmatningen till man gissat rätt. Det är okej att använda en bool-variabel för att fastslå när talen är lika."

Min kod gör ju redan detta fast med en if else. Så jag har försökt göra om dom till do while men resultatet blir såhär.

Övre bilden är innan och nedre efter, tänker det är bara att ändra i och if else till do och while? Men blir fel oavsett vart jag placerar do och while

anders_k 234
Postad: 24 feb 2023 11:53 Redigerad: 24 feb 2023 11:55

Det borde väl se ut så här, bara sätt do där du tidigare hade while och flytta ned while till efter användaren gissat.

do
{
  Console.WriteLine("Kan du gissa vilket det slumpmässiga talet är? Skriv in ett tal mellan " + min + " - " + max + " : ");
  guess = Convert.ToInt32(Console.ReadLine());

  if (guess > number)
  {
    Console.WriteLine(guess + " Nära fångar ingen hare, talet var för högt. Gissa igen.");
  }
  else if (guess < number)
  {
    Console.WriteLine(guess + " Nästan där, talet var för lågt, gissa igen.");
  }
  guesses++;
}
while (guess != number);

Jag hade nog också om jag hade varit du, lagt ++guesses först i do-loopen

lagamba 132
Postad: 24 feb 2023 12:14

Tack snälla, nu funkade det. Hade placerat while fel. Har flyttat upp guesses med och nu funkar det 

Svara Avbryt
Close