C# segítség? többi lent.
Szeretnék csinálni egy random szám generátort, olyat,mint pl egy lottószám generátor, minden szelvényhez külön generál adott mennyiségű számot 5ös lottónál 1-45ig 5db számot, stb... megmondja, azt is, hogy legyen jocker, vagy nem!
Segítsetek nekem légyszives fontos lenne.
Köszönöm előre is a segítségeket, eddig jutottam, csak az alapokat ismerem, éppen tanulom a c# nyelvet, szóval légyszi ha lehet egyszerűen, hogy én is értsem még1x köszi: itt az eddigi megoldásom, de vmiért nem működik teljesen...
Tessék:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Lottó
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Üdvözöllek kedves felhasználó!");
Console.WriteLine("Ez a program lottó számokat generál.");
Console.WriteLine("A következő lottókhoz:");
Console.WriteLine("1: 5-ös lottó");
Console.WriteLine("2: 6-os lottó");
Console.WriteLine("3: Skandináv (7-es) lottó");
Console.WriteLine("4: Joker");
Console.WriteLine("5: Luxor");
Console.WriteLine("6: Kenó");
Console.WriteLine("7: Puttó");
Console.Write("Kérlek válaszd ki, hogy melyik lottó típushoz sorsolnál számot: ");
int l, m;
string tl;
l = Convert.ToInt32(Console.ReadLine());
tl = "o";
int s1, s2, s3, s4, s5;
switch (l)
{
case 1: tl = "5-ös Lottó"; break;
case 2: tl = "6-os lottó"; break;
case 3: tl = "Skandináv (7-es) lottó"; break;
case 4: tl = "Joker"; break;
case 5: tl = "Luxor"; break;
case 6: tl = "Kenó"; break;
case 7: tl = "Puttó"; break;
}
if (l < 8)
{
Console.WriteLine("Az általad választott lottó típus sorszáma: {0} és neve: {1}.", l, tl);
m = 1;
switch (m)
{
case 1:
Random vsz = new Random();
s1 = vsz.Next(1, 46);
s2 = vsz.Next(1, 46);
s3 = vsz.Next(1, 46);
s4 = vsz.Next(1, 46);
s5 = vsz.Next(1, 46);
if ((s1 == s2) && (s1 == s3) && (s1 == s4) && (s1 == s5) && (s2 == s3) && (s2 == s4) && (s2 == s5) && (s3 = s4) && (s3 == s5) && (s4 == s5))
{
Random vsz = new Random();
s1 = vsz.Next(1, 46);
s2 = vsz.Next(1, 46);
s3 = vsz.Next(1, 46);
s4 = vsz.Next(1, 46);
s5 = vsz.Next(1, 46);
Console.WriteLine ("A számok: A kiválasztott lottó neve: {0}, és a nyerőszámok: {1}, {2}, {3}, {4}, {5}", tl, s1, s2, s3, s4, s5);
}
else
{Console.WriteLine ("A számok: A kiválasztott lottó neve: {0}, és a nyerőszámok: {1}, {2}, {3}, {4}, {5}", tl, s1, s2, s3, s4, s5);}
}
{
Console.Write("Az általad választott számú lottó nem létezik! Kérlek indítsd újra a programot, és írj be egy számot a fennti listából!");
}
Console.ReadKey();
}
}
}
}
Szerintem itt az ideje abbahagynod ezt a vergődést, nagyon kezdő vagy még ehhez a feladathoz.
Próbáld meg egy kicsit később.
Egyetértek előttem szólóval. A hibák teljesen egyértelműek. Mindenesetre itt egy egyszerűbb megoldás. Annyi, hogy nincs benne védelem az azonos számok ellen, meg némileg kevesebb funkciója van, viszont a tiednél átláthatóbb.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Lotto
{
class Program
{
static List<int> számok = new List<int>();
static void Main(string[] args)
{
Console.WriteLine("1: 5-os lotto");
Console.WriteLine("2: 6-os lotto");
var input = Console.ReadLine();
if (input == "1") Ötös();
else if (input == "2") Hatos();
for (int i = 0; i < számok.Count; i++) Console.WriteLine(számok[i].ToString());
Console.ReadKey();
}
static void Ötös()
{
Random rand = new Random();
for (int i = 0; i < 5; i++) számok.Add(rand.Next(1, 46));
}
static void Hatos()
{
Random rand = new Random();
for (int i = 0; i < 6; i++) számok.Add(rand.Next(1, 40));
}
}
}
Én ezt alapból másként csinálnám.
Először is, bevezetnék egy közös interfészt, ami kb. ennyi:
interface ILottoGenerator {
public IEnumerable<int> GetLottoSzamok();
}
Ezt az interfészt valósítaná meg a többi osztályom:
class OtosLottoGenerator : ILottoGenerator {...}
class HatosLottoGenerator : ILottoGenerator {...}
Majd a főprogramban:
public static void Main(string[] args) {
ILottoGenerator Generator;
//beolvasod, mit választott a felhasználó
switch (Felhasználó választása) {
case Ötöslottó:
Generator = new OtosLottoGenerator();
break;
...
}
IEnumerable<int> LottoSzamok = Generator.GetLottoSzamok();
}
Egy-egy ilyen generátort úgy csinálnék meg, hogy pl. ötöslottó esetében csinálok egy listát, amit összekeverek, és az első öt elemét visszaadom:
public IEnumerable<int> GetLottoSzamok() {
IEnumerable<int> Szamok = Enumerable.Range(1, 90);
//Összekeverés
for (int i = 0; i < 5; i++) {
yield return Szamok.ElementAt(i);
}
}
Én mondjuk nem értem minek kellene ötös és hatoslottó generátornak külön osztály.
1 db általános osztály bőven elég, aminek paraméterként adjuk át, hogy hány számot kell generálni és, hogy mennyiből.
GenerateLottery(90, 5);
GenerateLottery(45, 6);
Az objektum orientált programozás egy picit korai egy kezdőnek, aki még a struktúrális programozást sem érti.
Én azt nem értem, a függvényeket miért később tanítják? Nem olyan ördöngősség az :)
További kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!