1
svar
286
visningar
Lottobollar (A nivå)
Hallå.
jag ska hålla mig kort. Programmet ska lotta ut två tal som ej är dubblerade (verka fått det funka) och sedan ska text skrivas ut beroende på om första, andra, alla eller inga matchar. Problemet jag får nu är i nedre delen av koden där min if-statement är. Den första där alla matchar aktiveras aldrig. Den skriver istället ut en av de där under (inte sista (else)).
Suttit i 10 timmar med detta nu och testat vilket är rätt pinsamt. Behöver något som förklarar vad som är rätt och fel här.
using System;
using System.Net.NetworkInformation;
namespace Buss
{
class Program
{
public static void Main(string[] args)
{
int[] nummer = new int[10];
int[] input = new int[10];
Console.WriteLine("Please enter 10 numbers: ");
for (int i = 0; i < nummer.Length; i++)
{
Console.Write("Number {0}: ", i + 1);
nummer[i] = int.Parse(Console.ReadLine());
input = nummer;
}
Console.WriteLine("Kanon, nu kommer 2 nummer slumpas fram....");
Console.WriteLine();
Console.WriteLine("Klicka på enter när du känner dig redo!");
Console.ReadKey();
Console.WriteLine();
Random randomobject = new Random();
int[] arrayrandom = new int[2];
do
{
for (int i = 0; i < 2; i++)
{
arrayrandom[0] = randomobject.Next(1, 4);
arrayrandom[1] = randomobject.Next(1, 4);
if (arrayrandom[1] == arrayrandom[0])
{
i--;
}
}
} while (arrayrandom[0] == arrayrandom[1]);
for (int i = 0; i < nummer.Length; i++)
{
if (arrayrandom[0] == input[i] && arrayrandom[1] == input[i])
{
Console.Write("Talen blev {0} och {1}. Grattis! Båda matchade! Du vann ett vokabulär på 1300 ord. \nTryck enter för att avsluta:", arrayrandom[0], arrayrandom[1]);
break;
}
else if (arrayrandom[0] == input[i])
{
Console.WriteLine("Talen blev {0} och {1}. Nr-{2} matchade med dina gissningar. Du vann en relativt stor kaka. \nTryck enter för att avsluta:", arrayrandom[0], arrayrandom[1], arrayrandom[0]);
break;
}
else if (arrayrandom[1] == input[i])
{
Console.WriteLine("Talen blev {0} och {1}. Nr-{2} matchade med dina gissningar. Du vann en relativt stor kaka. \nTryck enter för att avsluta:", arrayrandom[0], arrayrandom[1], arrayrandom[1]);
break;
}
else
{
Console.WriteLine("Talen blev {0} och {1}. Tyvärr matchade det inte dina gissningar. \nTryck enter för att avsluta:", arrayrandom[0], arrayrandom[1]);
break;
}
}
Console.ReadKey();
}
}
}
Gissar att problemet är break.
Skrev det kortare:
do
{
arrayrandom[0] = randomobject.Next(1, 4);
arrayrandom[1] = randomobject.Next(1, 4);
} while (arrayrandom[0] == arrayrandom[1]);
int correct0 = 0;
int correct1 = 0;
for (int i = 0; i < nummer.Length; i++)
{
if (arrayrandom[0] == input[i])
correct0 = i+1;
if (arrayrandom[1] == input[i])
correct1 = i+1;
}
Console.Write("Talen blev {0} och {1}. ", arrayrandom[0], arrayrandom[1]);
if (correct0 > 0 && correct1 > 0)
Console.WriteLine("Grattis! Båda matchade! Du vann ett vokabulär på 1300 ord.");
else if (correct0 > 0)
Console.WriteLine("Nr {0} matchade med dina gissningar. Du vann en relativt stor kaka.", correct0);
else if (correct1 > 0)
Console.WriteLine("Nr {0} matchade med dina gissningar. Du vann en relativt stor kaka.", correct1);
else
Console.WriteLine("Tyvärr matchade inte någon av dina gissningar.");
Console.Write("Tryck enter för att avsluta:");
Console.ReadKey();
Console.WriteLine();