1 svar
167 visningar
holmen 1
Postad: 26 sep 2020 00:34

Städa upp kod + eventuella fel

Hej! Har skrivit ett program som slumpar ett tal mellan 1-100 och låter användaren gissa sig fram tills gissningen är korrekt. Därefter får användaren valet att "spela" igen.

Behöver lite hjälp med att städa upp koden så att det ser snyggt och tydligt ut, och gärna fixa eventuella fel.

Här är min kod:

//Deklarerar variabler
int gissningar, slump_tal, gissning;
string tal;

do
{
Console.WriteLine("Hej! Välkommen till gissa numret!");

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

Console.WriteLine("Gissa på ett tal mellan 1-100.");
tal = Console.ReadLine();
gissning = Convert.ToInt32(tal);

do
{
if (gissning < slump_tal && gissning + 1 == slump_tal)
{
Console.WriteLine("Det bränner! Gissa igen!");
tal = Console.ReadLine();
gissning = Convert.ToInt32(tal);
}
else if (gissning > slump_tal && gissning - 1 == slump_tal)
{
Console.WriteLine("Det bränner! Gissa igen!");
tal = Console.ReadLine();
gissning = Convert.ToInt32(tal);
}
else if (gissning < slump_tal)

{
Console.WriteLine("Du gissade för lågt, gissa igen!");
tal = Console.ReadLine();
gissning = Convert.ToInt32(tal);
}
else if (gissning > slump_tal)
{
Console.WriteLine("Du gissade för högt, gissa igen!");
tal = Console.ReadLine();
gissning = Convert.ToInt32(tal);

}
gissningar++;
} while (gissning != slump_tal);

if (gissning == slump_tal) 
{
Console.WriteLine("Grattis! Du gissade rätt! Du gissade " + gissningar + " gånger.");
}
Console.WriteLine("Skriv j om du vill spela igen :)");
}while (Console.ReadLine().ToLower() == "j"); 

Lindehaven 820 – Lärare
Postad: 26 sep 2020 14:26

Till att börja med finns det en mängd duplicerad kod som kan städas bort genom att flytta den till en egen metod:

tal = Console.ReadLine();
gissning = Convert.ToInt32(tal);

Eventuella fel hittas med hjälp av kodgranskning och test. Automatiska tester är mest effektiva.

Skriv metoder som kan testas utan att man sitter vid tangentbordet. För att göra det behöver man ta bort ReadLine, WriteLine o dyl från de metoder som ska testas. Flytta inmatning och utmatning till huvudprogrammet (t ex i main()) istället.

Programmera sedan testerna för dina metoder med förväntade resultat och låt datorn köra dem. Använd debugger och kodgranskning för att hitta felen.

Sånt här görs av professionella programmerare eftersom det är effektivt. Tyvärr verkar det inte läras ut i programmeringskurser.

Svara Avbryt
Close