7 svar
614 visningar
Froslev är nöjd med hjälpen
Froslev 15
Postad: 7 maj 2023 18:14

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();
        }
    }

Laguna Online 28669
Postad: 7 maj 2023 18:31

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?

anders_k Online 234
Postad: 7 maj 2023 20:06 Redigerad: 7 maj 2023 20:10

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

Peter_ 470 – Avstängd
Postad: 8 maj 2023 15:43

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. 

Froslev 15
Postad: 8 maj 2023 19:20
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".

Froslev 15
Postad: 8 maj 2023 19:42
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".

Laguna Online 28669
Postad: 8 maj 2023 21:43

Litet konstig beskrivning. Man skriver in tal och sedan ska man jämföra med ett inskrivet tal?

Froslev 15
Postad: 9 maj 2023 22:28
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();
        }
    }

Svara Avbryt
Close