Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Programm klar machen, dass Eingabedatei eine Matrix enthält

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] [ 2 ] > 3 <
020
10.05.2004, 14:16 Uhr
Scyx



Was ist denn dann der Unterschied zwischen einem Klassentemplate und einem Funktionstemplate? Das Funktionestemplate führt was aus und in dem Klassentemplate wird nur eine Klasse mit verscheidenen Datentypen deklariert???
Das will mir einfach nicht in den Kopf...

Ups, hab mich im Thread vertan von wegen kompilieren. Die in diesem Thread erwähnten Codes sind ja nur Teile und müssen in den richtigen Zusammenhang gebracht werden.
Hab noch einen Thread laufen, indem's um eine Fehlermeldung von g++ geht...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
021
10.05.2004, 18:18 Uhr
Scyx




C++:
for (int j = 0; j < dim2; j++) {
      A[i][j] = std::sqrt ((double) (i+1) * (j+1));
ub ich hab da eine kleine Erkenntnis bzgl. Matrizen/Arrays und Pointern erlangt
Jetzt hoffe ich nur dass das auch so stimmt:
Wenn ich folgendes hab|CPP||
Dann ist
C++:
int main() {
  double **A, **B;
  int dim1 = 3;
  int dim2 = 3;
  A = new double*[dim1];
  for (int i = 0; i < dim1; i++) {
    A[i] = new double[dim2];
    for (int j = 0; j < dim2; j++) {
      A[i][j] = std::sqrt ((double) (i+1) * (j+1));
    }
  }
die Deklaration der folgenden Matrix.
Mit
C++:
double **A, **B;
legt man die Zeilen an und gleichzeitig reserviert man Platz im Heap.
Mit
C++:
A = new double*[dim1]
fügt man dann die Spalten hinzu.
Und in diesem Bsp. dient
C++:
for (int i = 0; i < dim1; i++) {
    A[i] = new double[dim2];
dazu um die eigentlichen Berechnungen in/mit der Matrix durchzuführen.

Das Ganze ist jetzt ziemlich aus dem Kontext gerissen, wer sich diesen anschauen will, einfach www.lrz-muenchen.de/~ebner/C++/Uebung/aufgaben_003.html <- da hin gehen.

Sagt mir bitte, ob ich das jetzt richtig verstanden habe, oder wo ich falsch liege.
Keine Angst, bin hart im nehmen

P.S. Was ich allerdings nicht so ganz verstehe, was evtl. auch in gewisser Weise unerheblich ist, ist die Tatsache warum ich mit 'nem Pointer auf 'nen Pointer 'ne Matrix erstellen kann...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
022
10.05.2004, 18:39 Uhr
(un)wissender
Niveauwart


Sieht gut aus, vergiss nur nicht delete für jedesmal new aufzurufen.
Der Pointer zeigt auf ein Feld von Pointern, die auf die Zeilen zeigen.
Versuche dir das mal graphisch aufzumalen, dann verstehst du es.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
023
10.05.2004, 18:55 Uhr
Scyx



Aber dann hab ich doch nur 'nen Pointer zum Quadrat ???
Bei mir hakt noch die Vorstellung, wie sowas geht. Ich seh Pointer immer nur in einer Dimension. Wenn ich auf eine Dimension verweise, hat der Pointer dann doch eigentlich die gleiche Dimension. Wenn ich dann 'nen Pointer auf 'nen Pointer mache, müsste sich das doch eigentlich genauso verhalten...
Mir will einfach nicht in den Kopf, wieso der Compiler daraus eine Matrix erstellt, die für mich 2 Dimensionen hat.

Mom, mir kommt da grad 'ne Idee:
Ein Pointer verweißt doch auf eine Addresse, es sei denn man dereferenziert ihn. Das kann man sich doch vorstellen wie ein Bücherregal. Wenn ich dann noch ein Bücherregal nebendran stelle, hab ich sowas wie 'ne Matrix, oder?
Nur was spielt denn dann ein Pointer auf einen Pointer für 'ne Rolle?
Dann müsste ich doch eigentlich einen Pointer auf 'nen Pointer auf 'nen Pointer (Pointer hoch 3 ) erstellen um 'ne 3x3 Matrix zu erhalten usw... Wieso geht das mit nur Pointer auf Pointer?

Stimmt, das delete müsste da noch hin, Danke.


@(un)wissender: Du sagtest ein Pointer zeigt auf ein Feld von Pointern die auf die Zeilen zeigen, was ist dann aber mit den Spalten?

Dieser Post wurde am 10.05.2004 um 18:57 Uhr von Scyx editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
024
10.05.2004, 23:56 Uhr
(un)wissender
Niveauwart


Der Pointer** zeigt auf dein Regal und die Pointer darin auf die Regalbretter bzw. das erste Buch auf dem Regalbrett (hier die Zeilen).
Jetzt überlegt mal, wenn du alle Bücher auf allen Regalbretter hast, wo sind dann deine Spalten?
Richtig, bspw. ist Spalte 1 das erste Buch vom obersten Regalbrett, das erste Buch auch dem Regalbrett darunter, usw.
Mal es dir auf, das hilft!
Für eine 3x3 Matrix brauchst du genausoviel Pointerindirektion wie für eine 100x100 Matrix, nämlich Pointer hoch 2.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] > 3 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: