16 svar
458 visningar
LuriTrix är nöjd med hjälpen
LuriTrix 14
Postad: 27 mar 2022 15:18

Lottoboll vektor samt for-loop i C#

Hallå alla glada människor!

Jag håller på med en uppgift i Prog 1 och den heter Lottobollar. 

Syftet med uppgiften är att skriva en vektor som håller 10 stycken värden som användaren skriver in samt få datorn att slumpa fram ett  tal mellan 1 och 21. 

I koden så har jag ändrat från int lottoBoll = random.Next(1, 22); till int lottoBoll = random.Next(1, 11); för att det underlättar när jag testar koden och jag har märkt att man får aldrig "Bingo" fast man har skrivit rätt tal. 

Någon vänlig själ som kan förklara vad jag gör för fel?

 

Console.WriteLine("Välkommen till Lotto");
Console.WriteLine("Skriv in 10 stycken tal mellan 1 och 21");

int[] Lottorad = new int[10];//Skapa vektorn.


for (int i = 0; i < Lottorad.Length; i++)// Itererar för varje lottonummer som skrivs in.
{

string inPut = Console.ReadLine();
int siffror = Convert.ToInt32(inPut);// Konverterar från STR till INT.

 


if (siffror < 1 || siffror > 21)// Är lottonumret lägre eller högre än tillåtet?
{
Console.WriteLine("Skriv in ett nummer mellan 1 och 21.");
i--;//Gå tillbaka ett steg i vektorn.

}

else
{
continue;
}

}


Random random = new Random();
int lottoBoll = random.Next(1, 11);//Slumpar fram ett tal mellan 1 och 21.
//GLÖM INTE ATT ÄNDRA TILLBAKA TILL (1,22) EFTER TEST!!!!!

for (int i = 0; i < Lottorad.Length; i++)
{
if (Lottorad[i] == lottoBoll)// BINGO.
{
Console.WriteLine("*****BINGO*****BINGO*****BINGO***** ");
Console.WriteLine("Rätt lottonummer var: " + lottoBoll);
Console.ReadLine();
break;
}

else // Inte bingo.
{
Console.WriteLine("Tyvärr, du fick inte bingo!");
Console.WriteLine("Rätt lottonummer var: " + lottoBoll);
Console.ReadLine();
break;
}

}

Laguna Online 28613
Postad: 27 mar 2022 15:30

Ska det inte stå LottoRad[i] = siffror någonstans?

LuriTrix 14
Postad: 27 mar 2022 18:15
Laguna skrev:

Ska det inte stå LottoRad[i] = siffror någonstans?

Jo precis. Jag har ju inte skrivit att lottoraden är lika med siffrorna som skrivs in. 

Jag återkommer.

LuriTrix 14
Postad: 27 mar 2022 19:28
Laguna skrev:

Ska det inte stå LottoRad[i] = siffror någonstans?

Hmm, nu har jag försökt men jag förstår inte riktigt vart jag skall skriva lottoRad[i] = siffror;.

Jag har skapat en vektor som håller 10 värden och den heter lottoRad, sedan konverterar jag användarens input från STR till INT och variabeln heter "siffror". Det är ju rimligt att lottoRad[i] = siffror; skall stå efter det, eller hur? Men eftersom att det inte funkar så är inte det lösningen.

Laguna Online 28613
Postad: 27 mar 2022 19:40

Jag ser inte vad som kan vara fel. Prova att skriva ut både Lottorad[i] och lottoBol före raden

if (Lottorad[i] == lottoBoll)

LuriTrix 14
Postad: 27 mar 2022 20:38
Laguna skrev:

Jag ser inte vad som kan vara fel. Prova att skriva ut både Lottorad[i] och lottoBol före raden

if (Lottorad[i] == lottoBoll)

När jag skriver lottoRad[i] = siffror före raden "if (lottoRad[i] == lottoBoll) så får jag ett rött streck. Det står CS0103 The name "siffror" does not exist in the current context. Jag förstår inte vad du menar med att jag ska skriva ut lottoBoll för raden.

Laguna Online 28613
Postad: 27 mar 2022 20:48

Du får berätta vad som inte funkar i ditt inlägg #4.

LuriTrix 14
Postad: 27 mar 2022 21:05
Laguna skrev:

Du får berätta vad som inte funkar i ditt inlägg #4.

Ok, man får aldrig bingo trots att jag gissar rätt tal. Det ser ut så här:

Välkommen till Lotto
Skriv in 10 stycken tal mellan 1 och 21
1
2
3
4
5
6
7
8
9
10
Tyvärr, du fick inte bingo!
Rätt lottonummer var: 6

Det verkar som att programmet inte kan jämföra talen i vektorn med det slumpade talet. Stämmer det?

Laguna Online 28613
Postad: 27 mar 2022 21:14

Det är därför jag föreslog att du skriver ut de två sakerna som du jämför, så vi ser om nåt av dem har ett oväntat värde.

LuriTrix 14
Postad: 27 mar 2022 21:28 Redigerad: 27 mar 2022 21:40

Japp, då har jag skrivit ut både lottoRad samt lottoBoll och det som händer är att när jag har skrivit in 10 st tal så matar den ut två andra tal. Alltid 1 (lottoRad) +  slumpat tal (lottoBoll) . Det ser ut så här.

Välkommen till Lotto
Skriv in 10 stycken tal mellan 1 och 21
1
2
3
4
5
6
7
8
9
10

10
Tyvärr, du fick inte bingo!
Rätt lottonummer var: 10

Så det är något som inte stämmer med lottoRad[i]. Det är bara det första värdet som sparas i vektorn eller är det bara det första värdet som jämförs med det slumpade talet?

Laguna Online 28613
Postad: 27 mar 2022 21:55

Ja, nu ser jag. Du gör break när jämförelsen inte stämmer, så loopen kör bara ett varv i stället för att testa alla tal.

LuriTrix 14
Postad: 27 mar 2022 22:30 Redigerad: 27 mar 2022 23:31

Vet inte hur man tar bort inlägg så bort se ifrån detta.

LuriTrix 14
Postad: 27 mar 2022 23:38 Redigerad: 28 mar 2022 00:10
Laguna skrev:

Ja, nu ser jag. Du gör break när jämförelsen inte stämmer, så loopen kör bara ett varv i stället för att testa alla tal.

Varför kör den bara ett varv istället för att kolla alla tal?

Laguna Online 28613
Postad: 28 mar 2022 11:25

För att det är det break gör: den hoppar ur loopen.

LuriTrix 14
Postad: 28 mar 2022 17:37
Laguna skrev:

För att det är det break gör: den hoppar ur loopen.

God dagens!

Efter en god natts sömn så är jag tillbaka. Fit for fight. Självklart, nu känner jag mig lite dum. Trötthet och frustration är ingen bra kombination.

Jag går igenom det som händer i koden nu så du får gärna rätta mig om jag har fel. 

I första kodblocket skapar jag en vektor som håller 10 st värden, sedan matar jag in 10 st värden. För varje värde som skrivits in i vektorn så itererar den.

När detta är klart så går programmet vidare till nästa block.

Väl där så slumpas det fram ett tal mellan 1 och 21. Det slumpade talet jämförs med talen i vektorn för att sedan kolla om villkoret är sant eller falskt. Är villkoret falskt så fortsätter programmet till else och så fortsätter den tills alla tal har jämförts.

Där har jag ett problem. Nu när jag har tagit bort break så skriver programmet ut "Tyvärr, du fick inte BINGO" för varje tal som inte stämmer överens med det slumpade talet tills det kommer till talet som är lika med det slumpade talet. Då skriver den ut BINGO. 

Laguna Online 28613
Postad: 28 mar 2022 17:39

Ja, då får du låta bli att skriva ut något tills du vet.

LuriTrix 14
Postad: 28 mar 2022 19:17
Laguna skrev:

Ja, då får du låta bli att skriva ut något tills du vet.

Nu löste jag det! Tack för din hjälp och ditt tålamod.

Svara Avbryt
Close