Witam! Wczoraj zabrałem się za rozbudowanie mojej gierki toto-lotka, aby był prawdziwym symulatorem Multi-Multi. System losuje 20 liczb z przedziału 1-80, potem pyta nas o ilość kuponów chybił- trafił, potem wypisuje n kuponów po 6 liczb i porównuje ile się trafiło. Problem polega na tym, że nie do końca umiem zrobić, żeby liczby w danym kuponie się nie powtarzały. Z liczbami wylosowanymi jakoś mi poszło, bo poczytałem sobie o kolekcjach i zamieniłem tablicę jednowymiarową na listę. Sprawa była wtedy prosta. Z kuponami jest ciężej, bo możemy sobie wybrać ilość kuponów, co daje nam tablicę dwuwymiarową [n kuponów,6]. Jak jakłatwiej zrobić, żeby w jednym kuponie nie powtarzały się liczby?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace Loteria
{
class Program
{
public static int k;
public static string q;
public static List<int> losowane2 = new List<int>();
public static int[] losowane = new int[20];
public static int[,] kupony;
public static int[] trafione;
public static int[] jedynkidwojki=new int[6];
public static int mnoznik;
public static Random r=new Random();
public static void LosowanieLiczb()// LOSOWANIE LICZB KONKURSOWYCH
{
for(int i=0;i<20;i++)
{
losowane[i]=r.Next(1,80);
}
}
public static void LosowanieLiczb2()// NOWY SPOSÓB LOSOWANIA
{
while (losowane2.Count != 20)
{
int i = r.Next(1, 80);
if (losowane2.Contains(i)) continue;
else losowane2.Add(i);
}
}
public static void WypisywanieLiczb()// WYPISYWANIE LICZB KONKURSOWYCH
{
Console.WriteLine("Wylosowane liczby to: ");
for (int i = 0; i < 20; i++)
{
Console.Write(losowane[i]+" ");
}
Console.WriteLine("\n");
}
public static void PobieranieIlosciKuponow()// POBIERANIE ILOŚCI KUPONÓW
{
Console.WriteLine("Podaj ilość kuponów chybił-trafił");
k = int.Parse(Console.ReadLine());
}
public static void LosowanieKuponow()//LOSOWANIE LICZB Z KUPONÓW1
{
kupony = new int[k, 6];
for (int i = 0; i < k; i++)
{
Console.Write("Kupon nr. " + (i + 1) + " to:");
for (int n = 0; n < 6; n++)
{
kupony[i, n] = r.Next(1,49);
Console.Write(kupony[i, n]+" ");
}
Console.WriteLine();
}
Console.WriteLine();
}
public static void SprawdzenieKuponow()//SPRAWDZENIE TRAFIEŃ W KUPONACH
{
trafione = new int[k];
for (int i = 0; i < k; i++)
{
for (int n = 0; n < 6; n++)
{
for (int z = 0; z < 20; z++)
{
if (kupony[i, n] == losowane[z]) trafione[i] = trafione[i] + 1;
}
}
}
}
public static void WypisanieTrafien()//WYPISANIE ILOŚCI TRAFIONYCH LICZB
{
Console.WriteLine("Twoja ilość wytypowanych: ");
for (int i = 0; i < k; i++)
{
Console.WriteLine("kupon nr. "+(i+1)+" : "+trafione[i]);
}
Console.WriteLine();
}
public static void JedynkiDwojkiTrojki()//SPRAWDZENIE ILOŚCI POSZCZEGÓLNYCH TRAFIEŃ(ILE JEDYNEK, DWÓJEK ITP.)
{
for (int i = 0; i < 6; i++)
{
for (int n = 0; n < k; n++)
{
if (trafione[n] == (i + 1)) jedynkidwojki[i] = jedynkidwojki[i] + 1;
}
Console.WriteLine("Ilość trafionych " + (i + 1) + " to : " + jedynkidwojki[i]);
}
}
public static void SprawdzenieWygranej()//SPRAWDZENIE KWOTY WYGRANEJ
{
int wygrana = (mnoznik * 2 * jedynkidwojki[2]) + (mnoznik * 8 * jedynkidwojki[3]) + (mnoznik * 120 * jedynkidwojki[4]) + (mnoznik * 1300 * jedynkidwojki[5]);
double cena=mnoznik*2.5*k;
double zarobek = wygrana - cena;
Console.WriteLine("\nCena kuponów to: "+cena+" zł.");
Console.WriteLine("Twoja wygrana to: " + wygrana + " zł!");
Console.WriteLine("Twój zarobek: " + zarobek + " zł!");
}
public static void Kontynuacja()//SPRAWDZENIE, CZY CHCE SIĘ KONTYNUOWAĆ
{
do
{
Console.WriteLine("Czy chcesz kontynuować? 't' - tak, 'n' - nie.");
q = Console.ReadLine();
switch (q)
{
case "t":
break;
case "n":
break;
default:
Console.WriteLine("Użyto innego znaku!");
Thread.Sleep(1000);
break;
}
Console.Clear();
} while (q != "t" && q != "n");
}
public static void Main()
{
do
{
Console.WriteLine("Podaj mnożnik kwoty: ");
mnoznik = int.Parse(Console.ReadLine());
PobieranieIlosciKuponow();
LosowanieLiczb2();
WypisywanieLiczb();
LosowanieKuponow();
SprawdzenieKuponow();
WypisanieTrafien();
JedynkiDwojkiTrojki();
SprawdzenieWygranej();
Kontynuacja();
Console.Clear();
} while (q != "n");
}
}
}