if och else med vektorer
Hej! Jag sitter fast på en uppgift i programmering 1 som kalas för "Lottobollar" där målet är att man ska skapa ett program som skapar ett lottospel där man skriver in 10 siffror i en vektor och sedan ska en random siffra genereras där programmet sedan kollar om man har några eventuella matchningar.
Här är min kod enså länge :
Random randomerare = new Random();
int slumptal = randomerare.Next(1, 10);
int[] numbers = new int[10];
Console.WriteLine("Ange tio hetal mellan 1 och 10 : ");
for (int i= 0; i < 10; i++)
{
Console.WriteLine("Nummer: ");
int data = int.Parse(Console.ReadLine());
numbers[i] = data;
}
Console.WriteLine("----------Dina nummer-----------");
for (int i= 0; i < 10; i++)
{
Console.WriteLine(numbers[i]);
if (i == slumptal)
{
Console.WriteLine("Grattis! Du fick rätt," + " " + slumptal + " " + "var korrekt!");
}
else if (i != slumptal)
{
Console.WriteLine("Tyvärr du hade inte rätt");
}
Mitt problem kommer då att både jag och uppgiften vill att alla siffrorna som man har listat upp i vektorn ska raddas upp på rad och sedan kollar programmet om man har några matchningar. Med detta programmet jag skrivit ovan kommer denna kodsträng
Console.WriteLine("Grattis! Du fick rätt," + " " + slumptal + " " + "var korrekt!");
direkt efter siffran i vektorn och inte efter att alla siffror har blivit upplistade som jag vill.
Jag vill även sen även kunna skriva till att om man inte fick några matchningar alls ska en text förklara det. Men om jag använder en else if sats så kollar den igen alla siffror i vektorn och skriver ut kodsträngen
Console.WriteLine("Tyvärr du hade inte rätt");
efter alla siffror i vektorn.
Använder jag if och else med vektorer korrekt i min kod eller är det helt fel. Om jag vill få slutsvaret i programmet efter alla siffror i vektorn hur ska jag göra då?
Mvh
Luda
Välkommen till Pluggakuten!
Tips: Använd forumets kodfunktion så blir koden lättare att läsa. Tryck på {;} i verktygsfältet i rutan där du skriver ett nytt inlägg.
Random randomerare = new Random();
int slumptal = randomerare.Next(1, 10);
int[] numbers = new int[10];
Console.WriteLine("Ange tio hetal mellan 1 och 10 : ");
for (int i = 0; i < 10; i++)
{
Console.WriteLine("Nummer: ");
int data = int.Parse(Console.ReadLine());
numbers[i] = data;
}
Console.WriteLine("----------Dina nummer----------");
for (int i = 0; i < 10; i++)
{
Console.WriteLine(numbers[i]);
if (i == slumptal)
{
Console.WriteLine("Grattis! Du fick rätt," + " " + slumptal + " " + "var korrekt!");
}
else if (i != slumptal)
{
Console.WriteLine("Tyvärr du hade inte rätt");
}
Till att börja med ska du nog jämföra slumptal med numbers[i], inte med i.
Vad ska hända om du anger rätt tal flera gånger? Ska det skrivas ut att du hade rätt flera gånger också?
En sak du kan göra är att införa en variabel som visar om du har någon korrekt gissning hittills. Jag vet inte hur man skriver s.k. booleska variabler i C#, men de kan ha värdet true eller false (eller kanske True eller False).
Om du deklarerar en sådan variabel, den kan få namnet 'korrekt', i början av programmet och sätter den till falsk, och sedan sätter den till sann om ett tal matchar, så kan du efter loopen testa variabeln och skriva ut om du gissade rätt eller inte, så behöver du inte skriva ut något alls i loopen.
Själva uppgiften säger igen om att man en kan eller ska kunna skriva in samma svar flera gånger, skriven in uppgiften här nedan:
I uppgiften ska besökaren få skriva in 10 stycken tal som lagras i en vektor.
När användaren skrivit in 10 stycken tal börjar spelet.
Nu ska ett tal slumpas fram.
Koden ska nu läsa alla tal som användaren skrivit in (i vektorn) och testa tal för
tal mot eventuella matchningar. Får man en matchning har man vunnit, d.v.s.
att talet i vektorn är lika med talet som slumpats fram
(I min kod har jag skrivit in så att en tal mellan 1 - 10 slumpas in, detta gör jag bara för att det blir enklare att se vad som händer när jag ange rätt tal i min vektor)