AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

1+1=0 definieren?

Ein Thema von Ari · begonnen am 7. Mai 2008 · letzter Beitrag vom 9. Mai 2008
Antwort Antwort
Seite 3 von 4     123 4      
grenzgaenger
(Gast)

n/a Beiträge
 
#21

Re: 1+1=0 definieren?

  Alt 8. Mai 2008, 14:25
SCIP ? hier wäre ja der quellcode mit bei. könntest eigentlich anpassen...

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:
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.
sehe grad, dass hier noch 'n paar nette funktionen für arrays/vektoren vorhanden sind, so sollt es schneller gehen
Angehängte Dateien
Dateityp: zip esbmaths_666.zip (167,9 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Ari

Registriert seit: 7. Jan 2007
Ort: Wilhelmshaven
37 Beiträge
 
#22

Re: 1+1=0 definieren?

  Alt 8. Mai 2008, 15:45
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
Ariane
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#23

Re: 1+1=0 definieren?

  Alt 8. Mai 2008, 15:55
Das Beispiel sollte auch auf D7 laufen:
Delphi-Quellcode:
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.
das ist 'n beispiel für die addition V1 + V2 --> V2

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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.034 Beiträge
 
Delphi 12 Athens
 
#24

Re: 1+1=0 definieren?

  Alt 8. Mai 2008, 15:55
Zitat von Ari:
Hm da ich Delphi 7 verwende funktionieren die ganzen write, writeln und readln befehle bei mir nicht.
häää?

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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#25

Re: 1+1=0 definieren?

  Alt 8. Mai 2008, 16:03
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
  Mit Zitat antworten Zitat
Ari

Registriert seit: 7. Jan 2007
Ort: Wilhelmshaven
37 Beiträge
 
#26

Re: 1+1=0 definieren?

  Alt 8. Mai 2008, 16:06
Dass die von Turbo Pascal kommen hätte ich mir gedacht..
writeln('Ausgangslage'); Popup: Project raised exception class EInOutError with message 'I/O error 105'. Process stopped.
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..
Ariane
  Mit Zitat antworten Zitat
Ari

Registriert seit: 7. Jan 2007
Ort: Wilhelmshaven
37 Beiträge
 
#27

Re: 1+1=0 definieren?

  Alt 8. Mai 2008, 16:11
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 ^^
Ariane
  Mit Zitat antworten Zitat
RipperFox

Registriert seit: 22. Nov 2006
Ort: Balingen
4 Beiträge
 
Turbo Delphi für Win32
 
#28

Re: 1+1=0 definieren?

  Alt 8. Mai 2008, 16:28
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..)?
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#29

Re: 1+1=0 definieren?

  Alt 8. Mai 2008, 16:30
das hab ich auch noch nie gesehen, dass der standard write befehl 'n IO error erzeugt ...

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>
Angehängte Dateien
Dateityp: zip beispiel_233.zip (1,5 KB, 1x aufgerufen)
  Mit Zitat antworten Zitat
Ari

Registriert seit: 7. Jan 2007
Ort: Wilhelmshaven
37 Beiträge
 
#30

Re: 1+1=0 definieren?

  Alt 8. Mai 2008, 16:44
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 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

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..?
Ariane
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:26 Uhr.
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