Wsort.c
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.
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.
Aufgabe 2
Schade in /proj/i4sos/pub/aufgabe2/ befindet sich kein fsort. Dabei hab ich mich schon so gefreut mein Dekompiler anzuwerfen :motz:
Schwanzvergleich
[code]faui05b [~/sos1/aufgabe2/bin.i386]> for list in /proj/i4sos/pub/aufgabe2/wlist*; do echo $list; time ./wsort < $list > /dev/null; done
/proj/i4sos/pub/aufgabe2/wlist0
real 0m0.002s
user 0m0.000s
sys 0m0.002s
/proj/i4sos/pub/aufgabe2/wlist1
real 0m0.029s
user 0m0.024s
sys 0m0.002s
/proj/i4sos/pub/aufgabe2/wlist2
real 0m0.061s
user 0m0.057s
sys 0m0.003s
/proj/i4sos/pub/aufgabe2/wlist3
real 0m0.395s
user 0m0.379s
sys 0m0.013s
/proj/i4sos/pub/aufgabe2/wlist4
real 0m1.458s
user 0m1.428s
sys 0m0.025s
faui05b [~/sos1/aufgabe2/bin.i386]>
[/code]
was machen wir denn mit leeren Wörtern bzw Zeilen? müssen die ignoriert werden oder einsortiert?
da biete ich weniger ich tät sagen als score irgendwie 1 / Zeit damit er länger wird je weniger Zeit man braucht
[code]@faui05b:/proj/i4sos/simachaj/aufgabe2/bin.i386 # for list in /proj/i4sos/pub/aufgabe2/wlist*; do echo $list; time ./wsort < $list > /dev/null; done
/proj/i4sos/pub/aufgabe2/wlist0
real 0m0.002s
user 0m0.000s
sys 0m0.002s
/proj/i4sos/pub/aufgabe2/wlist1
real 0m0.023s
user 0m0.019s
sys 0m0.003s
/proj/i4sos/pub/aufgabe2/wlist2
real 0m0.052s
user 0m0.050s
sys 0m0.001s
/proj/i4sos/pub/aufgabe2/wlist3
real 0m0.322s
user 0m0.314s
sys 0m0.007s
/proj/i4sos/pub/aufgabe2/wlist4
real 0m1.212s
user 0m1.192s
sys 0m0.019s
[/code]
EDIT: Lief auch auf faui05b ^ Compilerswitches wie in Aufgabe 1.
EDIT: Ein wenig war noch drin.
Zitat aus dem Aufgabenblatt.
[code]$ time ./wsort < /proj/i4sos/pub/aufgabe2/wlist0 > /dev/null
0.000u 0.001s 0:00.00 0.0% 0+0k 0+0io 0pf+0w
$ time ./wsort < /proj/i4sos/pub/aufgabe2/wlist1 > /dev/null
0.041u 0.003s 0:00.04 100.0% 0+0k 0+0io 0pf+0w
$ time ./wsort < /proj/i4sos/pub/aufgabe2/wlist2 > /dev/null
0.087u 0.004s 0:00.09 88.8% 0+0k 0+0io 0pf+0w
$ time ./wsort < /proj/i4sos/pub/aufgabe2/wlist3 > /dev/null
0.537u 0.032s 0:00.57 98.2% 0+0k 0+0io 0pf+0w
$ time ./wsort < /proj/i4sos/pub/aufgabe2/wlist4 > /dev/null
1.971u 0.087s 0:02.06 99.5% 0+0k 0+0io 0pf+0w[/code]
ist aber noch nicht optimiert
Hast du es auf faui05b laufen lassen?
ne ^^ leider nein. sondern auf faui06
Wie soll man dem programm sagen dass die eingabe zu ende ist???
Das geht automatisch in dem du STRG+D schickst.
scanf oder auch fgets haben ja einen int als Rückgabewert. Wenn dieser gleich EOF ist, dann ist Schluss mit der Eingabe.
jo danke! das hab ich mir eigentlich auch gedacht, steht halt nichts in der aufgabe da ist aber des einzig logische
Aber Achtung bei der Benutzung von Eclipse mit dem CDT.
Wenn du es in der IDE zum Debuggen ausführst… die Konsole von Eclipse wird dein STRG+D nicht “bemerken”.
In der Hinsicht lohnt es sich schon, den gdb auch per Konsole selbst bedienen zu können.
ach danke für den hinweiss ich mach aber eh alles in der konsole
Wobei Eclipse echt nicht zu unterschätzen ist, mit dem GUI für den Debugger und Co.
Kennt jemand vielleicht ein Addon oder Plugin für Eclipse das es möglicht macht sowas zu schicken?
habe getchar() zum auslesen des stdin genommen, ist mein prog vll deswegen langsamer ?
Warum nimmst du getchar() wenn es so nette Funktionen wie scanf oder besser fgets gibt?
Die NFS mounts hauen euch eure Ergebnisse ordentlich durcheinander. Kopiert die Datei in ein lokales Verzeichnis (/var/tmp/ ist glaub ich lokal, kann man mit dem befehl ‘mount’ rauskriegen, /tmp liegt afaik im Speicher und ist deswegen auch nicht geeignet).
Schreibt doch mal auf, welche Strategien ihr zum schneller werden anwendet. Das find ich interessanter als irgendwelche Zeiten.
Ahh das ist doch dann spielverderberei für die anderen - nächste woche oder so vielleicht aba jetzt schon alles verraten ist doch noch zu früh
bei fgets hab ich immoment das problem, dass ich woerter die > 100 zeichen lang sind, ignoriere, bzw. richtig ignoriere. weil man ja bei der syntax sagt, wieviel zeichen man maximal einlesen will … geb ich da zb 101 zeichen an, um die mit 100 rauszufischen und kommt dann ein wort mit zb 150zeichen länge, dann fischt er die 101 zeichen als zulanges wort raus, und beim nächsten wort nimmt er dann den rest der zeile, also die übrigen 49zeichen …
edit: auch wurde das programm damit nicht wirklich schneller ^^
achja und noch eine frage, habt ihr das alle in die main funktion gepackt ? oder einzelne funktionen gemacht?