Lottobollar c# programmering 1 funkar ej
Jag gör programmering 1 och är på en uppgift som handlar om vektorer osv. Problemet just nu är att oavsett om jag får 5 rätt säger vi. Så står det bara att jag har fått 2 rätt. Jag har absolut ingen aning om hur jag ska göra för att få detta att fungera. Och mitt andra problem är att även om jag får rätt så skriver programmet andra gånger ut ”Tyvärr, det blev inget bingo denna gången” så något är ju väldigt fel verkar det som.
Detta är min kod än så länge:
using System;
namespace Lotto
{
}
class Program
{
static void Main(string[] args)
{
int[] tal = new int[10]; //lagrar 10 tal i vektor
Random random = new Random(); // skapar slumpat tal
int lottoboll = random.Next(1, 21);
bool bingo = false;
// Introduktion & info till användaren
Console.Title = "Lottobollar - Emil K";
Console.WriteLine("Skriv in 10 st heltal mellan 1-20");
Console.WriteLine("Matchar något av dina tal med lottobollarna så får du bingo!");
// Låt användaren skriva in 10 tal
for (int i = 0; i < tal.Length; i++)
{
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine($"Tal: {i+1} "); //Mata in tal
tal[i] = int.Parse(Console.ReadLine());
if (tal[i] < 1 || tal[i] > 20)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Var vänlig välj endast tal mellan 1-20");
i--; // Återgå till föregående iteration för att användaren ska få chansen att skriva in rätt tal
}
}
Console.WriteLine("\n\nLottobollar:");
// Skriv ut de slumpmässiga talen mellan 1 och 20
for (int i = 0; i < tal.Length; i++)
{
Console.Write(random.Next(1, 21) + " ");
}
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("\n\nDin Lottorad:");
// Skriv ut de tal användaren skrev in
for (int i = 0; i < tal.Length; i++)
{
Console.Write(tal[i] + " ");
if (tal[i] == lottoboll)
{
bingo = true;
// avsluta loopen om användaren får en träff
}
}
if (bingo == true) //Bingo
{
Console.WriteLine("***Bingo***! Antal träffar: " + lottoboll);
}
else
{
Console.WriteLine("Tyvärr!, det blev inget bingo denna gången");
}
// Vänta innan programmet stängs
Console.ReadKey();
}
}
Du skriver ut "antal träffar" och sedan värdet på 'lottoboll', men det är ju inte antalet träffar.
Ska du slumpa fram ett värde eller tio värden?
Vad du gör här är att komma ihåg en lottoboll.
int lottoboll = random.Next(1, 21);
Här skriver du bara ut lite slumptal utan komma ihåg dem
for (int i = 0; i < tal.Length; i++)
{
Console.Write(random.Next(1, 21) + " ");
}
Här kollar du bara mot den enda lottobollen som du kommer ihåg.
for (int i = 0; i < tal.Length; i++)
{
Console.Write(tal[i] + " ");
if (tal[i] == lottoboll)
{
bingo = true;
// avsluta loopen om användaren får en träff
}
}
Jag har inte sett uppgiften men jag antar du skall väl hålla en array med alla rätta lottonummer sen för varje nummer som användaren matat in gå igenom hela den lotttoraden om värdet finns med
rad == array
Froslev skrev: "Jag gör programmering 1 och är på en uppgift som handlar om vektorer"
Precis, och det är lösningen på din uppgift. Som anders_k skrev: "du skall väl hålla en array med alla rätta lottonummer sen för varje nummer som användaren matat in gå igenom hela den lotttoraden om värdet finns med".
En array är lite som vektorer. Skillnaden är att en array har en fix storlek medan en vektor kan växa och minska.
Din uppgift är inte trivial så jag förslår att du läser din aktuella kurslitteratur en gång till.
Laguna skrev:Du skriver ut "antal träffar" och sedan värdet på 'lottoboll', men det är ju inte antalet träffar.
Ska du slumpa fram ett värde eller tio värden?
Aha shit ser det nu. Tack så mycket. Detta är vad min uppgift går ut på:
Utmaningen i uppgiften går ut på att ni ska skapa en vektor som håller tio värden. Programmet ska sedan iterera (upprepa sig) för varje position i vektorn. Detta sker med en for-loop. För varje "varv" i loopen så ska ni låta användaren skriva in en siffra. Denna siffra kommer då placeras i nästa lediga position i vektorn.
För detta ändamål använder ni en for-loop.
I nästa moment ska ni iterera genom vektorn som är ifylld med tal.
Om ett tal i vektorn matchar det inskrivna talet så får ni "bingo".
anders_k skrev:Vad du gör här är att komma ihåg en lottoboll.
int lottoboll = random.Next(1, 21);
Här skriver du bara ut lite slumptal utan komma ihåg dem
for (int i = 0; i < tal.Length; i++) { Console.Write(random.Next(1, 21) + " "); }
Här kollar du bara mot den enda lottobollen som du kommer ihåg.
for (int i = 0; i < tal.Length; i++) { Console.Write(tal[i] + " "); if (tal[i] == lottoboll) { bingo = true; // avsluta loopen om användaren får en träff } }
Jag har inte sett uppgiften men jag antar du skall väl hålla en array med alla rätta lottonummer sen för varje nummer som användaren matat in gå igenom hela den lotttoraden om värdet finns med
rad == array
Aha okej oj, Ja jag har aldrig programmerat förut så är lite lost. Hur hade man kunnat göra för att komma ihåg alla lottobollar samt slumptalen? Ska man använda en vektor då förmodar jag?
Detta är vad min uppgift går ut på:
Utmaningen i uppgiften går ut på att ni ska skapa en vektor som håller tio värden. Programmet ska sedan iterera (upprepa sig) för varje position i vektorn. Detta sker med en for-loop. För varje "varv" i loopen så ska ni låta användaren skriva in en siffra. Denna siffra kommer då placeras i nästa lediga position i vektorn.
För detta ändamål använder ni en for-loop.
I nästa moment ska ni iterera genom vektorn som är ifylld med tal.
Om ett tal i vektorn matchar det inskrivna talet så får ni "bingo".
Litet konstig beskrivning. Man skriver in tal och sedan ska man jämföra med ett inskrivet tal?
Laguna skrev:Litet konstig beskrivning. Man skriver in tal och sedan ska man jämföra med ett inskrivet tal?
Ja visst. Dock så löste jag uppgiften då jag insåg att jag gjort lite fel, efter det du skrev första gången. Jag tror det jag har gjort nu är så man ska göra. Men tar gärna lite tips på saker man kan göra bättre osv. Detta är vad jag kom fram till:
using System;
namespace Lotto
{
}
class Program
{
static void Main(string[] args)
{
int[] tal = new int[10]; //lagrar 10 tal i vektor
int[] inNummer = new int[10]; //lagrar användarens tal den matat in
Random random = new Random(); // skapar slumpat tal
int lottoboll = random.Next(1, 21);
bool bingo = false;
// Introduktion & info till användaren
Console.Title = "Lottobollar - Emil K";
Console.WriteLine("Skriv in 10 st heltal mellan 1-20.. klicka enter mellan varje tal");
Console.WriteLine("Matchar något av dina tal med lottobollarna så får du bingo!");
for (int i = 0; i < tal.Length; i++)
{
tal[i] = random.Next(1, 21);
}
Array.Sort(tal);
for (int i = 0; i < inNummer.Length; i++)
{
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine("tal: " + (i + 1)); //Mata in 10st tal
inNummer[i] = int.Parse(Console.ReadLine());
if (inNummer[i] < 1 || inNummer[i] > 20)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Var vänlig välj endast tal mellan 1-20");
i--; // Återgå till föregående iteration för att användaren ska få chansen att skriva in rätt tal
}
}
int rättGissning = 0;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("\n\nRäknar ut resultat..");
for (int i = 0; i < inNummer.Length; i++)
{
for (int j = 0; j < tal.Length; j++)
{
if (tal[i] == inNummer[j])
rättGissning++;
}
}
Console.WriteLine("\n\nLottobollar:");
// Skriv ut de slumpmässiga talen mellan 1 och 20
for (int i = 0; i < tal.Length; i++)
{
Console.Write(tal[i] + " ");
}
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("\n\nDin Lottorad:");
// Skriv ut de tal användaren skrev in
for (int j = 0; j < inNummer.Length; j++)
{
Console.Write(inNummer[j] + " ");
for(int i = 0; i < tal.Length; i++)
if (tal[i] == inNummer[j])
{
bingo = true;
// avsluta loopen om användaren får en träff
}
}
Console.ForegroundColor = ConsoleColor.Green;
if (bingo == true) //Bingo
{
Console.WriteLine($"***Bingo***! Antal träffar: " + rättGissning);
}
else
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Tyvärr!, det blev inget bingo denna gången");
}
// Vänta innan programmet stängs
Console.ReadKey();
}
}