13 svar
342 visningar
lagamba är nöjd med hjälpen
lagamba 132
Postad: 24 feb 2023 18:26

Lottouppgiften, funkar inte

Har en uppgift som heter Lotto: 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. 

Det står även följande kod men varför funkar det inte: För att skapa slumptal (mellan 1 och 21) i C# så kan man skriva:
Random slump = new Random();
slump = slump.Next(1,21)

 

Laguna Online 28700
Postad: 24 feb 2023 18:30 Redigerad: 24 feb 2023 18:35

Vad blir det för fel?

Jaha, jag ser. Felmeddelandena är till hjälp. Din variabel slump är en slumptalsgenerator, men den kan inte vara själva slumptalet på samma gång. Ändra slump till generator på rad 7 och 8, alltså rad 8 ska lyda

int slump = generator.Next(1,21);

 

lagamba 132
Postad: 24 feb 2023 19:10

Tack! Nu finns det inga fel. När jag ser resultatet nu trår jag att jag tolkat uppgiften fel? "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".

Såhär ser det ut nu :(

Laguna Online 28700
Postad: 24 feb 2023 19:28

Jag tycker din kod ser rätt ut. Skriv ut vad slumptalet blev på slutet så ser du om det borde ha matchat eller inte.

lagamba 132
Postad: 27 feb 2023 21:51

Det blir ingen Bingo när rätt svar anges..slumptalet var 17 här..hittar inte felet..

Välkommen! Ange tio valfria tal mellan 1 och 21
Number:10
Number:11
Number:12
Number:13
Number:14
Number:15
Number:16
Number:17
Number:18
Number:19
Tyvärr, försök på nytt
17

Laguna Online 28700
Postad: 27 feb 2023 21:55

Vi får skriva ut fler saker. Skriv ut vad element har för värde innan du jämför.

lagamba 132
Postad: 27 feb 2023 22:37
using System.Net.NetworkInformation;

class Program
{
    public static void Main(String[] args)
{
    Console.WriteLine("Välkommen! Ange tio valfria tal mellan 1 och 21");

        Random generator= new Random(); //genererar slumpat tal
        int slump = generator.Next(1,21); //slumpar tal mellan 1 och 21
        int min = 1;
        int max = 21;
        slump = generator.Next(min,max);
        

        int[] arr = new int[10]; //antal försök användaren får på sig.
            for (int i = 0; i <10; i++)
        {
            Console.Write("Number:");
            string st = Console.ReadLine();
            int element = Convert.ToInt32(st);
            arr[i] = element;
       }
            foreach (int element in arr)
        {
            if (element == slump)
                {
                Console.WriteLine("Bingo! Du vann!");
            }
            else
            {
                Console.WriteLine("Tyvärr, försök på nytt");

                Console.WriteLine("Slumptalet var " + slump);
                break;
            }
                }
            }
        }

Men det har jag redan gjort?

Laguna Online 28700
Postad: 27 feb 2023 22:49

Nej, jag menar före raden

if (element == slump)

lagamba 132
Postad: 28 feb 2023 09:37
       Console.Write("Number:");
            string st = Console.ReadLine();
            int element = Convert.ToInt32(st);
            arr[i] = element;
            element = Convert.ToInt32(element);
            element = int.Parse(st);
            }
            foreach (int element in arr)
        { 
            if (element == slump)
                {
                Console.WriteLine("Bingo! Du vann!");

Såhär står det, men blir ingen bingo vid korrekt svar..har jag placerat fel? Förstår inte vad jag gjort fel..

Laguna Online 28700
Postad: 28 feb 2023 10:05

Vi håller på att ta reda på vad som är fel. Skriv ut vad element har för värde innan du jämför, så vi ser om det är fel före den punkten eller efter.

lagamba 132
Postad: 28 feb 2023 10:56

Jag har förstått det, men när jag varken vet vart jag ska skriva det eller hur så visas felmeddelanden. Antingen när jag skriver på fel plats, ovan foreach eller strax innan. Eller när jag skriver värden på fel sätt. 

Har testat att placera den överallt och skriva på alla möjliga olika sätt så element ska få värden 1-21

Laguna Online 28700
Postad: 28 feb 2023 11:04

Visa koden när du försöker.

lagamba 132
Postad: 28 feb 2023 17:58

Testat bland annat följande och får felmeddelande not all code paths return a value

element = int.MinValue - int.MaxValue;

element = 1 - 21;

Laguna Online 28700
Postad: 28 feb 2023 19:42

Jag förstår inte vad du gör nu. Ändra inte element, skriv bara ut det.

Svara Avbryt
Close