Autor Beitrag
N23
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mo 22.02.10 14:52 
Hallo zusammen!

Ich hoffe das hier der richtige Bereich ist für diesen Thread, ansonsten muss er bitte verschoben werden.

Ich habe heute aus Spass unter der Schule ein Lotto geschrieben 6 aus 45.

Leider gibt er mir am Ende die gleichen Zahlen was richtig getippt wurden und die die gezogen wurden doppelt aus und ja ich muss noch so einiges an Fehlern abfangen.

Will nur wissen warum er am schluss die gleichen Zahlen immer doppelt aus gibt.

Danke im Vorraus greetz N3o


ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Lotto_Spiel
{
    class Program
    {
        static void Main(string[] args)
        {
            //Dem User 6 Tipps eingeben lassen (Noch ohne prüfung der eingaben 1-45)

            Console.WriteLine("Willkommen bei 6 aus 45 der C Sharp Lotterie");
            Console.ReadKey();
            
            Console.WriteLine("Bitte geben Sie ihr 6 Tipps ein :");
            Console.Write(Environment.NewLine); 
            int[] myArraytipp = new int[6];
            int[] myArrayrandonZiehung = new int[6];
            Random newrZiehung = new Random();


            for (int i = 0; i < myArraytipp.Length; i++)
            {
                Console.WriteLine("Bitte geben Sie ihren Tipp ein");
                myArraytipp[i] = Convert.ToInt16(Console.ReadLine());
                Console.Write(Environment.NewLine);
                Console.WriteLine("Ihr Tipp Nr.:" + (i + 1) + " lautet :" +myArraytipp[i]);
            }

            Console.ReadLine();
            ausgabeTipp(myArraytipp);
            Console.ReadLine();

            //Zufallsgenerator der 6 Gewinn Zahlen mittels Random (noch ohne Prüfung ob doppelzahlen verhandeln)

            for (int i = 0; i < myArrayrandonZiehung.Length; i++) 
            {
                myArrayrandonZiehung[i] = newrZiehung.Next(145); 
            }
            Console.ReadLine();
            ausgabeZiehung(myArrayrandonZiehung);
            Console.ReadLine();
            Console.ReadLine();


            //Array vergleich welche und wie viele Zahlen der User richtig getippt hat 

            int zaehl = 0;
            int [] myArrayrichtig = new int[6];

            for (int i = 0; i < myArraytipp.Length; i++)
            {
                for (int j = 0; j < myArrayrandonZiehung.Length; j++)
                {
                    if (myArraytipp[i] == myArrayrandonZiehung[j])
                    {

                        
                        zaehl += 1;
                        for (int k = 0; k < myArrayrichtig.Length; k++)
                        {
                            myArrayrichtig[k] = myArraytipp[i];
                        }
                    }
                }
            }

            

            Console.WriteLine("Sie haben insgesamt :" + zaehl + " Zahlen richtig getippt." );
            ausgabeRichtigeZ(myArrayrichtig);//gibt leider immer noch doppelt aus.
            Console.ReadLine();


        }

        private static void ausgabeRichtigeZ(int[] myArrayrichtig) //ausgabe der richtigen oder gleichen Zahlen
        {
            Console.WriteLine("Die Gleichen Zahlen lauten:");
            for (int i = 0; i < myArrayrichtig.Length; i++)
            {
                Console.Write(" " + myArrayrichtig[i] + " ");

            }
        }

        private static void ausgabeZiehung(int[] myArrayrandonZiehung) //ausgabe der Gewinn Zahlen
        {
            Console.WriteLine("Die Gewinn Zahlen lauten:");
            for (int i = 0; i < myArrayrandonZiehung.Length; i++)
            {
                Console.Write(" " + myArrayrandonZiehung[i] + " ");

            }
        }

        private static void ausgabeTipp(int[] myArraytipp)   //ausgabe der getippten zahlen
        {
            Console.WriteLine("Ihre Zahlen getippten Zahlen lauten:");
            for (int i = 0; i < myArraytipp.Length; i++)
            {
                Console.Write(" " +myArraytipp[i]+ " ");
                
            }
        }
    }
}
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mo 22.02.10 15:16 
Hallo,

was meinst du mit doppelt?

Also die "Steuerung" ist sehr kompliziert, mit den ganzen ReadyKey / ReadLine.. muss man wie wild drauf rum drücken damit man weiter kommt.

Wegen deiner Auswertung ist die Frage was du in der dritten Schleife machst:

ausblenden C#-Quelltext
1:
2:
3:
4:
                        for (int k = 0; k < myArrayrichtig.Length; k++)
                        {
                            myArrayrichtig[k] = myArraytipp[i];
                        }


Was willst du damit bezwecken?

Gruß Daniel

Edit: Und sollte es nicht 6 aus 49 sein? ;)
Doppelte Zahlen kannst du überprüfen indem du schaust ob die "neue" Zahl bereits im alten Drin ist. Dafür hat ein Array die Funktion Contains und dann halt eine Schleife drum bis er eine Zahl gefunden hat die noch nicht vor kommt. Und int.TryParse anstatt Convert.ToInt16 würde die Robustheit deines Codes erhöhen.
N23 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mo 22.02.10 15:48 
ja sry das mit den ReadLine´s und -Key´s ist eine dumme angewohnheit.

in der letzten for schleife speichere ich die richtigen Werte in ein neues Array und geb diese dann aus in der letzten Methode aus.

Wenn er jetzt aber 1 richtige gefunden hat schreibt er die in das ganze Array(myArrayrichtig). (sihe Dateianhang)

greetz N3o

Moderiert von user profile iconNarses: BMP->PNG
Einloggen, um Attachments anzusehen!
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mo 22.02.10 15:53 
Das hast du richtig festgestellt... und der Code sagt ja auch genau das. Schreibe die zahl x in alle Felder des Arrays.

Überleg dir das nochmal :)
N23 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 23.02.10 21:47 
leider gestern keine zeit mehr gefunden, aber habe es jetzt hin bekommen und thx für die Hilfe. :)

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
for (int i = 0; i < myArraytipp.Length; i++)
            {
                for (int j = 0; j < myArrayrandonZiehung.Length; j++)
                {
                    if (myArraytipp[i] == myArrayrandonZiehung[j])
                    {
                        zaehl += 1;
                       
                        
                            myArrayrichtig[zaehl-1]  = myArraytipp[i];
                        
                    }
                }
            }



Ps.: Wir in Österreich spielen 6 aus 45.

greetz N23