You are not logged in.

Dear visitor, welcome to VoodooAlert - let´s get loud. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

Blacktron

Monster Kill

  • "Blacktron" started this thread

Posts: 3,217

Location: Bochum/Bad Pyrmont

Occupation: Student

  • Send private message

1

Monday, January 23rd 2012, 2:39pm

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?

Posts: 6,532

Location: A-8600, Bruck an der Mur, ÖSTERREICH

Occupation: Netzwerkadministrator

  • Send private message

2

Monday, January 23rd 2012, 2:50pm

Dateneingabe

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.

Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:
  • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700 (defekt)
No RISC, no fun!

Blacktron

Monster Kill

  • "Blacktron" started this thread

Posts: 3,217

Location: Bochum/Bad Pyrmont

Occupation: Student

  • Send private message

3

Monday, January 23rd 2012, 3:16pm

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.

Posts: 6,532

Location: A-8600, Bruck an der Mur, ÖSTERREICH

Occupation: Netzwerkadministrator

  • Send private message

4

Monday, January 23rd 2012, 3:58pm

C

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? ;)

Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:
  • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700 (defekt)
No RISC, no fun!

This post has been edited 2 times, last edit by "GrandAdmiralThrawn" (Jan 23rd 2012, 4:02pm)


Viper

Ultra Kill

Posts: 461

Location: Austria, Bruck/Mur

Occupation: Software Test Engineer

  • Send private message

5

Monday, January 23rd 2012, 8:55pm

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
Die DVD ist tot!

This post has been edited 5 times, last edit by "Viper" (Jan 23rd 2012, 9:06pm)


Viper

Ultra Kill

Posts: 461

Location: Austria, Bruck/Mur

Occupation: Software Test Engineer

  • Send private message

6

Monday, January 23rd 2012, 9:00pm

Diese Lösung sollte leicht erweiterbar sein
Die DVD ist tot!

Blacktron

Monster Kill

  • "Blacktron" started this thread

Posts: 3,217

Location: Bochum/Bad Pyrmont

Occupation: Student

  • Send private message

7

Tuesday, January 24th 2012, 2:58pm

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:

Source code

1
2
3
4
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:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public Matrix(Array A, string name) 
   {
            if (name == "A")
            {
                int zeilena = (arr.Length - 1);
                int spaltena = (A.GetUpperBound - 1);
                int[,] pMatrix_A = new int[1, 3];
            }     

            if (name =="B")
            {
                int zeilenb = (A.Length - 1);
                int spaltenb = (A.GetUpperBound - 1);
                int[,] pMatrix_B = new int[spaltenb, zeilenb];
            }
        }


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...

This post has been edited 1 times, last edit by "Blacktron" (Jan 24th 2012, 3:08pm)


Viper

Ultra Kill

Posts: 461

Location: Austria, Bruck/Mur

Occupation: Software Test Engineer

  • Send private message

8

Wednesday, January 25th 2012, 8:19pm

Etwas musst schon selber auch machen ;)
Die DVD ist tot!

Blacktron

Monster Kill

  • "Blacktron" started this thread

Posts: 3,217

Location: Bochum/Bad Pyrmont

Occupation: Student

  • Send private message

9

Thursday, January 26th 2012, 10:56am

Ja, aber meine Frusttoleranzgrenze ist schon lange überschritten.

Viper

Ultra Kill

Posts: 461

Location: Austria, Bruck/Mur

Occupation: Software Test Engineer

  • Send private message

10

Thursday, January 26th 2012, 3:00pm

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)
Die DVD ist tot!

This post has been edited 1 times, last edit by "Viper" (Jan 26th 2012, 3:02pm)


Blacktron

Monster Kill

  • "Blacktron" started this thread

Posts: 3,217

Location: Bochum/Bad Pyrmont

Occupation: Student

  • Send private message

11

Tuesday, January 31st 2012, 2:04pm

Das ist die Vorlesung "Grundlagen der Informatik für Maschinenbauer". Ja, wir probieren es jetzt mit erst mal mit nem Switch-Case-Dingens.

Viper

Ultra Kill

Posts: 461

Location: Austria, Bruck/Mur

Occupation: Software Test Engineer

  • Send private message

12

Tuesday, January 31st 2012, 4:08pm

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!
Die DVD ist tot!

Similar threads

Rate this thread