Autor Beitrag
Torsten Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 160



BeitragVerfasst: Mi 02.10.02 17:16 
Moinsen!

OK, die Geschichte mit dem Spass kann ich wohl nachvollziehen.
Ich finde Zeiger und doppelt referenzierte Zeiger in C auch unheimlich interessant. Ist zwar etwas pervers, macht aber irgendwie Laune.
Nun muss ich den Spass nur noch auf Pascal übertragen.

Sehe ich übrigens ebenso. Am Anfang etwas Arbeit, danach komfortabel Klotzen.
Für die kleine Aufgabe war es aber nicht wirklich angebracht. Wollte eben nur mal ein wenig testen (was nicht heissen soll, dass Deine Lösung mich nicht freut).

Grüße

Torsten
Indeterminatus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47



BeitragVerfasst: Fr 04.10.02 12:39 
Zitat:

Inc(i) wird schneller ausgeführt, als i := i+1;


Obwohl es bei einer TP-Compilerversion ab 6.0 auch schon egal ist, weil eine Erhöhung einer Variable um einen konstanten ganzzahligen Wert mittels Wertzuweisung (i := i+x, wobei x Element aus N) durch die Funktion Inc ersetzt wird, vorausgesetzt, die Optimierung für den Compilerdurchlauf wurde eingeschaltet...

_________________
_______________________________________
Indeterminatus

---=si tacuisses, philosophus mansisses=---
Torsten Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 160



BeitragVerfasst: Fr 11.10.02 00:37 
Moinsen!

Noch mal eine Frage zu mehrdimensionalen Arrays.

Also, ein gutes Beispiel sind mal wieder Vektoren. Jene können ja nun im n-dimensionalen Raum bestehen.

Nehmen wir mal, wir arbeiten im 3-dimensionalen Raum und haben zwei Vektoren.
Dann dürfte doch folgendes laufen:
ausblenden Quelltext
1:
type TMyArray = array [0..2] of array [0..2] of Integer;					


Oder sehe ich das irgendwie falsch?

Aber:
Wie kann man nun realisieren, dass man beispielsweise eine beliebige Anzahl von Vektoren nutzen kann?

Fragende Grüße

Torsten
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Fr 11.10.02 08:00 
Hi!

Nun, beliebig viele kannst du in einem dynamischen Array unterbringen. Noch schöner ist aber natürlich die Benutzung eines TList-Objekts, und bei Vektoren ist sowieso angebrachter, eine Klasse TVektor zu entwerfen, um in dieser dann auch benötigte Methoden unterzubringen (Anwendung einer Matrix auf einen Vektor z.B.).

Cu, :D
Udontknow
Torsten Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 160



BeitragVerfasst: Fr 11.10.02 08:37 
@UdontKnow

Eigentlich war ich der Meinung, dass ich über Pascal sprach.

Grüße

Torsten
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Fr 11.10.02 08:43 
Naja gut, dann belassen wir es bei dynamischen Arrays.
Torsten Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 160



BeitragVerfasst: Fr 11.10.02 08:53 
Moinsen!

Danke für die Antwort.
So wie es Klabautermann mir schilderte, will ich die Arrays aber nicht machen. Es gibt definitiv noch einen anderen Weg.
Mein Prof will aber einfach nicht damit rausrücken.
Er meinte, man könne das auch über type realisieren.

Grüße

Torsten
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Fr 11.10.02 10:25 
Hallo, ich nochmal! :)

Brutal gehts natürlich auch:

Reservierung von Speicher per Getmem für folgenden Record:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
type 
  PVektor=^TVektor;

  TVektor=record
    Data:Array[0..2] of integer;
    NextVektor:PVektor;
  end;

Du erzeugst dann weitere Elemente, indem du
ausblenden Quelltext
1:
GetMem(NextVektor,SizeOf(TVektor));					

aufrufst.

Du verkettest sozusagen die einzelnen Elemente in eine Richtung. Um auf einzelne Elemente zuzugreifen, solltest du dann am besten dir eine rekursive Routine basteln, die dir dann z.B. einen Pointer auf das Nte Element liefert.

Cu,
Udontknow

PS: So im nachhinein überlegt, braucht man für die Ermittlung des nten Elements keine Rekursion... :roll: