Do While-loop samt If satsen. Kan ej hoppa ur loopen.
Mitt mål är att göra en frågesport där användaren skall gissa ett tal mellan 1-100. Jag är rätt säker på att jag inte är helt ute och cyklar (finns en chans att jag är), men det jag behöver hjälp med är att veta varför en variabel blir grå i slutet av en Do While-loop. Alla andra variabler av det namnet jag angett den till ("svar" är namnet) lyser blått för att indikera att de funkar men i slutet i villkorssatsen efter jag skrivit while, exempel: "while (svar != slump_tal);" så är "svar" grått och när jag får rätt siffra så hoppar inte jag ur loopen för att skriva att användaren gissade rätt, jag antar att den är grå för att datorn tror att den aldrig kommer kunna utföra kommandot vilket det också verkar som. Så frågan är varför den inte kan hoppa ur loopen?
Sedan försöker jag också göra så att när användaren är 3 eller mindre ifrån svaret så ska det skrivas ut att det är VÄLDIGT nära. Tror jag skrivit det fel men skulle gärna få input.
Uppskattar om jag inte bara får svar rakt upp och ner utan jag vill gärna förstå varför, tack till de som tar sig tiden att hjälpa.
using System;
namespace Dethemligatalet3
{
class Program
{
private static int svar;
static void Main(string[] args)
{
Random randomerare = new Random();
int slump_tal = randomerare.Next(1, 101);
int försök = 0;
Console.WriteLine("GISSA DET HEMLIGA TALET OCH VINN EN KAKA");
do
{
Console.Write("Gissa på ett tal mellan 1-100: ");
int svar = Convert.ToInt32(Console.ReadLine());
försök++;
if (svar < slump_tal)
{
Console.WriteLine(försök + " försöket, svaret är för lågt, gissa igen!");
}
else if (svar > slump_tal)
{
Console.WriteLine(försök + " försöket, svaret är för högt, gissa igen!");
}
if (svar == slump_tal +-3)
{
Console.WriteLine(försök + " försöket, det är VÄLDIGT nära...");
}
} while (svar != slump_tal);
Console.WriteLine("GRATTIS, du vann en kaka!");
Console.ReadKey();
}
}
}
Jagchar aldrig kodat C# men jag tror inte att man kan skriva så här:
Skriv istället något liknande
if (Math.Abs(svar-slump_tal) < 4)
{
}
Jag löste felet nu. Det var att svaret måste lagras utanför Do While-loopen.
Nu är det bara att klura på hur jag gör en else if för hur man skriver ut något om det är inom 3 siffror ifrån slump_talet..
Yngve skrev:Jagchar aldrig kodat C# men jag tror inte att man kan skriva så här:
Skriv istället något liknande
if (Math.Abs(svar-slump_tal) < 4)
{
}
Testade det utan framgång men ska testa att modifiera det lite och se om jag förstår vad som försiggår. Tack för svaret.
ximon skrev:
Såhär skulle du kunna göra :)
if(svar == slumptal){
// du har vunnit!
}else if(svar > slumptal+3) {
// försöket är för högt!
}else if(svar < slumptal-3){
// försöket är för lågt!
}else {
// försöket var väldigt nära!
}
ximon skrev:Jag löste felet nu. Det var att svaret måste lagras utanför Do While-loopen.
Nu är det bara att klura på hur jag gör en else if för hur man skriver ut något om det är inom 3 siffror ifrån slump_talet..
Ja, det 'svar' som används inuti loopen och det som används i testet nedanför loopen är två olika variabler. Den senare ändrar aldrig värde. Jag vet inte hur du ändrade, men den enklaste ändringen är att ta bort "int" i "int svar" inuti loopen.
Edit: slumptal +-3 tolkas troligen likadant som slumptal +(-3), vilket är samma som slumptal - 3.
Eventuellt kan man ordna så kompilatorn varnar för det första skrivsättet, eftersom man troligen menar något annat.