Diese Aufgabe hat drei Teile: Erstens mußt du dir klarmachen, wie der ganzzahlige Anteil von n/2 aussieht, wenn sowohl n als auch n/2 binär codiert sind. Wenn dir das nicht klar ist, nimm 20 Zahlen in Binärdarstellung her und vergleich sie mit dem ganzzahligen Anteil ihrer Hälfte. Du solltest ein Muster erkennen.
Der zweite Teil ist, sich einen Algorithmus zu überlegen. Der sollte nach den obigen Beobachtungen trivial sein.
Schließlich muß der Algorithmus noch als Turing-Maschine aufgeschrieben werden. Dafür gibt es ganz viele unterschiedliche Formalismen, und da wir nicht wissen, in welchem Formalismus du deine Hausübung abgeben sollst, könnten wir das nichtmal für dich machen, wenn wir wollten.
Beiträge von Plantschkuh!
-
-
In C mußt du dich selber um die Speicherverwaltung kümmern; es liegt in deiner Verantwortung, genug Speicherplatz für deine Strings zu reservieren. Informier ich über malloc und free.
-
Was ist für dich günstig? Academia (http://www.academia.at, beschissene Website) hat z.B. eine US-Tastatur von Cherry um 20 Euro. Ist zwar nicht nachgeschmissen, aber wenn sie ein paar Jahre hält, kann man sich das wohl leisten.
-
bsearch ist für sowas nicht wirklich nötig. Nimm lieber strchr. Oder sagt die Angabe explizit, daß du bsearch nehmen sollst?
Edit: Große Teile meines Posts waren Schwachsinn.
Edit 2: Hmm, doch nicht. Wenn man nicht von 'a' < ... < 'z' ausgehen darf, kann man keine effiziente Vergleichsfunktion für chars schreiben. D.h. bsearch wäre zwar log n, durch die lineare Vergleichsfunktion wird es aber zu n log n. Einfache lineare Suche mit strchar wäre nur n. Das Requirement, das Programm mit der tollen voll effizienten Funktion bsearch zu schreiben, macht es also weniger effizient als eine naive, übersichtliche Implementierung :hewa: Und dann gibt es noch Leute, die es nicht verstehen, daß ich die Sysprog-Leute hasse...Falls du doch bsearch verwenden willst/mußt, hilft es, sich die Sache so aufgeschrieben zu denken:
Code/* definiere vergleichsfunktion als den Typ: Pointer auf Funktion, die zwei Pointer auf const void nimmt und int zurückgibt */ typedef int (*vergleichsfunktion)(const void *, const void *); /* Argumente: gesuchtes Objekt, Anfang des Arrays, Anzahl der Elemente, Größe eines Elements, Vergleichsfunktion */ void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, vergleichsfunktion f);
Dann mußt du eben eine Funktion int vergleich(const void *, const void *) implementieren und beim Aufruf an bsearch übergeben. -
Zitat von Lord Binary
Aber in meinem Fall ist realloc nachweislich deutlich(!) flotter als new/delete.
Das ist auch gar nicht unerklärlich. Erstens kann realloc in konstanter Zeit laufen, wenn du nicht um eine Vergrößerung des Arrays bittest, zweitens ist stupides kopieren wohl schneller als die Verwendung von copy-Konstruktoren (falls du sowas hast).Zitat von IrrlichtAm besten sagt's der Herr Stroustrup
Eine wirkliche Erklärung kann ich da nicht herauslesen, er sagt ja nur "ich finde renew inelegant, deswegen darfst du's nicht verwenden". Und er hat schon recht, Container sind supi, aber wenn sie für alles optimal wären, bräuchten wir auch gar kein new (für Arrays zumindest nicht). -
strcmp(buffer + index, andererstring);
Edit: Hmmm, "mit einem anderen Charakter"? Erklär mal genauer, was du willst. Vielleicht suchst du strchr oder sowas.
-
Zitat von Michael
3. wie siehts mit erfahrung mit dem proxy aus (TUProxy, aber auch HU wäre interessant, falls wer über den drinnen ist)? wie sind die geschwindigkeiten/pings im vergleich zu normalem chello? funktioniert irgendwas wichtiges nicht? (habe die angebotenen services/ports überflogen - scheint ja das wichtigste dabei zu sein)
Ich hab ein bissi mit HTTP über den TU-Proxy gespielt, aber das war nur langsamer als ohne, sonst nicht viel. (Obwohl der Zugang zu den Online-Bibliotheken ein cooles Feature ist, kriegt man aber auch anders.)
Jetzt fahr ich schon sehr lange ohne jeglichen Proxy und habe jedes Monat mehrere GB Traffic (sowohl up als auch down). Mahnungen oder sonstige Probleme habe ich nie gehabt, aber das ist wohl echt bei jedem unterschiedlich
Also ich bin mit chello voll und ganz zufrieden. -
Zitat von markus
global zu definieren habe ich noch in der htl gelernt ist ein absolutes dont´t. zumindest in c wars so.
Erstens: Der Apostroph schaut nicht so aus: ` , sondern so: ' . D.h. don't. Sorry, aber irgendwie nervt mich das, daß das so viele Leute falsch machen.
No gut, zum Inhaltlichen: Ja, globale Variable sind meistens inelegant und sollten vermieden werden. Das hat damit zu tun, daß es schwieriger ist, Code nachzuvollziehen, wenn man keinen Überblick drüber hat, wo eine Variable überall geändert werden kann. Gegen globale Konstante greift dieses Argument nicht, die können ja nirgends geändert werden. Und es schadet wohl niemandem, wenn alle Programmteile wissen, daß pi gleich 3 istAlso wenn du eine Konstante wirklich (fast) überall brauchst, mach sie von überall sichtbar, d.h. global.
Du kannst natürlich eine Klasse drumherum schreiben, aber wenn die Konstante static ist, ist das eine rein kosmetische Maßnahme: meine_konstanten:: pi ist genauso "global" wie ein echt globales pi, nur mehr zum tippen. (Das soll aber nicht heißen, daß Kosmetik keine gute Sache ist. Aber man sollte sich darüber im Klaren sein, daß Klassen nicht automatisch glücklich machen.) -
-
Die Konstanten sind mit "const typ COLOR_SPECIAL_RESET = anfangswert" oder ähnlichem deklariert?
Dann ist diese Deklaration gleichzeitig eine Definition. D.h. es wird hier nicht nur dem Compiler gesagt "hey, es gibt eine Variable mit diesem Namen", sondern gleichzeitig auch dem Linker "lege bitte Speicherplatz für diese Variable an". Du definierst also sowohl in test.c als auch in colprintf.c eine solche Variable, und der Linker beschwert sich schließlich, daß er zwei Objektfiles zusammenlinken soll, die "verschiedene" Variablen mit dem selben Namen enthalten. Das geht so nicht.Jedes Objekt muß in C an genau einer Stelle definiert sein, deklarieren darfst du alles mehrmals; die Deklarationen beziehen sich dann alle auf das selbe Objekt. In deinem Programm kannst du das folgendermaßen erreichen: Ändere alle deine Deklarationen in den Header-Files auf extern-Deklarationen, d.h. schreibe das Schlüsselwort "extern" davor und tu die Initialisierung weg. Das sagt dem Linker, daß es irgendwo eine Variable mit diesem Namen geben wird, auf die sich dieser Name beziehen soll.
Dann definierst du irgendwo an einer Stelle in einem C-File die Variablen wie zuvor, ohne extern und mit Initialisierung. Das kann in einem deiner bestehenden C-Files passieren, oder aber auch in einer neuen Datei "vardefs.c" oder so. Die mußt du dann natürlich auch kompilieren und zum Rest des Programms dazulinken.Ooooder du änderst die Konstanten auf Preprocessor-Konstanten, also mit #define definierte. Hat gewisse Vor- aber auch Nachteile.
So, ich hoffe, ich habe dein Problem von der Ferne richtig diagnostiziert, und daß ich die Situation auch einigermaßen verständlich erklärt habe. Viel Erfolg! :thumb:
-
test -s wär auch eine Möglichkeit. Generell kann test ganz viele tolle Sachen.
-
Das ist zwar keine Lösung unter XP, aber wenn du von Diskette oder CD ein kleines Linux oder ähnliches bootest, solltest du mit dem Programm "dd" (das sollte überall dabeisein) ruckzuck Images von den Disketten erstellen können. Soweit ich das verstanden habe, kannst du mit denen dann unter XP was anfangen. Also wenn du keine native Windows-Lösung findest, wäre das wohl eine wenig umständliche Variante.
-
Danke für die Tips, aber es handelt sich hier um die Windows-Version von Colonization, da komm ich mit einem DOS-Emulator wohl nicht so weit
-
Du brauchst es anscheinend nicht extra zu installieren, colonize.exe ausführen sollte reichen. (Unter Wine klappt das so, es gibt nur einige Grafikfehler, die man aber verschmerzen kann.)
Danke auch von mir! :thumb: Jetzt kann ich endlich mein Studium aufgeben... :devil: -
Oder die alten Boxen mit einem anständigen Betriebssystem noch fünf Jahre weiterfahren... (Also jetzt vom Aspekt des Schulunterrichts aus gesehen. Ja, für LAN-Parties möchte man wohl aufgemotzte Kisten, aber was macht man schon im Informatikunterricht, für das man High-End-Hardware braucht?)
-
Es handelt sich bei sowas normalerweise um E-Mail-Würmer, die sich selber mit gefaketen From:-Adressen an beliebige Adressen weiterschicken, in der Hoffnung, so weitere Verbreitung zu finden. Und auf vielen Sites wird Software eingesetzt, die in solchen Fällen "hilfreich" sein will und dich benachrichtigt, daß du Würmer versendest.
Da die Adresse wie gesagt gefälscht war und der Wurm nicht von dir gekommen ist, ist die Mail bedeutungslos, du kannst sie ignorieren.Was die Würmer damit erreichen wollen? Vandalismus.
-
Naja, also wegen Problemen mit Acer... schlimmstenfalls sagen sie, da ist nix zu machen
Schau dir http://www.acerservice.at an, dort kannst du ihnen unter "Anfrage per Web" mal dein Problem schildern. Der Techniker, der dir antwortet, wird dir wohl sagen können, ob du da die Platte tauschen solltest bzw. ob sie dir das aufgrund der Gewährleistung/Garantie gratis machen würden.
Und falls sie ja sagen, würde ich den Laptop einfach selber hintragen statt ihn einzuschicken, das ist wohl einfacher. Ich habe das neulich mit einem Laptop gemacht, das hat ganz brauchbar geklappt. (Das einzig blöde war, daß wir nicht verständigt worden sind, als die Reparatur fertig war. Das hat wohl nur ein Techniker vergessen, aber eine kurze Mail hat das Problem auch geklärt.) -
Hallo! Folgende Situation: Ich arbeite für mein Praktikum an einem Java-Applet, bei dem in Zusammenarbeit mit dem User ein Bild erzeugt wird. (Es handelt sich um einen Ableitungsbaum für eine aussagenlogische Formel, aber das ist nicht wahnsinnig relevant.)
Zur Zeit male ich das Bild mit normalen AWT-Methoden wie drawString und drawLine auf einen Canvas, das funktioniert prächtig. Allerdings hat mein Canvas eine fixe Größe, das Bild hingegen kann im Laufe der Zeit beliebig groß werden (und zwar wächst es gleich in drei Richtungen). Daher paßt irgendwann nicht mehr das ganze auf den Canvas, die überhängenden Teile werden weggeschnitten. Jetzt hätte ich gerne eine ähnliche Zeichenfläche, die aber mit dem Bild mitwachsen kann, und wo der User bei Bedarf mit Hilfe von Scrollbalken links/rechts und rauf/runter scrollen kann, damit er sich das ganze Bild ansehen kann.
Fragen:
Kann Canvas sowas, und hab ich das nur übersehen?
Gibt es eine andere Klasse in AWT (oder von mir aus auch Swing), die sowas kann?
Wenn nicht, wie bastel ich mir am besten selber eine? Anhand der Beschreibung glaube ich, daß BufferedImage bei sowas helfen könnte. Sonstige Ideen?Vielen Dank schon mal im Voraus.
Edit: Ha, hab übersehen, daß es die ScrollPane gibt. Damit ist die Sache watscheineinfach, hat sich alles erledigt. Danke an alle, die geantwortet hätten
-
Erstens: Keine Panik.
Wieso hast du das Paßwort überhaupt geändert, kriegt man heutzutage zuerst ein Default-Paßwort zugewiesen? Und hast du sowohl das alte als auch das neue Paßwort ausprobiert?
Na jedenfalls: Wenn dein Account am studserver echt funktioniert, gib dir das: https://studman.ben.tuwien.ac.at/studacct/ Dort kannst du dich über den Status deines Accounts informieren und auch das andere Paßwort neu setzen.
Wenn das auch nicht geht, trappel halt wieder zum ZID und red mit denen?Und wegen Chello: Es gibt zwar irgendwo so ein Online-Registrierungsformular, glaub ich, aber bei mir war das denen wurscht, sie haben die Anmeldung dort ignoriert (soweit ich mich erinnern kann). Ich bin dann einfach in eine ihrer Filialen marschiert und hab mich gemeldet. Sie wollen vielleicht einen Studentenausweis sehn, aber das ist schon alles.
-
Zitat von Saruman
und eine 50-Seiten Arbeit mit allen Algos und so schreib, reicht das dann als Bakk-Arbeit in Computergrafik?
Die "Bakkalaureatsarbeit" scheint ein Detail des Studiums zu sein, das sehr viele Leute mißverstehen. Ein Erklärungsversuch:
Erstens ist der Name Bakkalaureatsarbeit irreführend, weil man instinktiv Parallelen zu Diplom- oder Doktorarbeiten zieht. Das ist aber nicht gerechtfertigt: Die Bakk-Arbeiten sind weniger umfangreich, müssen keine bahnbrechenden (oder sonstigen) wissenschaftlichen Neuigkeiten enthalten, müssen nicht verteidigt werden, landen nicht in der Nationalbibliothek und existieren manchmal nichtmal.
Mal ganz von vorne: Jeder muß ein "Seminar (mit Bakkalaureatsarbeit)" und ein "Projektpraktikum (mit Bakkalaureatsarbeit)" absolvieren.
Im Rahmen des Seminars muß man typischerweise ein Referat halten und eine schrifliche Ausarbeitung anfertigen. Das mußte man schon immer; nur im neuen Studienplan heißt die schriftliche Ausarbeitung nicht wie früher Seminararbeit, sondern Bakkalaureatsarbeit. Mehr als ein neu eingeführter Name ist das aber nicht. Es muß auf der Arbeit nichtmal Bakkalaureatsarbeit draufstehen oder sonstwas. Meine war 13 Seiten lang und war nicht mehr als eine Zusammenfassung von ein paar Sachen aus ein paar Papers. Ich geh auch stark davon aus, daß sie nie jemand außer meinem Betreuer und den paar Teilnehmern des Seminars zu Gesicht bekommen hat.
Beim Praktikum ist die Sache so, daß man typischerweise ein Programm schreibt. Die Dokumentation des Programms (Userdoku, Design, verwendete Algorithmen... je nach Betreuer) stellt die Bakkalaureatsarbeit dar. Das ist wiederum etwas, was man selbstverständlich machen muß, nur daß der Studienplan vorsieht, daß es statt Doku Bakkalaureatsarbeit heißt. (Und es scheint auch das zu sein, was du dir so unter dem Begriff vorstellst.) Jedenfalls sollte das auch nicht der Knochenjob sein, 50 Seiten halte ich für... ähm... sehr motiviert :thumb:
Mein Betreuer verlangt da zum Beispiel nur Enduser-Doku. Die muß zwar auch korrekt sein, aber wissenschaftliche Arbeit ist das keine.Kurzfassung: Die "Bakkalaureatsarbeit" ist nix, wovor man sich fürchten muß, sie ist nichts formales und ergibt sich automatisch aus dem Seminar bzw. Praktikum; sie ist kein eigener Schwerpunkt, sondern eher Nebenprodukt.
Und um noch ein Detail deiner Frage zu beantworten: Ja, vom Umfang und Inhalt her ist die Arbeit sicher supi. Du mußt aber einen Betreuer finden, der bereit ist, dir für Programm+Arbeit ein Praktikumszeugnis zu geben. Und den würd ich nicht erst suchen, wenn ich fertig bin...
ZitatUnd: kann ich die schon schreiben, bevor ich alle LVAs fertig hab?
Ja. Mußt du sogarDenn Seminar und Praktikum sind auch normale LVAs. [Plantschkuh! ab, Obszönitäten über Statistik und Physik murmelnd]