Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Matrizen (Erstellen, Rechnen) (https://www.delphipraxis.net/184198-matrizen-erstellen-rechnen.html)

mariusbenz 6. Mär 2015 16:35

Matrizen (Erstellen, Rechnen)
 
Hallo, bin neu hier und weiß nicht ob das hier überhaupt das richtige Forum für meine Frage ist, deshalb entschuldige ich mich schon mal im Voraus, falls es so sein sollte.

Folgendes, ich möchte ein Programm schreiben, bei dem einige Berechnungen mit Matrizen durchgeführt werden müssen(Inverse Matrix bilden, Multiplikation zweier Matrizen).
Diese Rechnungen sollen im Hintergrund ablaufen, der Benutzer soll auch keine Matrix als Matrix eingeben, ebenso muss die Matrix am Ende nicht als solche ausgegeben werden.
Er soll z.B. in eine Edit-Komponente 4 Ziffern eingeben, die dann für die Berechnung in eine 2x2-Matrix umgewandelt werden sollen.
Bsp.: Eingabe: 1 2 3 4

Matrix A:
1 2
3 4

In eine zweite Edit-Komponente gibt er beliebig viele Ziffern ein, z.B. 10, welche dann in eine 5x2-Matrix umgewandelt werden sollen.
Bsp.: Eingabe: 1 2 3 4 5 6 7 8 9 0

Matrix B:
1 2
3 4
5 6
7 8
9 0

Die zweite Matrix soll also immer 2 Spalten haben und AnzahlZeichen/2 Zeilen.


Mat B soll dann mit Mat A multipliziert werden
Mat B * Mat A =
7 10
15 22
23 34
31 46
9 18

Diese Matrix soll dann am Ende z.B. in einer Edit-Komponente so ausgegeben werden: 7 10 15 22 23 34 31 46 9 18

Hat jemand irgendeine Idee wie man das umsetzen kann?

Bjoerk 6. Mär 2015 17:01

AW: Matrizen (Erstellen, Rechnen)
 
Ich würde zur Eingabe / Ausgabe ein StringGrid nehmen und zur Bearbeitung bieten sich Arrays an (TMatrix = array of array of double).

SMO 6. Mär 2015 17:12

AW: Matrizen (Erstellen, Rechnen)
 
1. Herausfinden, wie viele Zahlen / "Wörter" im Edit-Feld stehen. Eventuell Warnhinweis oder Autokorrektur wenn zu viele oder zu wenige Zahlen.
2. Die Zahlen in einer Schleife auslesen, von String nach Single oder Double konvertieren (StrToFloat) und in einem Array ablegen.
3. Dasselbe mit dem zweiten Edit-Feld machen.
4. Matrixmultiplikation auf den Arrays durchführen.
5. Ergebnis nach String konvertieren (FloatToStr oder Format) und in Edit-Feld schreiben.

Je nachdem, welche Delphi-Version du hast, gibt es die Unit System.Math.Vectors, die 3x3 und 4x4 Matrizen implementiert (bietet aber keine Konversion von/zu String). Kannst du dir ja mal anschauen. Ein StringGrid zur Darstellung wie von Bjoerk vorgeschlagen halte ich auch für schöner als ein Edit-Feld.

bernhard_LA 6. Mär 2015 17:33

AW: Matrizen (Erstellen, Rechnen)
 
es gibt schon zahlreiche freie Lösungen zu diesem Thema in Delphi


z.B. http://www.torry.net/pages.php?id=308

Der schöne Günther 6. Mär 2015 18:36

AW: Matrizen (Erstellen, Rechnen)
 
Da sich das nach einer Schulaufgabe anhört sind externe Libraries für ihn wahrscheinlich keine Option.

Sind es immer fest zwei Spalten oder soll Matrixmultiplikation für beliebige Matrizen gehen? Und immer interessant zu wissen: Über welche Delphi-Version sprechen wir?

Dejan Vu 6. Mär 2015 19:08

AW: Matrizen (Erstellen, Rechnen)
 
Zitat:

Zitat von mariusbenz (Beitrag 1292654)
Er soll z.B. in eine Edit-Komponente 4 Ziffern eingeben...
In eine zweite Edit-Komponente gibt er beliebig viele Ziffern ein, z.B. 10...

Woher weißt Du, welche Dimensionen deine erste Matrix haben soll, wenn z.B. 16 Zahlen eingegeben werden? 4x4 oder 2x8 oder 8x2?
Oder soll die erste Matrix immer quadratisch sein?

Namenloser 6. Mär 2015 20:46

AW: Matrizen (Erstellen, Rechnen)
 
Ich würde es einfach genau so machen, wie du es in deinem Beitrag schon intuitiv gemacht hast: Einfach ein mehrzeiliges Textfeld (TMemo), mit Leerzeichen oder Tabs zwischen den einzelnen Spalten und Zeilenumbruch zwischen den Zeilen. Genauer gesagt habe ich sowas glaube ich schon mal genau so umgesetzt, wenn ich mich recht erinnere. Sieht vielleicht weniger schick aus, ist aber in der Praxis viel bequemer als mit irgendeinem Stringgrid herumzufummeln.

Sir Rufo 6. Mär 2015 21:22

AW: Matrizen (Erstellen, Rechnen)
 
Warum sollte mit dem StringGrid da irgendwas fummelig sein?

Im Gegenteil, denn da habe ich auch schon die Dimensionen der Matrix als Information, ist doch super. Bei einem Memo müsste ich die Eingaben erst parsen, beim StringGrid nehme ich nur
Delphi-Quellcode:
StrToFloat
pro Zelle und der Drops ist gelutscht.

mariusbenz 6. Mär 2015 21:44

AW: Matrizen (Erstellen, Rechnen)
 
Danke schon mal für die vielen Antworten.

Vorweg, es handelt sich dabei nicht um eine Schulaufgabe, bin lediglich aus dem Matheunterricht darauf gekommen, dieses Programm zu entwickeln.

Zu der Frage warum die Eingabe über ein Edit Feld laufen soll ist: Die einzugebenen Zahlen stehen für ein Wort, wobei A=1,B=2,C=3,...,Z=26 bedeuten und das Wort "Hallo" kann
man ja schlecht in eine String Grid Komponente schreiben.
Die erste Matrix soll dabei die Codierungsmatrix sein, anfangs als 2x2 Matrix für ein 4-stelliges Passwort.
Die zweite Matrix stellt ein Wort dar, dass in einen Zahlencode umgewandelt wird.
Am Ende soll das Programm also quasi nen Text verschlüsseln und man kann ihn nur entschlüsseln und lesbar machen wenn man das Passwort, also die Codierungsmatrix kennt.
Ich wollte aber erst mal anfangen Zahlen zu verschlüsseln.

Zur Delphi Version kann ich nichts sagen, da ich das ganze über Lazarus mache(installiert vor 2 Jahren)

BUG 7. Mär 2015 10:55

AW: Matrizen (Erstellen, Rechnen)
 
Ah, schön zu hören :thumb:

Wo genau liegt denn konkret dein Problem? Dein Plan bis jetzt klingt doch relativ ausgereift.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz