![]() |
Re: 1+1=0 definieren?
Liste der Anhänge anzeigen (Anzahl: 1)
![]() ansonsten, würd ich dir raten, 'n paar vektoren zu definieren und diese dann entsprechend zu lösen. für das lösen, kannst dir ja 'n paar matrix operationen selbst zusammenschrauben ... :-) als datenstruktur würd ich dir zu 'n array of integer oder 'n array of array of integer raten ... :-) für dies kannst dann ein paar proceduren implementieren wie add(VonVektor[1], NachVektor[2]), etc. die ergebnisse und die matrixen kannst dann jederzeit ausgeben :-) <HTH> GG BTW: die werte kannst du entweder direkt im code deklarieren oder bei der initialisierung aus deiner datei einlesen :-) Hier noch 'n kleines Codebeispiel:
Delphi-Quellcode:
sehe grad, dass hier noch 'n paar nette funktionen für arrays/vektoren vorhanden sind, so sollt es schneller gehen :-)
program Project1;
{$APPTYPE CONSOLE} uses SysUtils; type TVektor = array of Integer; TMatrix = array of TVektor; procedure AddVektor(VAR Vektor, ZielVektor: tVektor); var i: integer; begin for i := low(Vektor) to high(ZielVektor) do ZielVektor[i] := ZielVektor[i] + Vektor[i]; end; var V1, V2: TVektor; i: integer; begin setlength(V1, 3); Setlength(V2, 3); V1[0] := 1; V2[0] := 2; V1[1] := 2; V2[1] := -1; V1[2] := 1; V2[2] := 1; writeln('Ausgangslage'); write('Vektor 1: '); for i in v1 do write(i: 3, ' '); writeln; write('Vektor 2: '); for i in v2 do write(i: 3, ' '); writeln; AddVektor(V1, V2); writeln(#10'nach Mutation'); write('Vektor 1: '); for i in v1 do write(i: 3, ' '); writeln; write('Vektor 2: '); for i in v2 do write(i: 3, ' '); writeln; readln; end. |
Re: 1+1=0 definieren?
Hm da ich Delphi 7 verwende funktionieren die ganzen write, writeln und readln befehle bei mir nicht. Auf Memo1.Lines.Add umgemünzt krieg ich auch noch Fehlermeldungen..: operator not applicable to this operand type.
Aber wieso sind das jetzt zwei Vektoren? Quasi ein Vektor eine Unbekannte? Ohje :( |
Re: 1+1=0 definieren?
Das Beispiel sollte auch auf D7 laufen:
Delphi-Quellcode:
das ist 'n beispiel für die addition V1 + V2 --> V2
program Project1;
{$APPTYPE CONSOLE} uses SysUtils; type TVektor = array of Integer; TMatrix = array of TVektor; procedure AddVektor(VAR Vektor, ZielVektor: tVektor); var i: integer; begin for i := low(Vektor) to high(ZielVektor) do ZielVektor[i] := ZielVektor[i] + Vektor[i]; end; var V1, V2: TVektor; i: integer; begin setlength(V1, 3); Setlength(V2, 3); V1[0] := 1; V2[0] := 2; V1[1] := 2; V2[1] := -1; V1[2] := 1; V2[2] := 1; writeln('Ausgangslage'); write('Vektor 1: '); for i := 0 to high(v1) do write(v1[i]: 3, ' '); writeln; write('Vektor 2: '); for i := 0 to high(v2) do write(v2[i]: 3, ' '); writeln; AddVektor(V1, V2); writeln(#10'nach Mutation'); write('Vektor 1: '); for i := 0 to high(v1) do write(v1[i]: 3, ' '); writeln; write('Vektor 2: '); for i := 0 to high(v2) do write(v2[i]: 3, ' '); writeln; readln; end. mit V1 = {1; 2; 1} und V2 = {2; -1; 1} das ganze kannst auch gern in TMatrix aufnehmen und dann über die vektoren addressieren oder 'ne neue funktion machen, welche die matrix komplett durläuft und die vektoren addiert (mit ausschluss des quellvektors). in der kleinen komponentensammlung sind aber schon die matrix und vektoroperationen definiert. damit sollt es leichter gehen. |
Re: 1+1=0 definieren?
Zitat:
Diese sind Befehle stammen noch aus den guten alten Pascalzeiten und jede Delphiversion beherscht sie. schau mal in deine OH. Und die Befehle versecken sich in der Unit System, welche immer eingebunden ist ... also gehen sie auch immer. |
Re: 1+1=0 definieren?
es lag wohl an der FOR schleife, da hatte ich die syntaxerweiterung aus D2005 oder D2006 verwand... von daher konnte es in D7 nicht funktionieren. im zweiten betrag hab ich es auf die standardschleife umgestellt :-)
|
Re: 1+1=0 definieren?
Dass die von Turbo Pascal kommen hätte ich mir gedacht..
Delphi-Quellcode:
Popup: Project raised exception class EInOutError with message 'I/O error 105'. Process stopped.
writeln('Ausgangslage');
Mit ner Memo hatte ich kein entsprechendes Problem bei anderen Programmen - wobei für dieses Programm nach wie vor die Datei mit meinen Memo-Zuweisungen nichtmal erstellt wird.. :?: |
Re: 1+1=0 definieren?
Zu der neuen Version: wird v[u] durch 3 dividiert oder soll das in der Ausgabe erscheinen? Wenn ich das mit Memo mache muss ich das ja erst in nen string umwandeln
sorry, mein übliches Brett vorm Kopf ist sehr fest genagelt ^^ |
Re: 1+1=0 definieren?
Edit: war zu knapp..
{$APPTYPE CONSOLE} , dann klappts auch mit writeln.. Erklärung: Wohin soll denn writeln() seinen Output schreiben (die nette DOS-Box / Commandline is ja nich offen..)? |
Re: 1+1=0 definieren?
Liste der Anhänge anzeigen (Anzahl: 1)
das hab ich auch noch nie gesehen, dass der standard write befehl 'n IO error erzeugt ... :gruebel: :gruebel: :gruebel:
hab das ganze mal 'ne formularanwendung gepackt ... sollte nun fuktionieren. wenn du einen vektor mit 'n skalar multiplizieren möchtest, musst dir 'ne kleine procedure/funktion schreiben... statt V1 * V2 --> x machste dann V1 * Skalar --> x das sollte aber die unit bereits können ... <HTH> |
Re: 1+1=0 definieren?
das Beispiel hab ich mir runtergeladen, dankeschön!!
Jedes Mal wenn ich auf den V1+V2 Button drücke wird also V1 dazu addiert..kann ich damit auch bestimmte Unbekannte eliminieren? wie kann ich das jetzt für 730 Unbekannte und 320 Gleichungen machen und dazu noch Modul 2 einbauen? Die generelle Lösung des Problems erhalte ich ja mit SCIP (also Simplex-Verfahren, falls es das ist). Nur wie das Gleichungssystem nach dem Eliminationsverfahren aussieht, brauche ich noch :gruebel: Da das so viele Gleichungen sind wird wohl ein Memo, Liste oder so notwendig sein, oder? zu {$APPTYPE CONSOLE}: bei mir steht da Unit und wie ich program neu öffne weiß ich auch nicht - meine Hilfedatei läuft unter Vista nicht :pale: edit: das vorherige gepostete Beispiel hab ich jetzt mit der memo hinbekommen, wobei ich ":3" noch nicht ganz verstehe, hab das einfach als String eingebunden.. edit2: noch ne Frage: was bedeutet das high(v1)? Vielleicht kann man da irgendwie ne Schleife und ein Modul einbauen um das dann mit mehreren Gleichungen zu machen..? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz