Forum
Tipps
News
Menu-Icon

C# Wie soll ich das machen ?

Hallo,
Ich habe erst seit kurzem mit dem Programmieren angefangen jetzt habe ich eine Frage zu dem hier ?

using System;
using System.Collections.Generic;
using System.Text;

namespace LOTTO
{
    class Program
    {
        static void Main(string[] args)
        {
            int i;
            string nochmal;
            int tipp1;
            int tipp2;
            int tipp3;
            int tipp4;
            int tipp5;
            int tipp6;
            int anz;
            int y;
            int [] tipp = new int[6];

            anz = 0;
            Random r = new Random();
            do
            {


                Console.WriteLine("Lotto Zahlen");
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("Wie viele Tipps wollen sie");
                anz = Convert.ToInt32(Console.ReadLine());

                y = 1;
                while (y <= anz)
                {
                    for (i = 0; i < 6; i++)
                    {
                    tipp = r.Next(1, 45);
               

                }
                Console.WriteLine("Möchten sie Wiederholen");
                nochmal = Console.ReadLine();
                Console.Clear();
            }
            while (nochmal == "y");





        }


    }



}


Und zwar ich will Loto Zahlen machen aber sie dürfen sich nicht wiederholen kann mir jemand den Code aufschreiben und mir beschreiben was der Teil macht weil
Ich weiß nähmlich nicht was ich in die Schleifen schreiben soll
ich schaff das einfach nicht.
Danke mfg Anfänger XD
 


Antworten zu C# Wie soll ich das machen ?:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
3 Leser haben sich bedankt

Wie wärs damit:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LOTTO {

    class Program {
        static void Main(string[] args) {
            string nochmal;

            int anz = 0;
            int current;
            HashSet<int> tipp;

            Random r = new Random();
            do {
                Console.WriteLine("Lotto Zahlen");
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("Wie viele Tipps wollen sie");
                anz = Convert.ToInt32(Console.ReadLine());

                for (int j = 1; j <= anz; j++) {

                    Console.WriteLine("Tipp " + j);
                    tipp = new HashSet<int>();
                    for (int i = 0; i < 6; i++) {
                        do{
                            current = r.Next(1, 49);
                        } while (tipp.Contains(current));

                        tipp.Add(current);
                        Console.WriteLine(current);
                    }
                    Console.WriteLine();
                }
                Console.WriteLine("Möchten sie Wiederholen");
                nochmal = Console.ReadLine();
                Console.Clear();
            } while (nochmal == "y");
        }
    }
}

Zur erklärung was passiert:

do{
   current = r.Next(1, 49);
} while (tipp.Contains(current));
Das ist der Teil in dem Du sagst die Zahl darf sich nicht wiederholen.
du holst dir n Random zwischen 1 und 49 und das einfach solange, solang die generierte zahl bereits vorkommt, ist das nicht der fall wird sie im HashSet abgelegt.
tipp.Add(current);
Dein Array dürfte den gleichen Zweck erfüllen.

HashSet

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ne kleine Optimierung:

for (int i = 0; i < 6; i++) {
    do {
        current = r.Next(1, 49);
    } while (!tipp.Add(current));

    Console.WriteLine(current);
}

Und wieder eine Zeile gespart  ;D

Wenn du tipp jedesmal n = new HashSet() zuweist, wird das eigtl. als Liste angelegt oder killste damit die bisherigen Daten?
(sorry ich hatte bislang keinen Bock es zu probieren :) )

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Du meinst das? tipp = new HashSet<int>();
Damit kille ich die alten Daten, wobei ich mal stark annehme, dass C# auch nen Garbage Collector hat. Wenn nicht, liegen die halt noch irgendwo rum, man kommt aber nicht mehr dran.

Genau das meinte ich, thx :)
 

Zitat
Student: "Warum gibt es in C++ keine Garbagecollection?"
Übungsleiter: "Sind Sie groß genug allein über die Straße zu gehn? Dann können Sie Ihren Speicher auch allein aufräumen."

Danke,
Danke euch wie ich sehe steht vor mir viel Arbeit damit ich es begreifen kann !!!
Aber danke für eure hilfreichen Antworten

Wenns fragen oder unklarheiten gibt stell sie, ansonsten verfehlt das ganze hier seinen sinn. 


« C, C#, C++ ???Monodevelop Ubuntu C# Problem ? »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Programm
Siehe Software...

Quellcode
Ein Quellcode, auch als Quelltext bekannt, bezeichnet den unkompilierten Programm-Code einer Software. Quell- oder Programm-Code ist der auch für Menschen lesbare Co...

Unicode
Unicode ist ein international anerkannter Standard, der als universeller Zeichencode ("Universal Code") dient und durch das Unicode-Konsortium entwickelt und verwaltet wi...