Size: 43644
Comment:
|
Size: 44201
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 4: | Line 4: |
ok danke, funktioniert :) const davor schreiben '''Jens 19.Mai2010 13:53''' |
@Regina: Wie die Warnung sagt, heißt das, dass mit Ihrer Systemuhr etwas nicht stimmt. Oder mit Ihrem Editor, der den Zeitstempel für die Dateien setzt, die er schreibt. Was passiert denn, wenn Sie ''make clean'' machen und dann nochmal ''make build''? Wenn das nicht hilft, kopieren Sie die Datei mit der komischen Änderungszeit doch mal woanders hin, löschen Sie dann die ursprüngliche, und kopieren Sie dann die Kopie wieder zurück. Vielleicht stimmt dann der Zeitstempel? '''Hannah 19Mai10 14:35''' @Jens: Ok danke, funktioniert :) '''Jan 19.Mai2010 14:31''' @Jan: ''const;; davor schreiben. '''Jens 19.Mai2010 13:53''' |
Fragen und Kommentare zur 4. Vorlesung / zum 4. Übungsblatt
@Regina: Wie die Warnung sagt, heißt das, dass mit Ihrer Systemuhr etwas nicht stimmt. Oder mit Ihrem Editor, der den Zeitstempel für die Dateien setzt, die er schreibt. Was passiert denn, wenn Sie make clean machen und dann nochmal make build? Wenn das nicht hilft, kopieren Sie die Datei mit der komischen Änderungszeit doch mal woanders hin, löschen Sie dann die ursprüngliche, und kopieren Sie dann die Kopie wieder zurück. Vielleicht stimmt dann der Zeitstempel? Hannah 19Mai10 14:35
@Jens: Ok danke, funktioniert Jan 19.Mai2010 14:31
@Jan: const;; davor schreiben. Jens 19.Mai2010 13:53 Was kann man eigentlich gegen diese Warnung tuen? Respektive gibt sie Punktabzug? In der Zeile initialisiere ich ein char* mit "text".. Jan 19Mai2010 13:51 Hallo, ich bekomme beim make build immer die Meldung: Deshalb kann ich nichts mehr kompilieren. Was soll ich da tun? Regina 19Mai2010 13:41 @Jan + alle: Ein Feld können Sie übrigens in Wenn die Anzahl der Elemente in den @Jan: Das geht am besten so: Hannah 19Mai10 12:48 Wie kann ich längere char* am besten umbrechen? der linter mag ja keine Zeilen länger als 80 Zeichen. Das hier funktioniert leider nicht... wäre ja auch zu schön. Jan 19Mai10 12:44 @Betim: Ja, Sie können das schon so machen und bekommen dafür keinen Punktabzug, aber wie ich unten gesagt habe würde ich in dem Fall anstelle von dem Es geht auch so: Daniel 18Mai10 22:06 Mein Code: Ich benutz switch schon korrekt, es ist ja nicht so, dass da nur 4 cases stehen. BetimM 18Mai10 21:57 Mein Programm beachtet schon MAX_LIST_SIZE und die Mitteilung auf der Hauptseite habe ich auch beachtet, es ging mir nur darum, dass hier zwischen den verschiedensten Fragen nebenher erwähnt wird, dass zusätzlich noch weitere Meldungen ausgegeben werden müssen, mehr nicht. Es stört mich nicht, dass es gemacht werden muss, es hat mich nur gestört, dass es hier fast untergeht und darum die Bitte, ob man zukünftig solche (meines Erachten) wichtige Sachen nicht auch gleich von Anfang an aufschreiben könnte oder spätestens wenn sie aufkommen direkt auf die Hauptseite packen. Danke Ben 18Mai10 21:45 @Betim 2: Wenn in den @Betim: Posten Sie doch mal das konkrete Stück Code, was Sie da schreiben wollen. Dann sage ich Ihnen ob das ok ist, oder wie man es besser machen kann. Hannah 18Mai10 21:49 Kriege ich Punkte abgezogen, wenn ich in einem switch-Konstrukt kleinere if-else-Abfragen habe? Z.B. Ich weiss das ist kein guter Programmierstil, aber imho fällt mir nichts besseres ein. BetimM 18Mai2010 21:42 @Ben: Es steht schon in meinem Programm aus der Vorlesung Änderen sich die Anforderungen an die Aufgabe noch häufiger? Also weder auf dem Arbeitsblatt noch in der Beschreibung auf der Hauptseite steht, dass man eine Fehlermeldung bei einer zu langen Liste ausgeben muss. Hab das gerade nur hier zwischen dem vielen Text zufällig gefunden. Es wäre gut, wenn solche Anforderungen zumindest immer auf dem Arbeitsblatt stehen würden, damit man nicht die Gefahr läuft, dass plötzlich 2 Tage vor der Abgabe sich wieder etwas ändert. Ich schaue zwar meistens täglich hier ins Wiki, trotzdem finde ich es, so wie es gerade abgelaufen ist, recht unglücklich gelöst. Weil, wie gesagt, man laut Arbeitsblatt keine Fehlermeldung ausgeben muss. Da kann man jetzt nur hoffen, dass jeder das Wiki liest. Danke Ben 18Mai10 20:44 @Jonas: Die Fehlermeldung passt in der Tat nicht zu dem Code den Sie hier gepostet haben. Sind Sie sicher, dass sich die Fehlermeldung auf diese Zeilen in Ihrem Code bezieht? Fall ja, posten Sie doch mal ein minimales Programm, in dem sich dieser Fehler zeigt. Hannah 18Mai10 20:25 @Jonathan: Ja, es ist auch ok, wenn Sie im Falle zu langer Listen einfach Hoffe mal die Frage ist nicht zu spezifisch: Ich versuche über die Funktion herauszufinden ob das momentane Zeichen legal ist. Das Problem ist aber, dass der Compiler "Invalid converison from 'const char' to 'char*'" ausspuckt, wenn ich die Funktion aufrufe: bzw: und ich eben nicht ganz nachvollziehen kann, warum er überhaupt versucht zu char* zu konvertieren.. JonasH 19:11 18Mai10 Das heißt für zu lange Listen muss ich auch noch eine Fehlermeldung mir aus denken? Denn der Code wächst und wächst, allein meine Datei ListProcessingTest.cpp hat in Zwischenzeit über 100 Zeilen, und es Fehlen noch mindestens 2 Fälle. Denn den Fall zu lange Liste hatte ich verstanden, dass dieser einfach mit exit(1) beendet werden sollte, also in anderen Wörtern soll auch da das Programm weiter laufen und mit interleaveListsOfIntegers fort fahren? JonathanN 18Mai10 16:33 @Hannah: Alles klar, vielen Dank. SebastianS 15:52 18Mai10 @SebastianS: Gute Frage. So ginge es zum Beispiel: und dann testen ob Wie sollen wir eigentlich im Test das Überschreiten von MAX_SIZE_LIST überprüfen? Weil lint wirft da ja immer einen Fehler, dass die Zeile im Test (also die, in der ich den Teststring initialisiere) zu lange wäre @Daniel: Auf jeden Fall eine Warnung ausgeben. Ob Sie die Liste abschneiden oder die leere Liste zurückgeben, sei Ihnen überlassen. Ich habe sie in meiner Lösung einfach abgeschnitten. Das sollte dann auch in der Warnung stehen. Hannah 18Mai10 14:03 Das MAX_LIST_SIZE soll behandelt werden, wie soll das Ergebnis der behandlung aussehen? Warning? Leere Liste zurückgeben? Oder einfach die Liste abschneiden? Daniel 18Mai10 13:56 @Simson: Schauen Sie doch einmal bei einem unserer Fragetermine oder bei Jens Hoffmann vorbei. Das scheint ein nicht-triviales Problem zu sein, das sich am besten mit dem Rechner lösen lässt, sonst schwierig. Hannah 18Mai10 13:55 Habe seit diesem Blatt Probleme mit GTest. Habe meine Fehler unter GTest beschrieben. Vielleicht hat ja wer eine Idee. Simson 18Mai2010 12:05 @Peter + Alle: Ja, wie Dario richtig sagt, beim ersten Mal als wenn du das wieder so schreibst const char* deklarierst du dein listAsString 2mal, du musst also ohne const char* schreiben und setzt einfach die neue werte. Dario 18Mai2010 01:52 Ich hab gerade ein paar Probleme mit der Test Datei aus der Vorlesung. Um weitere Randfälle zu testen, müsste man doch den Wert von "const char* listAsString = ... " ändern im Test der Funktion parseListOfIntegers, dies geht aber nicht weil durch const der Compiler sofort meckert, wenn ich ein anderes Szenario testen möchte. Kann mir jemand helfen? Peter 18Mai2010 01:40 @Hannah: Ich habe jetzt die @Heinke: Wenn @Hannah: So habe ich es mir auch gedacht und MAX_LIST_SIZE verwendet. Jedoch bekomme ich die Fehlermeldung MAX_LIST_SIZE was not declared in this scope. Woran könnte das liegen? Heinke 17Mai10 18:54 @Dennis: Wenn Sie sich in einer Arbeitskopie aus dem SVN befinden (das sehen Sie daran, ob es einen @Heinke: Zur ersten Frage: Ich muss die Header Guards an mein Systempfad anpassen damit lint keinen Fehler wirft. Aber wie müssen die dann aussehen, dass das lint auch bei euch auf dem SVN Server keine Fehler wirft? Dennis 17Mai10 18:40 Kann ich der Funktion parseListOfIntegers die Konstante MAX_LIST_SIZE mitgeben, damit ich auf Überlauf testen kann? Und kann ich bei der interleave Funktion davon ausgehen, dass die beiden übergebenen Listen bereits integer sind? Oder müssen sie vorher auch geparsed werden? Heinke 17Mai10 18:40 @Johannes: Siehe dazu mein Kommentar vom @Jonathan: Ja, Fehlermeldungen wie im Beispiel von SebastianS sind perfekt. So viele Fälle sind es nicht. Sobald irgendein Fehler auftritt, können Sie das parsen abbrechen, die entsprechende Fehlermeldung ausgeben und die leere Liste zurück liefern. Sie müssen nichts reparieren oder die wahrscheinlich gemeinte Liste "erraten" und auch nicht alle Fehler finden, der erste reicht. Hannah 17Mai10 17:23 @SebastianD + Alle: Ja, Ihre Fehlermeldungen sind perfekt. Unabhängig davon sollten sie aber noch Zitat von Hannah (Hauptseite): "Und vor und nach einem Komma muss eine Zahl kommen", wenn eine Liste mit einem Komma aufhört, ist das also ein Syntaxfehler. Falls es irgendwen interessieren sollte, so sehen meine Fehlermeldungen aus: SebastianD 17Mai10 17:04 Dann muss ich ja schon fast für jeden Fehler, eine andere FehlerMeldung ausgeben, also bei folgendem Beispiel an Eingabelisten 1,2,6 4,n , 5,8 müsste ich da als Fehlermeldung ausgeben: Bei der 2 Liste haben Sie als 2. Element ein Buchstaben getippt, oder so genau dann auch wieder nicht? Denn ich habe bisher, nur ne Fehlermeldung wenn in der Liste etwas vorkommt was keine Ziffer, Leerzeichen bzw. Komma ist, gebe ich einfach ne Fehlermeldung, àla : Da ist ein Zeichen was da nicht hin gehört. Dann noch ne Frage, bei Folgender Liste 1,5,6,8, (es geht um das Komma am Ende) soll ich dies als Fehler ansehen, und daraus die leere Liste machen? Oder schluck ich das als das gleiche wie 1,5,6,8 ? Des Weiteren scheint es immer noch welche hier auf der Wiki zu geben die sich nicht an die Konvention halten wie hier unterschrieben werden sollte. Des weiteren, scheint es einig zugeben die sich ein Preis für die meisten Zeilen, bzw die meisten Änderungen erwarten, oder? Mit endlich mal sonnigen Grüßen JonathanN 17Mai10 16:46 Dann muss ich ja schon fast für jeden Fehler, eine andere FehlerMeldung ausgeben, also bei folgendem Beispiel an Eingabelisten 1,2,6 4,n , 5,8 müsste ich da als Fehlermeldung ausgeben: Bei der 2 Liste haben Sie als 2. Element ein Buchstaben getippt, oder so genau dann auch wieder nicht? Denn ich habe bisher, nur ne Fehlermeldung wenn in der Liste etwas vorkommt was keine Ziffer, Leerzeichen bzw. Komma ist, gebe ich einfach ne Fehlermeldung, àla : Da ist ein Zeichen was da nicht hin gehört. Dann noch ne Frage, bei Folgender Liste 1,5,6,8, (es geht um das Komma am Ende) soll ich dies als Fehler ansehen, und daraus die leere Liste machen? Oder schluck ich das als das gleiche wie 1,5,6,8 ? Des Weiteren scheint es immer noch welche hier auf der Wiki zu geben die sich nicht an die Konvention halten wie hier unterschrieben werden sollte. Des weiteren, scheint es einig zugeben die sich ein Preis für die meisten Zeilen, bzw die meisten Änderungen erwarten, oder? Mit endlich mal sonnigen Grüßen JonathanN 17Mai10 16:46 @SebastianD: Ja, so erscheint mir die Fehlermeldung auch. Ich schätze, es ist nicht normal, dass ich bisher nicht einmal für das erste Übungsblatt Punkte erhalten habe, oder? Ich schätze, es ist nicht normal, dass ich bisher nicht einmal für das erste Übungsblatt Punkte erhalten habe, oder? Dann muss ich ja schon fast für jeden Fehler, eine andere FehlerMeldung ausgeben, also bei folgendem Beispiel an Eingabelisten 1,2,6 4,n , 5,8 müsste ich da als Fehlermeldung ausgeben: Bei der 2 Liste haben Sie als 2. Element ein Buchstaben getippt, oder so genau dann auch wieder nicht? Denn ich habe bisher, nur ne Fehlermeldung wenn in der Liste etwas vorkommt was keine Ziffer, Leerzeichen bzw. Komma ist, gebe ich einfach ne Fehlermeldung, àla : Da ist ein Zeichen was da nicht hin gehört. Dann noch ne Frage, bei Folgender Liste 1,5,6,8, (es geht um das Komma am Ende) soll ich dies als Fehler ansehen, und daraus die leere Liste machen? Oder schluck ich das als das gleiche wie 1,5,6,8 ? Des Weiteren scheint es immer noch welche hier auf der Wiki zu geben die sich nicht an die Konvention halten wie hier unterschrieben werden sollte. Des weiteren, scheint es einig zugeben die sich ein Preis für die meisten Zeilen, bzw die meisten Änderungen erwarten, oder? Mit endlich mal sonnigen Grüßen JonathanN 17Mai10 16:46 @SebastianD: Ja, so erscheint mir die Fehlermeldung auch. Ich schätze, es ist nicht normal, dass ich bisher nicht einmal für das erste Übungsblatt Punkte erhalten habe, oder? Bedeutung der Fehlermeldung ./ListProcessingTest: error while loading shared libraries: libgtest_main.so.0: cannot open shared object file: No such file or directory? -- JohannesS 2010-05-17 13:56:56 @Dennis: Ja, Ist es korrekt wenn mein interleaveListsOfIntegers drei Argumente erhält? Zwei Zeiger Zahlenfolgen und, wie parseListOfIntegers auch, einen Zeiger auf die Liste in die das Ergebnis geschrieben werden soll (welche dann zuvor in der Main angelegt wird)? Darf ich in der Main dann printListOfIntegers und ein anderes prefix verwenden um die neue Liste auszugeben? Was genau ist mit einer sinnvollen Fehlermeldung in parseListOfIntegers gemeint. Genügt es eine allgmeine Fehlermeldung für falsche Eingabe zu verwenden oder soll explizit angegeben werden welcher Fehler vorliegt. Das würde jedoch dazu führen, dass da parseListOfIntegers zweimal parallel ausgeführt wird, die Fehlermeldungen relativ unstrukturiert ausgegeben werden. Mein Ansatz ist bis jetzt, dass printListOfIntegers wenn es eine leere Liste erhält nach der leeren List ("") einen Hinweis auf eine falsche Eingabe ausgibt. Wäre das ok?ListProcessingTest.cpp:12: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*«
make: Warnung: Datei 'ListProcessingMain.cpp' hat Änderungszeit 1,5e+03 s in der Zukunft
make: Warnung: Mit der Uhr stimmt etwas nicht.
Die Bearbeitung könnte unvollständig sein.
const char* daysOfWeek[7] = { "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa" };
int firstTenPrimes[10] = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 };
const char* longMessage = "This is a really long message that unfortunately"
" does not fit into one line. However, it serves"
" as a nice example for how to write down a long"
" string without cpplint complaining about it.";
char* ERROR_CODES[6];
ERROR_CODES[1] = "WARNING: Error in argument %d, at position %d: '%c'.\r\nIllegal char. Only spaces, commata and digits are allowed.\n";
...
char* ERROR_CODES[6];
ERROR_CODES[1] = "WARNING: Error in argument %d, at position %d: '%c'.\r\n" +
"Illegal char. Only spaces, commata and digits are alowed.\n";
...
switch (listAsString[i])
{
case ' ' : break;
default:
printf("Error: Expected digit or comma, found space.\n");
exit(1);
break;
}
switch (listAsString[i])
{
case ' ' : if (!digitBegin)
{
startOfLastNumber = i + 1;
break;
}
else
{
printf("Error: Expected digit or comma, found space.\n");
exit(1);
}
switch(..)
case 1: if(..)
{
...}
else {
...
}
bool isValidChar(char n)
{
...
return true;
}
isValidChar(listAsString[i])
if (isValidChar(listAsString[i]) == true)
char tooLongList[2 * MAX_LIST_SIZE + 2];
for (int i = 0; i < MAX_LIST_SIZE; ++i)
{
tooLongList[2 * i] = '0';
tooLongList[2 * i + 1] = ',';
}
tooLongList[2 * MAX_LIST_SIZE] = '0';
tooLongList[2 * MAX_LIST_SIZE + 1] = 0;
? SebastianS 18Mai10 14:47
PS C:\Dateien\Studium\6. Semester\c++\sd76\uebungsblatt-4> .\ListProcessingMain.exe "1,2,3" "4,n, 5,8"
ERROR in list "4,n, 5,8" at position 2: expected digit or space, found 'n'
Result list: "1,2,3"
PS C:\Dateien\Studium\6. Semester\c++\sd76\uebungsblatt-4> .\ListProcessingMain.exe "1,5,6,8," "4-5"
ERROR in list "1,5,6,8,": The last token of your input is ','.
ERROR in list "4-5" at position 1: expected comma, digit or space, found '-'
Result list: ""
PS C:\Dateien\Studium\6. Semester\c++\sd76\uebungsblatt-4> .\ListProcessingMain.exe "1,5,6,8," "4 5"
ERROR in list "1,5,6,8,": The last token of your input is ','.
ERROR in list "4 5" at position 2: expected comma or space, found '5'
Result list: ""
Die Datei existiert jedoch und ich habe den Parameter -lgtest_main dem Compiler-Befehl der Test-Datei beigefügt. Daher verstehe ich nicht, weshalb der Compiler dem Pfad nicht zu folgen können scheint. -- JohannesS 2010-05-17 14:42:22
@Hannah: Also eine Fehlermeldung, die ich erwarten würde, würde auch die Gesamtposition in der Eingabe ausgeben. Nur lässt sich das mit der aktuellen Methodensignatur nur über eine globale (veränderbare) Variable lösen, in der das Offset gespeichert würde. Das fände ich dann aber wieder zu ekelhaft, vor allem weil die
@Johannes: Die Fehlermeldung sieht für mich so aus, als ob die Datei libgtest_main.so.0 nicht gefunden wurde. SebastianD 17Mai10 15:33:
@Hannah: Also eine Fehlermeldung, die ich erwarten würde, würde auch die Gesamtposition in der Eingabe ausgeben. Nur lässt sich das mit der aktuellen Methodensignatur nur über eine globale (veränderbare) Variable lösen, in der das Offset gespeichert würde. Das fände ich dann aber wieder zu ekelhaft, vor allem weil die
@Johannes: Die Fehlermeldung sieht für mich so aus, als ob die Datei libgtest_main.so.0 nicht gefunden wurde. SebastianD 17Mai10 15:33: Die Datei existiert jedoch und ich habe den Parameter -lgtest_main dem Compiler-Befehl der Test-Datei beigefügt. Daher verstehe ich nicht, weshalb der Compiler dem Pfad nicht zu folgen können scheint. -- JohannesS 2010-05-17 14:42:22
@Hannah: Also eine Fehlermeldung, die ich erwarten würde, würde auch die Gesamtposition in der Eingabe ausgeben. Nur lässt sich das mit der aktuellen Methodensignatur nur über eine globale (veränderbare) Variable lösen, in der das Offset gespeichert würde. Das fände ich dann aber wieder zu ekelhaft, vor allem weil die
@Johannes: Die Fehlermeldung sieht für mich so aus, als ob die Datei libgtest_main.so.0 nicht gefunden wurde. SebastianD 17Mai10 15:33:
@Markus: Sie sollten sich auf die Funktionen und Konstrukte beschränken, die wir bisher in der Vorlesung hatten. Hannah 16Mai10 18:26
Ist es eigentlich erlaubt Funktionen aus z.B. cstring und cctype zu verwenden? Oder darf man sich lediglich auf stdio und stdlib beschränken. MarkusN 16Mai 18:18
@Fabian: Danke für den ersten Hinweis, ich habe den exit operator dort verwendet und daher hatte ich so viele Schwierigkeiten. Was die zweite Anmerkung angeht, bin ich nicht soo Anfänger, dass ich das nicht weiß. Evtl. habe ich es falsch ausgedrückt aber es war schon spät und den Compiler oder wie auch immmer hatte mich schon genervt Gruß. Dario 16Mai10 10:48
@Dario: ./ListProcessingMain "" " 1,2,3,4 " soll keine Usage-Info ausgeben, da ja 2 Argumente da sind ("" und " 1,2,3,4 "). Es liegt an dir dafür zu sorgen, dass "" in die leere Liste umgesetzt wird. Außerdem soll das Programm ja selbst bei falschen Zeichen in den Argumenten nicht mit einem exit-code terminieren (die funktion soll schließlich noch die leere Liste zurückgeben), sondern Weiterlaufen, aber den Benutzer darüber in Kenntnis setzen, dass wohl irgendwo im Programm nicht alles nach Plan lief. Wenn ich die Aufgabenstellung richtig verstehe, dann soll selbst ./ListProcessingMain " abc" " 1,2,3,4 " die Liste 1,2,3,4 ausgeben, aber noch zusätzlich noch eine Warnung. Kleine Anmerkung am Rande: Der Compiler gibt die Usage-Meldung nicht aus, sondern dein Programm, falls das mit dem letzten Teil deines Satzes ausgesagt werden sollte. Fabian 16Mai10 9:21 Also dann kann ich gar nicht meine leeren Listen außer mit dem TEST sehen, weil @Dario: Das Programm muss mit genau zwei Argumenten aufgerufen werden (also Ja meine Frage war wenn ich z.B eine Liste ist leer aber ich kriege den Usagesfehler . deshalb hatte ich mir gedacht die Geschichte mit der Null. Also muss ich diese Meldung ändern. P.S. wegen der Triviale Änderung tut es mir Leid , jedes mal sehe ich nicht dies kleines Kästchen. Dario 15Mai10 00:00 @Dario: Ja, wie Sebastian sagt ist eine Liste in der internen Repräsentation leer, wenn gleich das erste Element schon Eine Liste ist leer, wenn sie mit -1 beginnt. SebastianS 15Mai10 23:50 Aber ich habe noch nicht verstanden wann eine Liste leer ist.Ohne Argument oder mit unendlichen vielen Null? Gruß Dario 15Mai10 23:44 @Dario: Die 0 ist erlaubt und muss ja auch gar nicht besonders behandelt werden. Nur negative Zahlen sind nicht erlaubt (weil kein Wenn eine Liste nur die Zahl Null enthält dann ist die Liste leer oder nicht? oder ist die Liste leer wenn ich kein Argument bzw. Zahl schreibe? Ich bin davon ausgegangen, dass wenn die erste zahl null ist,dann ist die Liste leer. sonst wird es schon komplizierter. z.B liste 1{0} aber auch {0,0,0,0,0,0,} ist wieder leer.. aber die Sache mit dem Null ist schon an sich komplieziert weil dann wäre eine so eine List { 0,0, unendliche viele null bis MAX_LIST_SIZE -1 ,1} nicht leer Noch eine Frage wenn ich so eine Liste habe { 0,1,2,3} oder { 1,2,0,3} oder {0,1,2} der Null müss berücksichtigt werden als Zahl bei der PrintFunktion oder muss einfach weggelassen werden? Dario 15Mai10 22:28 @Fabian + Alle: Ja, so wie Sie es sagen ist es genau richtig. Ich hatte es verkürzt und dadurch nicht ganz korrekt dargestellt. Richtig ist, wie Sie sagen, dass eine Zahl zwischen 231 und 232 - 1 für einen Kleiner Hinweis zu den "int"-s: 1) ints haben einen Wertebereich von -231 bis 231 - 1(, werden somit also warscheinlich als Zweierkomplement-Zahl dargestellt). Zweierkomplementzahl bedeutet, dass die untersten n-1 Bits der Zahl als "normale positive" Binärzahl interpretiert wird und wenn wenn das oberste Bit auf 1 ist, dann wird noch 2(n-1) von dieser Zahl abgezogen. (Integer n=32 für 32 Stellen) 2) wenn eine int-Variable folglich mit 231 -1 (Binärdarstellung: 011111...111(32 Stellen))belegt ist, und man 1 auf diese Variable addiert, so erhält man -231 (Binärdarstellung: 10000...0000 (32 Stellen)). Folglich stimmt das mit dem modulo nicht ganz. Fabian 15Mai10 8:52 @Hannah: Achssooo.. Ich habe die ganze Zeit versucht diesen Fehler zu beheben, @Dario: Ein Hallo, könnte mir bitte jemand nur einen kleinen Tipp geben warum wenn ich mehr als 11 Ziffern( für ein Zahl z.B- 12345678911,2,4) eintippe dann bekomme ich(erste Zahl, die andere nach der Komma sind richtig) eine Random Zahl? also liegt es an der Größe des Arrays? MAX_LIST_SIZE? Gruß Dario 4Mai10 19:40 @Johannes: Wenn man das Programm z.B. so aufruft Folgende 2 Fragen: 1. Es sind ja nur dann Leerzeichen innerhalb der Liste möglich, wenn die Characterkette als String angegeben wird. Das wurde ja weiter unten schon festgestellt (sonst wären die Leerzeichen Argument-Separatoren). In dem Fall müsste man jedoch die Anführungszeichen bei Bearbeitung der Eingabe berücksichtigen. Sollen nun das non-String Eingabe-Format (z.B. 1,2,3) ohne Leerzeichen oder das String Eingabe-Format (z.B. "1, 2, 3") mit mögl. Leerzeichen oder beide Formate behandelt werden? 2. Beim Auftauchen anderer Zeichen soll "eine sinnvolle Warnung" sowie die leere Liste ausgegeben werden. Also nur die Warnung oder sollte sich die "leere Liste" irgendwie in der Ausgabe manifestieren? JohannesS 14Mai10 18:04 Offtopic: Jeder, der Interesse daran hat: Ich habe vor ner Woche ein Forum für alle Informatik-Studenten, die letztes Semester angefangen haben, eröffnet. Wer will, kann sich dort gerne anmelden: http://info-unifreiburg09.forumieren.com/ DavidZ. 14Mai10 15:48 @Dario: In der Deklaration Warum kann man nicht die Variable MAX_LIST_SIZE belibig groß machen? also wenn ich 100000000000000= MAX_LIST_SIZE setze dann den Compiler meckert. Dario 14Mai10 11:59' Der Fehler war eine Zeile darunter printf("%s"...) anstatt printf("%c"...) Ben 14Mai10 02:41 @Ben: In dem Teilstück unten sehe ich keinen Fehler, ich glaube der segmenation fault kommt woanders her. Schreiben Sie doch mal ein vollständiges, aber minimales(!) Programm, wo der segfault auftritt und pasten Sie es hierhin. Hannah 14Mai10 2:38 Hallo, warum liefert ein switch über listAsString[i] in der Funktion parseListOfIntegers() immer einen SegFault, wenn das Zeichen nicht zwischen 0-9 ist (in dem Fall noch als Char gespeichert)? Ich schreibe doch keinen Wert (in einen gesperrten Speicherbereich) sondern will nur den Wert überprüfen Danke Ben 14Mai10 02:13 @Niklas + Alle: Ja, was Florin schreibt ist genau richtig. Sie sollen einfach nur testen ob bei einer nicht zulässigen Liste die leere Liste zurückkommt, wie in Aufgabe 1 gefordert. Wenn man testen wollen würde, ob jede mögliche Art der Fehlformatierungen auch genau als diese erkannt wird, würde man die Funktion @Sebastian: Ja, genau. Ist in der Aufgabe von dem Übungsblatt nicht genau spezifiziert, ich weiß, aber in der Mitteilung auf der Hauptseite habe ich es jetzt glaube ich genau gesagt, was gehen soll und was nicht. Wie gesagt, in kurz: zulässig sind Folgen von Zahlen mit genau einem Komma zwischen zwei Zahlen und beliebig Leerzeichen um die Kommata oder am Anfang und am Ende, alles andere nicht zulässig. So würde man es auch in Wirklicheit machen, weil z.B. bei Ihrem Beispiel @Hannah: D.h. "1,2,3 4,5,6" @Florin: Das sind sogenannte @Dario: Zum ersten Teil der Frage: Nein, so etwas wie darf man nicht schreiben bzw. es würde nicht das tun was Sie erwarten. Zum zweiten Teil der Frage: Ja, Sie können annehmen dass Sie immer genau zwei Argumente bekommen, also dass immer @David + Manuel + Alle: Ich habe jetzt auf der Hauptseite unter Mitteilungen noch einmal genau formuliert, welche Eingabeargumente akzeptiert werden sollen und welche nicht. Nochmal in kurz: Folgen von Zahlen mit genau einem Komma zwischen zwei Zahlen und beliebig Leerzeichen um die Kommata oder am Anfang und am Ende, alles andere soll als nicht zulässig erkannt werden. Die Beispielfolgen in Ihren Fragen sind beide nicht zulässig, d.h. das Programm sollte in dem Fall meckern und die leere Folge zurückgeben, und der erweiterte Test sollte solche Fälle auch testen. Hannah 13Mai10 22:21 @Niklas: Du kannst ja auf -1 testen, also ob die leeren Listen zurückkommen. Andere Frage: Was soll das in der ListProcessing.h? Florin 13.Mai 22:20 Hallo, haben wir schon eine Möglichkeit kennengelernt mit gtest auf Fehlermeldungen zu testen? Das braucht man ja für die Test für 1.1 und 1.2 Gruß Niklas 13Mai10 22:18 Hallo zusammen, eine technische Frage anstatt immer so zu schreiben char* arcobaleno darf man auch so schreiben: oder gibt´s was um das kürzer und ohne "Wiederholung" zu schreiben? Bei dem Erstem Punkt der 1 Aufgabe ist so wie folgendes gemeint? Also aber nicht so: sonst wären ja drei Argumenten gell? Gruß 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: 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 Kann mir jemand erklären warum beim folgenden Code der Letze Befehl nicht ausgeführ 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: @Hannah: Nunja, ich verstehe Aufgabe 1 so, dass wir auch aus so etwas: @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 @Jonathan: Ja, genau, man muss die @SebastianS: Die Spricht irgendetwas gegen eine Änderung des Rückgabetyps der 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 Ist es zulässig, dass man die Hier und 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 uebungsblatt-4$ ./ListProcessingMain 1
Usage: ./ListProcessingMain <list1> <list2>
danke. Dario 4Mai10 19:40
int i = 0;
// listAsString == "abcd123";
switch(listAsString[i]) { // gibt sofort einen SegFault
case '...':
}
if ( arcobaleno == 'a' && 'b')
#ifndef VORLESUNGEN_VORLESUNG_4_LISTPROCESSING_H_
#define VORLESUNGEN_VORLESUNG_4_LISTPROCESSING_H_
if ( arcobaleno == 'a') && (arcobaleno == 'd' ) && (arcobaleno == 'b')
if ( arcobaleno == 'a' && 'b' )
./ListProcessingMain 1,1,1,1,,1,1,1,1,1, 11111
1,0,0, 0000 ,111111
finallist[k] = -1; //Also warum dieser Befehl nicht ausgeführt wird?
printf("%d %d",k,finallist[k]);
@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
while (bedingung)
{
ein paar berechnungen
}
finallist[k] = -1; //Also warum dieser Befehl nicht ausgeführt wird?