Laden...

Werte ausgeben

Erstellt von nutrian02 vor 18 Jahren Letzter Beitrag vor 18 Jahren 4.659 Views
N
nutrian02 Themenstarter:in
66 Beiträge seit 2006
vor 18 Jahren
Werte ausgeben

Hallo,

ich bin dabei, ein kleines Lotto-Programm zu schreiben. Habe für jede Zahl jeweils einen Button und ein Label-Steuerelement gesetzt.
Die sechs Zahlen lege ich mit Random in ein Array und weise jeden Arraywert jeweils einer Variablen zu.

Mein Problem ist jetzt: Wie kann ich dem Button sagen, dass er - nachdem er gedrückt wurde - die entsprechende Zahl in das entsprechende label setzt?

Gruss, nutrian02

1.549 Beiträge seit 2004
vor 18 Jahren

Einfach zahl der Text Eigenschaft des label1 zuweisen

this.label1.Text = zahl.ToString();

Edit: Falsches Forum eigendlich Windows Forms

Wir Arbeiten eigendlich nicht wir nehmen nur das geld

4.221 Beiträge seit 2005
vor 18 Jahren

Ich hab Dir mal schnell was zusammengeschraubt...

Ausgangslage:

Es gibt nur diese 6 Labels welche bereits auf dem Form existieren (man könnte diese ja auch generieren (aber das ist ne andere Geschichte))... alternativ sind auch Ausgaben der Werte im Grid usw... denkbar..

Naja spiel mal damit rum und hab Spass damit 🙂



			//ein Array welches die Labels enthält (diejenigen welche Du schon auf dem Form hast)
			Label[] labels=new Label[]{this.label1,this.label2,this.label3,this.label4,this.label5,this.label6};
			//der Zufallsgenerator .. Initialisiert mit einer "Zufallszahl"
			Random random = new	Random(unchecked((int)DateTime.Now.Ticks));
			//die SortedList welche die Zufallszahlen aufnimmt und sortiert
			SortedList values=new SortedList();
			//solange ich nocht nicht alle 6 Zahlen habe
			while(values.Count<6)
			{
				//erzeuge eine neue Zufallszahl im Bereich von 1 bis 46 (je nach Lottosystem)
				int newRandom=random.Next(1,46);
				//wenn der Wert noch nicht gezogen wurde (so verhinderst Du eine Mehrfachziehung derselben Zahl
				if (!values.ContainsKey(newRandom))
				{
					//Füge die Zahlen ein (eigentlich würde ja der Key genügen (für Sortierung und Ausgabe)
					values.Add(newRandom,newRandom);
				}
			}
			//Abfüllen der in labels enthaltenen Labels
			for (int i=0;i<6;i++)
			{
				//ziehe die Werte nach dem Index aus der SortedList (so sind diese schön in der richtigen Reihenfolge)
				labels[i].Text=values.GetByIndex(i).ToString();
			}


Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

N
nutrian02 Themenstarter:in
66 Beiträge seit 2006
vor 18 Jahren

Vielen Dank euch beiden,

das Programm hab ich soweit verstanden und auch bei mir eingebunden.
Jetzt wäre nur meine Frage, wie ich die einzelnen Zufallszahlen in ein array legen kann, wo ich sie von einzelnen buttons abrufen kann. In deinem Programm werden sie ja direkt auf den labels angezeigt.
Ich will die sechs Zahlen also erzeugen, in einem array speichern und dann sortiert nacheinander per Button_Click auf die labels ausgeben.

4.221 Beiträge seit 2005
vor 18 Jahren

Original von nutrian02
das Programm hab ich soweit verstanden und auch bei mir eingebunden.

Wenn Du den Code wirklich verstanden hast, dann findest Du die Lösung 😁

Anderenfalls musst Du die Frage halt detaillierter stellen

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

1.549 Beiträge seit 2004
vor 18 Jahren

Schau dir mal die Variable values an 😉

Wir Arbeiten eigendlich nicht wir nehmen nur das geld

N
nutrian02 Themenstarter:in
66 Beiträge seit 2006
vor 18 Jahren

Hallo Programmierhans,

ich hätte da nochmal ne Frage zu dem Lotto-Programm.

Hier erstmal mein Quellcode:

public MainForm()
		{
			
			InitializeComponent();
		
			int erstezahl, zweitezahl, drittezahl, viertezahl, fünftezahl, sechstezahl;

			int[] labels = new int[6];

			Random random = new Random(unchecked((int)DateTime.Now.Ticks));

			SortedList values = new SortedList();


			for (int i = 0; i <= 5; i++)
			{	
				
				int newRandom = random.Next(1,50);	
				
				if (!values.ContainsKey(newRandom))
				{
					values.Add(newRandom,newRandom);
					labels[i] = newRandom;
				}
				
			}
			erstezahl = labels[0];
			zweitezahl = labels[1];
			drittezahl = labels[2];
			viertezahl = labels[3];
			fünftezahl = labels[4];
			sechstezahl = labels[5];


.....


void Button1Click(object sender, System.EventArgs e)
		{	
			this.label1.Text = erstezahl.ToString();
		}
		
		
		void Button2Click(object sender, System.EventArgs e)
		{
			this.label2.Text = zweitezahl.ToString();
		}

.......

Mein Problem ist.....dass die Zahlen nicht sortiert werden und gelegentlich mal ne 0 auf nem label erscheint.
(hab das mit der SortedList-Klasse noch nicht so verstanden.

Gruss,
nutrian02

4.221 Beiträge seit 2005
vor 18 Jahren

Original von nutrian02

  
  
??????			for (int i = 0; i <= 5; i++)  
  		{	  
  			  
??			erstezahl = labels[0];  
??			zweitezahl = labels[1];  
??			drittezahl = labels[2];  
??			viertezahl = labels[3];  
??			fünftezahl = labels[4];  
??			sechstezahl = labels[5];  
  

Ich hab Dir mal absichtlich nur die Fehler markiert (selber herausfinden steigert den Lerneffekt)

PS: labels[] find ich einen blöden Namen für ein int[]

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

N
nutrian02 Themenstarter:in
66 Beiträge seit 2006
vor 18 Jahren

Ich komm leider immer noch nicht so richtig weiter 🙁 , hast du nicht vielleicht noch nen kleinen Tipp für mich? Will ja eigentlich schon ganz gern selbst drauf kommen, weil ich ja nicht nur auf Hilfe angewiesen sein will!

4.221 Beiträge seit 2005
vor 18 Jahren

OK ich helfe noch ein wenig

Nimm den von mir geposteten Code und schau Dir im Debugger an was genau abläuft.

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

1.271 Beiträge seit 2005
vor 18 Jahren

@Programmierhans: Warum verwendest du für sowas ne SortedList? Ist das effizienter als ein stinknormales Array?

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

4.221 Beiträge seit 2005
vor 18 Jahren

@progger

Er will die Ausgabe sortiert...

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

1.271 Beiträge seit 2005
vor 18 Jahren

Das kann man aber doch auch mit Array.Sort(Array) machen.

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

4.221 Beiträge seit 2005
vor 18 Jahren

..... viele Wege führen nach Rom....

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo progger,

oder mit meinem Iter.Sort aus Hilfreiche Iteratoren / Improving Foreach . Könnte mir - wenn ich das richtig verstanden habe - auch vorstellen, dass hier

IsoIter.Range (IsoIter.Shuffle (Iter.For (1, 49)), 0, 6)

gut kommt.

herbivore

1.271 Beiträge seit 2005
vor 18 Jahren

Das ist natürlich am aller komfortabelsten 😉.

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

4.221 Beiträge seit 2005
vor 18 Jahren

Original von herbivore

IsoIter.Range (IsoIter.Shuffle (Iter.For (1, 49)), 0, 6)

Lach.... herbivore's eierlegendewollmilchsauklasse 🙂))

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...