Laden...

Zufallszahlen mit switch ordnen

Erstellt von YpsilonZet vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.531 Views
Y
YpsilonZet Themenstarter:in
78 Beiträge seit 2007
vor 15 Jahren
Zufallszahlen mit switch ordnen

Hallo,
habe mal wieder ein Problem 🙁


lala = (int)zufall2.Next(0, 100000)

Hier weisen ich lala einen wert zwischen 0 und 99999 zu.
Nun mache ich dies mit 12 werten.
Diese möchte ich nun nach ihrer Zahl von klein nach Groß ordnen.
Dazu dachte ich mir das ich eine for-schleife mache mit einem switch:

for (int k = 0; k < 100000; k++)
            {
                switch (k)
                {
                    default:
                        break;
                    case lala: checken(lala);
                        break;
                    case lolo: checken(lolo);
                        break;
                     ...
                }
            }

Allerdings kommt nun die fehlermeldung das bei lala ein Konstantenwert erwartet wird.

Kann ich dies irgendwie umgehen oder was würdet ihr mir hier vorschlagen?

Icq: 201599054

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo YpsilonZet,

pack die Werte in ein Array oder eine List<int> und verwende anschließen die Sort-Methode.

herbivore

Y
YpsilonZet Themenstarter:in
78 Beiträge seit 2007
vor 15 Jahren

Erstmal danke für die hilfe

Hmm, komplettes Neuland für mich.
Gibts da keine möglichkeit, meine jetztige version beizubehalten? (Muss nicht schön programmiert sein, ist nur für mich ein privatprogramm)

Icq: 201599054

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo YpsilonZet,

die Umstellung ist vermutlich deutlich weniger Aufwand als deine Version zu "retten".

herbivore

K
231 Beiträge seit 2005
vor 15 Jahren

moin,

nach herbivore's Vorschlag:


List<int> LZahl = new List<int>();
Random ra = new Random();
      for ( B = 0 ; B < 12 ;B++)
            { 
                        LZahl.Add( ra.Next (0, 99999 ) ) ;
            }
LZahl.Sort();

vielleicht hilft es.

Raik

Y
YpsilonZet Themenstarter:in
78 Beiträge seit 2007
vor 15 Jahren

Danke herbivore und Kiar. Bin da jetzt schonmal etwas weiter.
Aber nun müsste ich noch wissen wie ich die aus der Liste wieder rausbekomm. Ich muss die dann nämlich jeweils in einen String konvertieren und jeweils in ein Label schreiben.
Als Beispiel:
Ich hab die int variable lala mit dem Random wert 3948 in der Liste. Nun muss ich den variablen namen (falls er der niedrigste ist) in das erste label schreiben.

Icq: 201599054

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo YpsilonZet,

also wie man auf ein Array oder eine List zugreift (LZahl _), setzen wird schon als bekannt voraus. Ich kann mir kaum Programme vorstellen, bei denen man ohne Listen auskommt. Das solltest du dir also unbedingt selbst in den einschlägigen Büchern anschauen.

herbivore

K
231 Beiträge seit 2005
vor 15 Jahren

Moin,

der niedrigste Wert

 LZahl[0].ToString();

der höhste Wert

LZahl[LZahl.Count-1].ToString();

Raik

Y
YpsilonZet Themenstarter:in
78 Beiträge seit 2007
vor 15 Jahren

Danke Kiar.

Sry, hatte bisher noch nie etwas mit listen zu tun. Hab mich da so gut es ging gedrückt.
Aber bis jetzt läuft alles.

Jetzt hab ich noch eine letzte frage und danach seid ihr mich los. 😉
Ich hab ja nun die Zufallszahlen und kann diese auch ausgeben. Aber was ist mit den Variablennamen? Ich wollte ja ursprünglich diese nur sortieren. Ausgeben wollte ich ja den Variablennamen: lala, lolo, ...
Gibt es da auch eine Möglichkeit?
Wenn ich ein Stichwort bekomm, sollte ich eig. damit zurecht kommen 😉

Icq: 201599054

K
231 Beiträge seit 2005
vor 15 Jahren

Moin,


int lala = LZahl[0];

und der Hinweis auf die linke Seite des Forum's, um Dir die Grundlagen anzueignen.

Raik

Y
YpsilonZet Themenstarter:in
78 Beiträge seit 2007
vor 15 Jahren

Nee, das meinte ich nicht.
Also hab bis jetzt:

Random zufall1 = new Random();
            if (checkBox1.Checked)
            {
                lala = (int)zufall1.Next(0, 100000);
                LZahl.Add(lala);
            }

Und dieses mit 13 checkboxen, wovon aber maximal 12 gleichzeitig true sein können.
Danach mache ich:

LZahl.Sort();
            for (int i = 0; i < LZahl.Count; i++)
            {
                switch (i)
                {
                    default:
                        break;
                    case 0:
                        label1.Text = LZahl[i].ToString();
                        break;
                    ....
                    case 11: 
                         label12.Text = LZahl[i].ToString();

Aber nun erhalte ich ja (logischerweise) die Zahlen. Eigentlich ging es mir aber nur darum das ich dann in den labels die variablennamen z.b. lala habe.

Icq: 201599054

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo YpsilonZet,

du kannst auch die Labels in ein Array packen. Dann kannst du dir den ganzen switch sparen. Aber wirklich noch mal die Bitte. Das sind keine Fragen für das Forum. Tritt nochmal einen Schritt zurück und schau es dir ein einem Buch an. Anschließend (also im Zweifel nach ein paar Tagen) wirst du alles selber lösen können.

herbivore

Y
YpsilonZet Themenstarter:in
78 Beiträge seit 2007
vor 15 Jahren

Ich melde mich mal wieder =)
Also bin nun so weit das ich ein eindimensionales int-array erzeuge, mit 2 dimensionen.
In [0] schreibe ich die zufallszahlen und in [1] zahlenwerte, denen ich dann später namen zuordnen kann.

Allerdings ist nun LZahl.Sort() nicht mehr in der lage das ganze zu sortieren und sagt, das ein Fehler beim Sortieren auftritt.

Meine Vermutung ist, dass LZahl nicht weiss, welche Dimension verglichen werden soll.
Hab es dann mit den verschiedenen Überladungstypen versucht und auch bei der msdn-hilfe nachgeschaut. Aber da fand ich auch nix.

Gibt es eine möglichkeit, Sort() zu sagen, welche Dimension es verwenden soll oder muss ich mir noch etwas anderes überlegen

Icq: 201599054