7749
Comment:
|
78
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
## page was renamed from ProgrammierenCplusplusSS2010/Blatt4Fragen == Fragen und Kommentare zur 4. Vorlesung / zum 4. Übungsblatt == Hallo zusammen, eine technische Frage anstatt immer so zu schreiben char* arcobaleno if ( arcobaleno == 'a') && (arcobaleno == 'd` ) && (arcobaleno == 'b') darf man auch so schreiben: if ( arcobalen == 'a' && 'b' ) oder gibt´s was um das kürzer und ohne "Wiederholung" zu schreiben? '''Dario 13 Mai 18:43`''' @Sebastian : Besten Dank, ja es war der Zähler, der einen Wert hatte, den er eigentlich nicht haben sollte. Nur bis ich rausgefunden hatte warum. Aber jetzt hab ichs, naja zumindest das. =) '''JonathanN 13Mai10 16:18''' Wie soll dieser String ausgewertet werden? "1 4,3 5" bzw. muss man den Fall auswerten, dass in einer Zahl ein Leerzeichen stehen kann? '''Manuel 13. Mai 15:43''' Soo, ich weiß, ich weiß aber leider haben wir immernoch keine OFF-TOPIC-Section und ich dachte das muss ich mal mitteilen: http://www.youtube.com/watch?v=FIT3WlIyy1Y&NR=1&feature=fvwp '''fry UTC+1 1273757790UTS''' Wie soll eigentlich genau mit einer Liste umgegangen werden, die Beispielsweiße so aussieht: ",,,5,7 ,3". Soll das Programm dann daraus : 0,0,0,5,7,3,-1 machen, oder die 0er weg lassen? '''David Z. 13. Mai 15:04''' @JonathanN Spontan würde ich dann sagen, dass du entweder die falsche Variable bearbeitest (unwahrscheinlich), oder dein Zähler irgendeinen Wert hat, den er nicht haben sollte. Probier doch mal: {{{ finallist[k] = -1; //Also warum dieser Befehl nicht ausgeführt wird? printf("%d %d",k,finallist[k]); }}} '''SebastianS 13Mai10 14:25''' @Sebastian, ja was in der Schleife steht wird sauber ausgeführt, nur diese Zeile nach der Schliefe iergendwie nicht. Also habe soeben noch mal was geprüft, er geht raus aus der Schleife, denn wenn ich einen printf befehl dahin setzte, der wird aus geführt, oder ist etwas an der Syntax des Befehls "faul"? '''JonathanN 13Mai10 14:12''' @Hannah: Ah, verstehe, danke :-) @JonathanN: Wird die Schleife ausgeführt? Also kommt er überhaupt zu dem Punkt? Wenn ja, sollte auch die Bedingung ausgeführt werden... Überprüf vlt nochmal deine Klammern :) '''SebastianS 13Mai10 13:22''' Kann mir jemand erklären warum beim folgenden Code der Letze Befehl nicht ausgeführ wird {{{ while (bedingung) { ein paar berechnungen } finallist[k] = -1; //Also warum dieser Befehl nicht ausgeführt wird? }}} '''JonathanN 13Mai10 13:27''' @SebastianS: Ok, ich verstehe. Es ist so, Sie dürfen immer annehmen, dass Sie genau zwei Argumente bekommen. In den strings dieser Argumente dürfen allerdings Leerzeichen stehen. Von der Kommandozeile aus geht das zum Beispiel so: ''./ListProcessingMain "1,2,3, 5,6 , 7" "8,9,0, 10"''. Das erste Argument wäre dann ''1,2,3, 5,6 , 7'' und das zweite Argument wäre ''8,9,0, 10''. '''Hannah 13Mai10 13:05''' @Hannah: Nunja, ich verstehe Aufgabe 1 so, dass wir auch aus so etwas: ''1,2,3, 5,6,7 8,9,0, 10,11'' zwei Listen generieren sollen (''1,2,3,5,6,7'' und ''8,9,0,10,11''). Allerdings würde argv bei obiger Argumentenübergabe ja folgendes liefern: ''[1] => "1,2,3,", [2] => "5,6,7", [3] => "8,9,0", [4] => "10,11"'' Somit erhalten wir ja nicht zwei sondern vier Argumente. An sich kein Problem, nur ist jetzt die Frage, ob wir in main() solche Vorkommnisse überprüfen sollen und die Strings entsprechend "zusammenkleben" sollen, oder ob wir das ganze an die Funktion weiterreichen sollen, damit die das entsprechend verarbeitet. '''SebastianS 13Mai10 12:50''' @SebastianD: Ich würde erstmal gerne verstehen, wofür Sie diesen Rückgabewert brauchen. In meiner Lösung des Übungsblattes brauche ich den nicht. Genau wie die anderen Listen soll ja auch die Ergebnisliste mit einem ''-1'' aufhören, so dass man also immer herausfinden kann wo Sie aufhört. Listen, die Ihre eigene Größe kennen ohne erst einmal durchzulaufen, machen mir in einer späteren Vorlesung. '''Hannah 13Mai10 9:50''' @Jonathan: Ja, genau, man muss die ''.h'' Datei in der ''.cpp'' includen, das macht man aber auch eigentlich immer so, wir haben es bisher bloß noch nie gebraucht, jetzt brauchen wir es zum ersten Mal. Falls Sie sich fragen, ob es korrekt ist: es ist korrekt, in der ''.h'' Datei stehen ja die Deklarationen und in der ''.cpp'' Datei die Definitionen. Das ist genauso wie erst ''int x;'' zu schreiben und dann später im Programm ''x = 4;''. Zum zweiten Teil Ihrer Frage: Ja, die Funktion soll drei Argumente haben: die beiden Eingabelisten und die Ausgabeliste, alle als ''int*''. Wobei Sie darauf achten müssen die Ausgabeliste vor dem Aufruf als Feld zu deklarieren, genau wie wir das in der Vorlesung vor den Aufrufen von ''parseListOfIntegers'' gemacht haben. '''Hannah 13Mai10 9:48''' @SebastianS: Die ''parseListOfIntegers'' Funktion soll nur eine Liste bearbeiten. Ich verstehe das Problem, dass sich dann bei Aufgabe 1 stellen soll nicht, erklären Sie es doch bitte nochmal genauer bzw. an einem konkreten Beispiel. Zum zweiten Teil der Frage: Ja, die Konvention ist, dass eine Liste bei ''-1'' zu Ende ist, egal was danach noch kommt. Genauso wie in ''C / C++'' ein string zu Ende ist wenn ein null-character kommt, egal was danach noch kommt. Und genau, die leere Liste ist die, wo gleich als erstes Element die ''-1'' kommt. '''Hannah 13Mai10 9:44''' Spricht irgendetwas gegen eine Änderung des Rückgabetyps der ''parseListOfIntegers''-Funktion? Ich würde die sonst dahingehend ändern, dass ich zurückgebe, wie viele Elemente die Liste enthält. '''SebastianD 12Mai10 23:59''' Guten Abend, dann bring ich mal gleich auch meine Fragen hier rein. Also die Variable MAX_LIST_SIZE kann ich in der .cpp Datei ja nicht nutzen wenn ich die .h nicht include, dies ist ja aber grad, das was nicht passieren soll. Diesen Wert brauch ich ja aber um zuüberprüfen, dass mein i mir nicht zu weit wegläuft, oder? Dann zum AufgabenTeil 2? Soll hier die Funktion diesmal die neue Liste als Ausgabewert haben, oder nehme ich wieder eine Liste, dann als 3. Parameter auf? Da ja die 2 Listen ja schon in der Main aufgeteilt werden, und mir also so schon 2 Parameter liefert? '''JonathanN 12Mai10 22:23''' Also die Variable MAX_LIST_SIZE kann ich in der .cpp Datei ja nicht nutzen wenn ich die .h nicht include, dies ist ja aber grad, das was nicht passieren soll. Diesen Wert brauch ich ja aber um zuüberprüfen, dass mein i mir nicht zu weit wegläuft, oder? Dann zum AufgabenTeil 2? Soll hier die Funktion diesmal die neue Liste als Ausgabewert haben, oder nehme ich wieder eine Liste, dann als 3. Parameter auf? Da ja die 2 Listen ja schon in der Main aufgeteilt werden, und mir also so schon 2 Parameter liefert? '''JonathanN 12Mai10 22:23''' Ist es zulässig, dass man die parseListOfIntegers Funktion derartig umbaut, dass sie als Argument alle Argumente des Programms entgegen nimmt, und diese selbst in zwei Listen aufteilt? Weil sonst sehe ich nicht, wie man Aufgabe 1 lösen soll, wo doch die Trennung schon in der ListProcessingMain durchgeführt wird? Weitere Frage: Dürfen wir beim Zusammenführen davon ausgehen, dass bei erreichen eines Elementes mit dem Wert -1 abgebrochen werden darf, da Ende der Liste? Eine Liste die mit -1 beginnt ist ja für uns eine "leere" Liste, oder? '''SebastianS 12Mai10 22:06''' [[http://www.gnu.org/software/make/manual/make.html#reference|Hier]] und [[http://www.gnu.org/software/autoconf/manual/make/Automatic-Variables.html|hier]]. Links sind in den Folien der heutigen Vorlesung entnommen. '''SebastianS 12Mai10 19:41''' Wo kann man denn den Link zu der Erklärung für den verwendeten Make Syntax finden? '''Daniel 12Mai10 18:43''' |
== Fragen und Kommentare zur 8. Vorlesung / zum 8. Übungsblatt == '''#1''' |
Fragen und Kommentare zur 8. Vorlesung / zum 8. Übungsblatt
#1