Sitzpaln Programm Hilfe!

  • VB.NET
  • .NET (FX) 4.0

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Trade.

    Sitzpaln Programm Hilfe!

    Hallo,
    ich wollte für meine klasse ein sitzplan programm erstellen und kommt nicht weiter da die random namen sich immer wieder wiederholen :( weis jemand was man machen kann das jeder name nur einmal vorkommt?

    PS: weis jemand wie man einstellt das man selber immer nur neben ausgesucheten personen sitzt?

    Danke im Vorraus









    Public Class Form1


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    TextBox2.Clear()
    TextBox3.Clear()
    TextBox4.Clear()
    TextBox5.Clear()
    TextBox6.Clear()
    TextBox7.Clear()
    TextBox8.Clear()
    TextBox9.Clear()
    TextBox10.Clear()
    TextBox11.Clear()
    TextBox12.Clear()
    TextBox13.Clear()
    TextBox14.Clear()
    TextBox15.Clear()
    TextBox16.Clear()
    TextBox17.Clear()
    TextBox18.Clear()
    TextBox19.Clear()
    TextBox20.Clear()
    TextBox21.Clear()
    TextBox22.Clear()
    TextBox23.Clear()
    TextBox24.Clear()
    TextBox25.Clear()

    Dim randomizer As New Random
    Dim vornamen(26) As String
    vornamen(0) = "Leonardo"
    vornamen(1) = "Jonas"
    vornamen(2) = "Niklas"
    vornamen(3) = "Julia"
    vornamen(4) = "Eila"
    vornamen(5) = "Matthias"
    vornamen(6) = "Julius"
    vornamen(7) = "Tim F."
    vornamen(8) = "Lucy"
    vornamen(9) = "Simon"
    vornamen(10) = "Michael"
    vornamen(11) = "Tim K."
    vornamen(12) = "Kevin"
    vornamen(13) = "Katja"
    vornamen(14) = "Manuel"
    vornamen(15) = "Clemence"
    vornamen(16) = "Emilio"
    vornamen(17) = "Marcel"
    vornamen(18) = "Marian"
    vornamen(19) = "Jana"
    vornamen(20) = "Tobias"
    vornamen(21) = "Magdalena"
    vornamen(22) = "Sarah"
    vornamen(23) = "Vincent"
    vornamen(24) = "Christian"
    vornamen(25) = "Leon"
    vornamen(26) = "Paul"

    TextBox2.Text = vornamen(randomizer.Next(0, 26))
    TextBox3.Text = vornamen(randomizer.Next(0, 26))
    TextBox4.Text = vornamen(randomizer.Next(0, 26))
    TextBox5.Text = vornamen(randomizer.Next(0, 26))
    TextBox6.Text = vornamen(randomizer.Next(0, 26))
    TextBox7.Text = vornamen(randomizer.Next(0, 26))
    TextBox8.Text = vornamen(randomizer.Next(0, 26))
    TextBox9.Text = vornamen(randomizer.Next(0, 26))
    TextBox10.Text = vornamen(randomizer.Next(0, 26))
    TextBox11.Text = vornamen(randomizer.Next(0, 26))
    TextBox12.Text = vornamen(randomizer.Next(0, 26))
    TextBox13.Text = vornamen(randomizer.Next(0, 26))
    TextBox14.Text = vornamen(randomizer.Next(0, 26))
    TextBox15.Text = vornamen(randomizer.Next(0, 26))
    TextBox16.Text = vornamen(randomizer.Next(0, 26))
    TextBox17.Text = vornamen(randomizer.Next(0, 26))
    TextBox18.Text = vornamen(randomizer.Next(0, 26))
    TextBox19.Text = vornamen(randomizer.Next(0, 26))
    TextBox20.Text = vornamen(randomizer.Next(0, 26))
    TextBox21.Text = vornamen(randomizer.Next(0, 26))
    TextBox22.Text = vornamen(randomizer.Next(0, 26))
    TextBox23.Text = vornamen(randomizer.Next(0, 26))
    TextBox24.Text = vornamen(randomizer.Next(0, 26))
    TextBox25.Text = vornamen(randomizer.Next(0, 26))
    TextBox26.Text = vornamen(randomizer.Next(0, 26))


    End Sub


    End Class
    1. Benutze bitte den VB-Codetag zum richtigen Formatieren des Codes:

    [code = vb]Quellcode[/code]
    (ohne Leerzeichen)

    2. 25 TextBoxen sind nicht wirklich gut, das ist schon eher ein Designfehler.
    3. Du solltest Dir ne gescheite Architektur zuerstmal bauen, also Controls richtig benennen, so ist das unübersichtlich.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Willkommen im Forum. :thumbup:

    TheProgrammer schrieb:

    das jeder name nur einmal vorkommt?
    Leg Dir ein Array an, in dem jeder Index nur ein Mal vorkommt (ori). Leg Dir ein Array an, dass Du zufällig befüllst (nb). Sortiere das zufällig befüllte Feld und das eineindeutige mit. Verwende das umsortierte eineindeutige Feld als Indizes für Deine Textboxen.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim randomizer As New Random
    3. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    4. Dim vornamen() As String = {"Leonardo", "Jonas", "Niklas", "Julia"}
    5. Dim boxes() As TextBox = {TextBox1, TextBox2, TextBox3, TextBox4}
    6. Dim ori(3) As Integer
    7. Dim nb(3) As Integer
    8. For i = 0 To 3
    9. ori(i) = i
    10. nb(i) = randomizer.Next(0, 4)
    11. Next
    12. Array.Sort(nb, ori)
    13. For i = 0 To 3
    14. boxes(i).Text = vornamen(ori(i))
    15. Next
    16. End Sub
    17. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Trade schrieb:

    1. Benutze bitte den VB-Codetag zum richtigen Formatieren des Codes:

    [code = vb]Quellcode[/code]
    (ohne Leerzeichen)

    2. 25 TextBoxen sind nicht wirklich gut, das ist schon eher ein Designfehler.
    3. Du solltest Dir ne gescheite Architektur zuerstmal bauen, also Controls richtig benennen, so ist das unübersichtlich.


    Kontraproduktiv! :/

    Man nehme einen Blick auf seine Beiträge im Forum (1!) und seinen Programmer-Stil (...). Daraus lässt sich schließen: Er hat scheinbar noch nicht viel Programmier-Erfahrung bzw. -Kenntnisse.
    Dass er "Designfehler" gemacht hat, ist uns offensichtlich, anhand deiner Aussage, weiß er aber nicht mal, wieso dem so ist.
    Was verstehst du noch unter einer gescheiten Architektur außer der Umbenennung der Controls? So wie ich das sehe, wäre besonders bei einem Stundenplan ein sehr optisch geprägter Aufbau von Nutzen...

    An den OT:
    Wenn du es dir ganz einfach machen möchtest und dir Performanz egal ist, kannst du auch einfach mit einer Schleife zufällig Namen aus deiner Liste herausnehmen, nach einer leeren Textbox/einem leeren Platz suchen, den Namen dort einfügen und in eine weitere Liste "Eingefügt" einfügen. Beim nächsten zufälligen Namen guckst du, ob dieser Name bereits in deiner "Eingefügt"-Liste vorhanden ist: Wenn ja, nimm einen anderen Namen und mach damit weiter. Das wäre ein schlampiger, schneller aber für deine Zwecke wahrscheinlich einfacherer Ansatz... Und wenn dieses Plätze-Verteilen einmal fertig ist, kannst du dir auch über anderes wie gewünschte Sitzparter Gedanken machen.

    MfG,
    X-Zat / Mo
    Hi TheProgrammer,

    dafür, suchst du dir die Plätze neben dir und füllst diese nur mit den ausgesuchten Personen.
    Je nach dem, wie kompliziert/umfangreich es werden soll, kann man an die Sache rangehen.

    Zum Beispiel könntest Du dir eine liste anlegen und dort nur die Leute reinschreiben welche Du präferierst:

    Dafür setzt Du dich am besten als erstes in den Plan, ermittelst dann die anzahl der Plätze neben dir.
    Diese Plätze (in deinem bisherien Code noch/nur als Textboxen vorhanden), füllst Du dann zuerst mit
    zufällig gewählten Personen aus deiner Liste der bevorzugten Leute.
    Der Rest füllt, zusammen mit den anderen Namen die übrigen Plätze auf.

    Das wäre ein weg, noch lange wohl nicht der beste, aber schon mal ein stück weiter.
    Das ganze kann man dann noch belieb erweitern und umschreiben, je nach dem wie weit/gut
    Du schon programmieren kannst.

    Mit Liste ist die List(Of T) gemeint, kann aber auch durch ein Array ersetzt werden.
    MSDN: List<T>-Klasse
    was würde der Code dir nützen - du würdest eh nix davon verstehen.

    Also die meisten auf vbp setzen voraus, dass jmd hier eine Frage stellt, nicht um an den Code zu kommen, sondern um programmieren zu lernen.
    anders hat die Veranstaltung auch keinen Sinn, denn da könnten wir einfacher für dich dein Proggi schreiben.
    Die Controls sollten zunächst richtige Namen haben, dass heißt, Du benennst sie nach dem, was sie machen.
    Also nicht Button1, Button2 usw. Denn was machst Du, wenn du nen großes Projekt hast? Dann verlierst Du selbst den Überblick.
    Also: sayHelloButton oder was auch immer... Denn dann kannst Du mir spontan sagen, was welcher Button macht, so nicht.

    Dann natürlich OOP usw. ist für ne gute Architektur wichtig. Da guckste einfach mal bei Google "OOP VB".
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: