Hilfe mit C# benötigt - Klassenbibliothek für Matrizenrechnung und Eingabe mit Text-Buttons

  • Hallo,

    wir haben im Moment von der Uni eine Programmier-Aufgabe. Darin sollen wir einen Matrizenrechner schreiben wobei die eigentlichen Rechenoperationen in eine eigene Klasse ausgelagert werden sollen. Da hab ich im Moment keine Fragen, weil ich absolut ahnunglos bin. ;) Wo ich aber eine Frage habe ist bei der Benutzereingabe: Wir sollen eine Textbox benutzen um Zahlen und alles mögliche einzugeben. Also man gibt den Text ein (Spaltenanzahl, Zeilenanzahl und so weiter) und durch einen Klick auf "Weiter" soll das dann alles gespeichert werden. Jetzt kommt die Frage: Beim ersten Klick ist das ja kein Thema, aber wenn ich den zweiten Klick mache soll der Rechner ja wissen, dass er nicht wieder die selbe Variable abspeichert sondern die nächste. Also wie kann ich das hinbekommen ohne für jeden einzelnen Schritt einen neuen Button anzulegen und denn dann mit Visible sichtbar zu machen? Wir haben überlegt, dass man den Button vielleicht einfach nach Klick auf Button1 in Button2 umbennen können, und dann nach Klick auf Button2 umbenennen in Button 3 usw. Das scheint aber nicht zu funktionieren. Eine weitere Alternative wäre, nach jedem Klick einen Zähler um 1 zu erhöhen und dann irgendwie mit if / else if zu arbeiten. Aber das geht doch bestimmt einfach, oder?

  • Mit einer Schleife durch einen Array iterieren? Wenn ich das richtig verstehe...

    Bin mir nicht sicher, ob ich die Problemstellung korrekt verstehe. Du gibst Zeilen/Spalten einer Matrix ein, und klickst Weiter. Dann gibst Zeilen/Spalten der nächsten Matrix ein und wieder Weiter? Brauchst nur eine Schleife...

    Oder du blendest gleich alle Eingabefelder auf ein Mal ein, gibst ALLE Daten ein, und drückst dann nur mehr "Ok", fertig.

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be! Edit: 2019 wasn't too bad either... Edit: 2020... holy crap, we're on a roll here~♡!

    Quote Bier.jpg@IRC 2020: "Je schlimmer der Fetisch, desto besser!"

  • Naja, also als erstes gibt man die Anzahl der Zeilen an, klickt dann auf "weiter" und gibt die Zahl der Spalten an, klickt auf Weiter und gibt die komplette erste Zeile ein (Zahlen getrennt durch ; ), klickt auf Weiter und gibt die komplette zweite Zeile an und so weiter. Und dazu soll man halt immer den selben Weiter-Button benutzen.

  • Ganz primitive Lösung: Mit jedem Klick des Buttons zählst eine Variable hoch. Startwert ist 0.

    Wenn counter = 0, dann Feldinhalt = Zeilenanzahl
    Wenn counter = 1, dann Feldinhalt = Spaltenanzahl
    Wenn counter = 3, dann Feldinhalt = Semikolon-delimited value list, Zeilennummer #(counter-3)
    Wenn counter = 4, dann Feldinhalt = Semikolon-delimited value list, Zeilennummer #(counter-3)
    Wenn counter = 5, dann Feldinhalt = Semikolon-delimited value list, Zeilennummer #(counter-3)
    .
    .
    Wenn counter = n, dann Feldinhalt = Semikolon-delimited value list, Zeilennummer #(n-3)

    Das ist eine ziemlich dumme Lösung denke ich, aber sollte wohl gehn? ;)

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be! Edit: 2019 wasn't too bad either... Edit: 2020... holy crap, we're on a roll here~♡!

    Quote Bier.jpg@IRC 2020: "Je schlimmer der Fetisch, desto besser!"

    2 Mal editiert, zuletzt von GrandAdmiralThrawn (23. Januar 2012 um 16:02)

  • Hab mal schnell was zusammengebastelt:


    http://codeviewer.org/view/code:223d

    Beschreibung bezieht sich auf das konkrete Beispiel (ja es ist nicht grade Vorzeigecode, sollte aber reichen):
    Im Design:
    2 Textfelder: txt_box1 und txt_box2
    1 Button: btn_next
    1 Label: lbl_cnt (dieser ist eher nur zur Info hier)

    Im Code
    Du brauchst eine Zähler variable: cnt
    2 String Listen, oder Integer oder dergleichen: list1 und list2

    On Button click... nunja, dieser Teil sollte selbsterklärend sein!

    Wenn du weist welchen Datentyp du benötigst, kannst du ja die Verarbeitung der Daten dementsprechend anpassen. Das hab ich hier der Übersichtlichkeit halber unterlassen.

    Edit: Oh Mann, was macht dieser Code Formatter da nur ... lol

    Raspi A+, 3, Zero

    5 Mal editiert, zuletzt von Viper (23. Januar 2012 um 21:06)

  • Ok, das sieht ja schon mal ganz gut aus, aber wie unterscheidet der jetzt die einzelnen Durchläufe? Muss man da jetzt mit if arbeiten? Also so:

    Code
    if (cnt=1){ tue das und das}if (cnt=2){tue das und das}

    Und dann hab ich jetzt glaub ich auch mein Problem mit der Klasse gefunden. Und zwar brauche ich einen Konstruktor für den Datentyp "Matrix". Folgendes hab ich bisher gemacht:

    Was passieren soll: Man soll new Matrix eingeben und dann halt als Argumente ein Array und den Namen der Matrix (A oder B). Wie man sieht probiere ich erst die Länge und die "Breite" der Arrays auszulesen und in Variablen zu speichern. Funktioniert das so wie ich mir das vorstelle? Das doofe ist ja, dass man das nicht immer gleich ausprobieren kann bei ner Klasse...

    Einmal editiert, zuletzt von Blacktron (24. Januar 2012 um 15:08)

  • Verstehe ich, ja.
    Für welche Ausbildung brauchst du das denn? Ich hoffe nicht für einen Beruf in dem du später programmieren musst, denn dann sollte dich so eine kleine Aufgabe nicht frustrieren.

    Übrigens da ist ein Fehler in deinem Code Snippet:

    if (cnt =1)
    {...

    Vorsicht: Du weist hier der variable 1 zu anstelle sie auf 1 zu prüfen.


    Noch ein kleiner Tipp, welcher die Übersicht auf Dauer verbessert:

    Funktions/Methodennamen und Variablennamen immer klein schreiben und IMMER englisch.
    Klassennamen mit beginnendem Großbuchstaben!
    (Statische Variablen Blockbuchstaben)

    Raspi A+, 3, Zero

    Einmal editiert, zuletzt von Viper (26. Januar 2012 um 15:02)

  • Habt ihr euch nicht mal schnell ein C# in 3 Tagen reingezogen oder dergleichen.
    Das ist wirklich ein Anfängerprojektchen. Setzt euch mal zusammen und lasst die Köpfe rauchen ;)

    Das wird sicher nicht das letzte Programm sein das ihr schreiben müsst!

    Raspi A+, 3, Zero