Blatt 5

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Blatt 5
Hi, ich verstehe nicht ganz warum bei convertToMatrix Matrix() als Rueckgabewert steht. Ich dachte ich lege mir davor eine Matrix an und gebe sie dann zurueck.


schau noch mal genau hin, convertToMatrix() gehört zur Klasse crsMatrix. damit wandelst du eine Matrix die intern in CRS gespeichert ist in eine normale Matrix um und gibst die zurück.


Ist es erlaubt bei den set und get Funktionen seine CRSMatrix zunächst mittels convertToMatrix() in eine normale Matrix zu konvertieren, auf dieser set / get aufzurufen und (bei set) sie wieder in eine CRSMatrix zu konvertieren?

Ich weiß, dass es wohl nicht ganz Sinn der Sache ist aber es funktioniert wunderbar und wenn das Programm nur durch automatische Testskripte getestet wird fällts auch nicht weiter auf.


Andere Frage:

Soll am Ende von _rowPtr nun _nonZeroElements+1 (wie in den Vorlesungsfolien) oder nur _nonZeroElements wie in dem Beispiel auf dem Uebungsblatt stehen?


das Ende von _rowPtr soll hinter den letzten Eintrag der Matrix zeigen. Wenn du die Zellen also mit 0 zu zählen beginnst auf _numZeroElements. in den vorlesungsfolien kommt das +1 daher da dort die erste Zelle den Index 1 hat.


Ah na klar, daran lags. Danke :wink:


Naja habe zwar nix mit AlgoKS zu tun, aber in AuD hätte es dafür Punktabzug gegeben :wink: da sonst der ganze CRS Kram unnötig wäre


Man darf bei Set und Get natuerlich NICHT erst in eine normale Matrix umwandeln.


Hi, hab grad n viel grundlegenderes Problem:

faui06a [~]> /proj/i9algo3/handin/createAlgoKSHandin
-bash: /proj/i9algo3/handin/createAlgoKSHandin: No such file or directory
faui06a [~]>

und:

faui06a [~]> ls /proj/i9algo3/handin
A1 A5
faui06a [~]>

Langsam geht mir des Fach und vor allem die Programmier Aufgaben ziemlich aufn Sack. Andauernd selber irgendwelche Sachen verkacken, aber dann bei der Korrektur kein bisschen Kulanz zeigen… :nuts:


Genau, andauernd selber was verkacken, aber dann sofort meckern. Das Script liegt nicht im Verzeichnis handin, sondern eine Ebene drüber und dein Aufruf war falsch.


Zitat ausm aktuellen Übungsblatt:
Legen Sie zun¨achst ein handin im CIP-Pool an. F¨uhren Sie dazu das Skript
/proj/i9algo3/handin/createAlgoKSHandin
mit korrekten Parametern aus. Um den handin f ¨ur dieses Aufgabenblatt zu erstellen, benutzen Sie
/proj/i9algo3/handin/createAlgoKSHandin A5.


Ja, das ist tatsächlich Müll, aber jetzt kein unlösbares Problem, oder? Schreib ne Mail und führ das richtige Script aus.


Unlösbar nich, aber wenn die sich nichmal den Code anschaun den sie “korrigieren” dann durchsuch ich sicher nich denen ihre Ordner, nur weil sie nich fähig sind n korrektes Angabenblatt zu machen.


Ja das übliche mit dem längeren Hebel und so :wink:


Das Skript lag im falschen Verzeichnis. Ich habe es kopiert, jetzt liegt es sowohl unter /proj/i9algo3 als auch unter /proj/i9algo3/handin. Ich muss mich dafuer leider entschuldigen - danke fuer den Hinweis. Weitere Kommentare erspare ich mir jetzt mal.

Hust Hust
es folgt: ein kleiner Husterer zum Aufgabenblatt 5 mit den “tollen” Aufgaben.
“Lernerfolg/Sinn? - sehr bemessen, ums kurz auszudrücken, nicht mal der bause könnte schlechtere aufgaben stellen (mist, hier kennt keiner den bause…)”
bitte zu diesem sinnlosen kommentar keine weiteren kommentare.

zwei Fragen
Hallo,

  1. bei der CRSMatrix::print()
    Kann man da einfach ueber alle m*n Eintraege mit getEntry(i,j) drueberlaufen, oder gibt es da eine schnellere Loesung (welche auch implementiert werden soll)?
    Prinzipiell muss man sich ja eigentlich jeden Eintrag anschauen, oder nicht?

  2. beim stream operator<< in der CRSMatrix
    Die CRSMatrix::print() Methode funktioniert soweit, daher dachte ich den Streamoperator kann ich einfach durch

stream << m.print(); realisieren, anstatt alles wie in der print() Methode nochmal hinzuschreiben…?

Thx
Joerg


Ich hätte es auch so implementiert, denke das ist OK so.

Nachdem [m]print()[/m] nichts zurückgibt, wird das so nicht funktionieren, aber du kannst es andersrum machen: in [m]operator<<(…)[/m] die Ausgabe auf einen beliebigen Stream implementieren und in [m]print()[/m] dann für stdout verwenden.


Mh, ich hab den Streamoperator einfach mittels converttomatrix implementiert und in print() den stream operator verwendet.