UE am DI 12.12.2006

Antworten
Grigorin
Beiträge: 6
Registriert: 08.11.2006, 23:10

UE am DI 12.12.2006

Beitrag von Grigorin »

Bin letztes mal leider ein bisschen früher gegangen und hab die Erklärungen für die Anleitung nicht mitbekommen.

Jetzt hab ich zwei Fragen:

1)Wie ist das beim Konstruktor gemeint
Zitat "Falls p==0, l Werte mit 0 initialisieren"

Versteh ich das richtig:
p ist nur null wenn man es so aufruft:
DArray A(5);
sobald man zwei Parameter übergibt, darf man davon ausgehen, dass die übergebene Länge auch nicht den Index des übergebenen Arrays überschreitet?

Code: Alles auswählen

DArray::DArray(int l, double *p)
{a = new double[l];
  for(int i = 0; i < l; i++)          
          a[i] = 0;                            //Initialisieren
  if (p!=0)                                    // prüfen ob 0
  { 
  for(int i = 0; i<l; i++)
          a[i] = p[i];                         //Zuweisen  
  }
  len = l;}
Ist dieses hier dann korrekt?


2) Was soll der FILE pointer in der Print-Funktion????

Hoffe auf Antwort

m0tzerl
Beiträge: 89
Registriert: 06.11.2006, 00:16

Beitrag von m0tzerl »

tja - wiedermal eine kryptische angabe.
wenn du allerdings den konstruktor so aufrufst (DArray A(5);) kriegst du eine fehlermeldung. wenn du ein array mit 5 elementen jeweils mit 0 initialisieren willst musst du schreiben: DArray A(5,0);

und das mit der länge - ja, denke, das darf man annehmen. habs zumindest so gemacht. oder du schreibst halt im hauptprogramm z.b. DArray A(sizeof(pointer)/sizeof(double),pointer);
damit bist du sicher, dass du auch genau die länge des arrays übergibst.
sinnvoll scheint mir die dieswöchige aufgabe ja eh nicht wirklich zu sein.

und deine konstruktordefinition stimmt, was ich so sehe. allerdings bin ich kein compiler ;)

m0tzerl
Beiträge: 89
Registriert: 06.11.2006, 00:16

Beitrag von m0tzerl »

achja:
ad 2.)
der file-pointer in der Print-Methode. ja.

durch die definition:

class DArray
{
private:
...
public:
...
void Print(FILE *f=stdout);
...
}

das FILE *f=stdout bedeutet, dass, falls kein file-pointer übergeben wird, dieser standardmäßig den wert stdout annimmt. wusste auch nicht, dass man durch = in der argumentdeklaration default-werte angeben kann.
ein filepointer, mit dem wert stdout schreibt nicht in die file, sondern gibt eben am bildschirm aus. somit kann ich mich entscheiden, ob ich am bildschirm schreiben will (einfach keinen file-pointer übergeben) oder in ein file (file-pointer übergeben).
ja - find ich auch lässig, dass das in der vorlesung NIE vorkam.

Grigorin
Beiträge: 6
Registriert: 08.11.2006, 23:10

Beitrag von Grigorin »

erst mal danke für deine hilfe...

das zweite ist jetzt viel einfach zu programmieren gewesen

ad 1)

ich hab ja die standard definition in der class übernommen

Code: Alles auswählen

DArray(int l=0, double *p=0);
deshalb kann ich es auch als 'DArray a(5);' aufrufen ;)

bis bald!

m0tzerl
Beiträge: 89
Registriert: 06.11.2006, 00:16

Beitrag von m0tzerl »

hatte ich auch. allerdings war der compiler unzufrieden. naja. solangs funktioniert ;)

Antworten

Zurück zu „Datenverarbeitung für Physiker I“