Zum Inhalt springen

Orffi

Mitglieder
  • Gesamte Inhalte

    252
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von Orffi

  1. Dazu sollte man die Tatsachen erstmal festklopfen. Es gibt in Deutschland ja nicht nur eine Uni und dann muß man noch zwischen Uni und FH unterscheiden und wenn ich mir hier Feinde machen will, dann muß man auch noch zwischen FH/Präsenzstudium und FH/Fernstudium unterscheiden. An "meiner" Uni ist es so, daß man, um einen Bachelor zu erhalten, ein ganz normales Grundstudium machen muß. Das bedeutet, daß im Grundstudium bei uns nicht zwischen Bachelor und Diplom unterschieden wird. Nach dem Grundstudium müssen Bachelor-Studenten weniger Veranstaltungen belegen (und haben nur 2 weitere Semester statt 5), als Diplom-Studenten, aber die Veranstaltungen sind dieselben. Für meine Uni gilt, die Aussage also, daß es ein schlechtes Gerücht ist. Mit diesem Wissen ist es vielleicht möglich, wieder auf eine etwas sachlicheren Ebene zurückzukehren. Bis denn dann Jan
  2. Orffi

    semantische Fehler

    Ok, ich versuche auch mal ein wenig Licht ins Dunkle zu bringen. Die Frage nach void main (void) ist meiner Meinung nach nicht so einfach zu beantworten. Denn es gibt ja genügend Compiler, die das so unterstützen. Allerdings muß man bedenken, daß man dann nicht mehr Ansi-C oder Iso-C++ programmiert, sondern nur in einer Sprache, die den beiden genannten Sprachen sehr, sehr ähnlich ist. Ich würde also void main (void) im Standard C/C++ Forum für falsch ansehen, aber außerhalb des Forum als "Feature" der Entwicklungsumgebung. Ich würde dafür plädieren, void main (void) aus der "semantischer Fehler"-Diskussion herauszuhalten, weil das eher verwirrt. Ein Beispiel für einen semantischen Fehler: Die Sonne ist grün. Dieser Satz ist, wenn man sich ihn auf der syntaktischen Ebene ansieht, ein korrekter Satz. Im Gegensatz zu: Die grün Sonne ist. Dieser Satz ist syntaktisch falsch. Aber die Sonne ist nicht grün... Semantik kann man mit Inhalt gleichsetzen (also zumindestens in diesem Zusammenhang). Also ist: "Die Sonne ist grün" ein semantischer Fehler, weil der Satz inhaltlich nicht richtig ist. (Welche Farbe die Sonne nun wirklich hat, will ich hier jetzt außen vor lassen, denn als es in Kanada einen riesigen Waldbrand gab, erschien die Sonne tatsächlich grün. Und auch die Atmosphäre verschiebt die Sonnenfarbe ins gelbliche. Im Weltraum sollte die Sonne einen Blaustich haben...) HTH Jan
  3. Naja, ein Buch, das wohl nicht fehlen darf, wäre: Cryptonomicon von Neal Stephenson Bis denn dann Jan
  4. Hallo nic_power, habe mich ein wenig zu flapsig ausgedrückt, als ich meinte: "Statt %ld kannst Du ja auch mal %e oder %f in printf nehmen." Ich meinte schon damit, daß %ld nicht richtig ist. Ich hatte diesen Fehler nur total übersehen, deswegen hatte ich den Hinweis in einem Edit untergebracht. Mein Tip hätte wohl deutlicher ausfallen müssen. Bis denn dann Jan
  5. Das sind ein paar Fehler drin: 1. long double f[n]; Das n sollte ein const-Ausdruck sein, was es nicht ist. Mag sein, daß Dein Compiler dies akzeptiert, ist aber so kein Standard von C/C++... Selbst wenn f[n] mit n= 5 standardkonform sein sollte: f[5] hat die Felder 0,1,2,3,4. Du schreibst aber in die Felder 0,1,2,3,4,5. 2. erg ist nur deklariert, aber nicht definiert. In diesem Fall würde long double erg = 0.0; Sinn machen. HTH Jan [edit] Statt %ld kannst Du ja auch mal %e oder %f in printf nehmen. [/edit]
  6. Hallo! Ich denke, Du verstehst die Aufgabe falsch. Das bedeutet, Du sollst eine Klasse mit class Punkt { private: int x, y; //... }; schreiben und dann, nicht in der Punktklasse, einen Vector<Punkt> anlegen, der mehrere Punkte speichern kann. Aber Deine Punktklasse soll nicht mehrere Koordinaten speichern können. HTH Jan
  7. Es ist so, wie ich sagte. Dein Objekt class_w ist lokal und wird auf dem Stack angelegt. Nach Beendigung wird das Objekt abgeräumt. Anders sieht es aus, wenn Du Dein Objekt den Zusatz static mitgibst. Dann funktioniert es so, wie Du es Dir vorstellst. Bist Du sicher, daß die Werte noch vorhanden sind? HTH Jan
  8. Vielleicht verstehe ich dich nicht richtig, aber onClick ist ja eine Funktion, die irgendwie so ähnlich aussehen muß: void onClick (...) { meineKlasse test; //... } Wenn Du also auf deinen Button klickst, dann wird diese Funktion ausgefüht und Deine protected-Werte gefüllt. Wenn Du jetzt nochmal auf den Button klickst, dann hast Du folgendes NICHT bedacht: test ist lokal und wird vom Stack wieder abgeräumt, sobald die Funktion beendet wurde. Das bedeutet, Du kannst nicht wirklich etwas speichern und jedes mal wird test angelegt und am Ende wieder abgeräumt. Warum machst Du in Deiner Formularklasse, zu der auch onClick gehört nicht eine private oder sonstwas Variable meineKlasse *test. Dann kannst Du in onClick mit test = new meineKlasse(); eine Instanz Deiner Klasse erzeugen. Wenn Du jetzt ölfter auf den Button klickst erzeugst Du auch mehrere Instanzen, nur das Du nur noch auf die letzte Instanz zugreifen kannst. (Achtung Speicherloch, also aufpassen!!!) HTH Jan
  9. Hallo Cyberfree, wie ich schon öfter in diesem Forum schrieb, halte ich sehr viel von Bruce Eckel. Ich finde sein "Thinking in C++" sehr gut. Es ist auch möglich sich das Buch in der elektronischen Form kostenfrei (sehen wir von den Onlinekosten, etc. ab) herunter zu laden. Der Link: http://64.78.49.204/ Ein Buch, das in der Sammlung eines jeden C++-Programmieres nicht fehlen darf ist natürlich der "Stroustrup". Ich habe die 3. Auflage "special edition", was der 4. Auflage auf deutsch entspricht. Der Titel: "The C++ Programming Language". Dieses Buch ist wohl eher Geschmackssache und einige Leser mögen es überhaupt nicht, aber ich finde es sehr gut und geht über das Einsteigerniveau heraus, so daß man es immer verwenden kann und nicht aus dem Buch "herauswächst". Du solltest auf jeden Fall mindestens die dritte Ausgabe nehmen, denn die 2. Ausgabe wurde vor der Verabschiedung des C++-Standards geschrieben. Über die Deutsche Übersetzung kann ich nivht so viel sagen, aber ich hörte, daß teilweise sehr "interessant" (um es vorsichtig auszudrücken) übersetzt wurde. Zum Lernen von C++ würde ich persönlich die Finger von Büchern lassen, die das Erlernen von C++ mit irgendeiner Entwicklungsumgebung verquicken. HTH Jan
  10. Ich traue mich mal, zu antworten. Ich schreibe absichtlich "traue", weil ich mit dem, was ich schreibe sicherlich ein wenig Verantwortung für Deine Zukunft übernehme. Ich habe mir mal beide Homepages der beiden Unis angesehen und versucht, die Studiengänge zu vergleichen. Das war nicht ganz einfach, denn ich habe zumindestens bei der Technischen FH Berlin nicht gefunden, was sich jetzt unter den einzelnen Überschriften verbirgt. Nicht daß ich keine grobe Vorstellung davon hätte, was in den Vorlesungen behandelt werden könnte, aber ein gewisser Spielraum ist vorhanden. Zum Beispiel weiß ich nicht, was die TFH Berlin alles unter diskreter Mathematik zusammenfaßt. Meiner Meinung zählt nämlich die Graphentheorie, die eine eigene Vorlesung erhält auch zur diskreten Mathematik. Hier ist die FH Brandenburg auf jeden Fall besser. Hier kannst Du Dir ein sehr genaues Bild machen, was in einer Vorlesung behandelt werden wird. Bevor Du weiterliest: Das folgende ist ganz alleine meine Meinung und beruht auf meiner Sicht der Informatik. Will heißen: sie ist sicherlich nicht die einzig Wahre. Also siehe es eher als Gedankenanstoß und nicht als den einzigen Weg den Du beschreiten mußt. Kurz gesagt: ich würde die FH Brandenburg von der Thematik her vorziehen. (Ich kann nur nach der Thematik gehen, weil ich beide FHs nicht kenne.) Ich will zuerst den Grund anführen, der auf wackeligen Füßen steht, weil ich zu wenig Informationen habe und deshalb nur mutmaßen kann: Mir fehlt bei der TFH ein paar Gebiete der Mathematik. Ich bin zwar sehr erstaunt, daß Analysis bei keiner der FHs Platz eingeräumt wird (oder ich habe es schlichtweg übersehen), aber Lineare Algebra würde ich persönlich nicht unter diskreter Mathematik fassen, obwohl man ähnliche Konzepte antrifft. Was man aber auf keinen Fall zur diskreten Mathematik zählt ist Stochastik. Kombinatorik zählt zwar zur diskreten Mathematik, aber das reicht meiner Meinung nach, nicht aus. Was ich sagen will: So wie es sich für mich darstellt, ist die die mathematische Ausbildung an der FTH zu schmalspurig, wobei ich zugeben muß, daß die TFH Graphentheorie betreibt und die FH dieses Thema komplett ignoriert. (Um die Unsicherheiten, was das Stoffliche angeht, auszuräumen kann man ja mal bei der TFH nachfragen.) Weiterhin finde ich, daß die informatische Ausbildung an der FH vorteile hat. Dort werden zumindestens Logik, Formale Sprachen und Automaten angesprochen. Meiner Meinung nach sollte jedes Informatikstudium dies im "Angebot" haben, weil ich finde, daß dies sehr elementare Fächer der Informatik sind. Interessant wäre es gewesen, zu wissen, was sich die TFH unter Systemanalyse vorstellt. Etwas vergeleichbares findet man, wenn ich es nicht übersehen habe, an der FH nicht. Verteilte Systeme, die in der heutigen Zeit eine sehr wichtige Rolle spielen, findet man leider auch nicht. Des Weiteren finde, daß beide Studiengänge Vorlesung auf dem Plan haben, auf die man gut verzichten könnte, aber das hält sich die Waage. Bei beiden Studiengängen hat man im Grundstudium 82 SWS und beide schließen mit Diplom Informatiker (FH) ab. Meine Präferenz für die FH Brandenburg ist durch meinen persönlichen Geschmack zu erklären. Mir gefällt es besser, daß versucht wird eine generellere Basis für das folgende Studium zu geben. Ich finde, es wird Dir dort eine breitere Basis geboten. Aber vielleicht schaust Du Dir unter diesem Gesichtspunkt die beiden Unis noch einmal an und prüfst selber. Wenn Du später Dipl. Inf. bist, dann solltest Du, meiner Meinung nach, schon von ein paar Grundlegenden Prinzipien gehört haben, damit Du, wenn es von Dir erwartet wird, Dich schnell in das Thema einarbeiten kannst. Ich habe mich mit Absicht sehr vorsichtigt ausgedrückt, denn es ist Deine Entscheidung, die ich Dir nicht abnehmen will und auch nicht kann. Aber ein paar Denkanstöße waren ja vielleicht für Dich dabei. HTH Jan
  11. Orffi

    STL c++

    Hier ein Link, der zumindestens die Idee und das Grundkonzept kurz erklärt: http://www.sgi.com/tech/stl/stl_introduction.html Standard Template Library heißt das Teil übrigens, weil es massiv die Möglichkeiten, die C++ mit seinem Konzept der Templates bietet, nutzt. Will heißen, daß man sehr generell programmieren kann, da die Klasse, die Templates nutzt, nicht auf eine einzige Datenstruktur festgelegt ist, sondern mit verschiedenen umgehen kann. So können die Datenstrukturen, wie zum Beispiel der Vektor nicht nur int-Werte speichern, sondern auch Datentypen vom Typ Orffi, die bestimmt kein Entwickler der STL vorher gesehen hat. Ansonsten gibt es ganze Bücher, die sich nur mit der STL beschäftigen. Es ist also ein bißchen zu viel, um es hier in einem Post zu erklären. HTH Jan
  12. Ich möchte ein paar Haare spalten: max ist in diesem Fall keine Funktion sondern ein Makro! Das bedeutet, daß der Text max(a, durch ((a)>(?(a):() ersetzt wird. Was das für Auswirkungen hat, wenn man mal nicht aufpaßt, demonstriert im kleinen Rahmen der unten angegebene Quelltext. #include <iostream> #define max(a, ((a)>(?(a):() int main (void) { int i = 5; std::cout << "Test:" << max (++i, 4) << std::endl; } [/code] Die Ausgabe ist nicht, wie man erwarten könnte 6 sondern 7, da ++i zwei Mal ausgeführt wird: ((++i)>(4)?(++i):() Das ist nicht unbedingt das, was man gerne hätte... Bjarne Stroustrup hat sich die Templates ausgedacht, damit man keine Makros mehr verwenden muß. (Daß große Projekte, wie Mozilla zum Beispiel, auf Templates verzichten und auf Makros setzen, weil die einzelnen Compiler auf den verschiedenen Systemen noch nicht alle Features von C++ implementieren, steht auf einem anderen Blatt Papier.) HTH Jan
  13. Orffi

    methodendefinition

    Wenn ich die Funktion in der Klassendefinition definiere, wie ich oben schrieb, darf der Compiler (der Compiler interessiert mich wie immer nicht, sondern nur der Standard) das. Bis denn dann Jan
  14. Orffi

    methodendefinition

    Hallo! Funktionen, die in der Klassendefinition definiert werden, werden, wenn möglich, als inline übersetzt. Stichwort inline: An den Stellen, wo die Funktion aufgerufen wird, wird kein Funktionsaufruf gemacht, sondern der Compiler schreibt den Code der Funktion gleich dorthin. Man spart sich die Kosten für den Funktionsaufruf. Interessant für Erbsenzähler :-) und Funktionen die in einer Schleife immer wieder aufgerufen werden. Stichwort "wenn möglich": Die Funktion darf nicht zu komplex sein. Wenn die Funktion zum Beispiel eine for-Schleife enthält, wird sie nicht als inline expandiert. HTH Jan
  15. Ich will dann auch noch etwas zum Thema Studium beitragen: Den Vorschlag von Nalimov, sich einfach mal in ein paar Vorlesungen zu setzen, kann ich nur unterstreichen. So bekommt man am besten einen Eindruck, was Vorlesung bedeutet. Ich denke jeder empfindet die Vorlesung anders und es unterscheidet sich von Vorlesung zu Vorlesung. Als nächstes sollte man sich den Rahmenstudienplan für das entsprechende Studium von der Uni, an der man studieren möchte, organisieren. Dort wird detailliert beschrieben, welche Leistungen zu erbringen sind und welche Vorlesungen man zu belegen hat. (Ok, nicht jede Vorlesung, die man belegen muß, besucht man auch, aber sich darüber schon vor dem Studium Gedanken zu machen ist eher eine schlechte Idee.) Hier kann man schon mal sehen, ob die Themen, die einen interessieren, auch abgedeckt werden oder das Studium nur aus Themenkomplexen besteht, die man als uninteressant und langweilig empfindet. Wichtig ist, daß man auch wirklich den Rahmenplan seiner Uni nimmt, an der man auch studieren möchte, denn die Unis setzen unterschiedlich Schwerpunkte. Ich muß hier mal wieder die Mathematik verteidigen: An der Uni wird die Mathematik nicht deswegen betrieben, weil man die Studentenzahlen senken will, sondern, weil Mathematik unheimlich wichtig für die Informatik ist. Informatik ist ohne Mathematik nicht zu betreiben. Darüber sollte man sich klar werden. Später im Studium hat man deswegen keine Mathematikvorlesungen nicht mehr, weil davon ausgegangen wird, daß man die Mathematik, die für die Vorlesung benötigt, beherrscht oder im Selbststudium vorhandene Lücken schließt. Es ist aber nicht so, daß Mathematik auf einmal keine Rolle im Informatikstudium spielt. Naja, ganz ohne Computer wird wohl kein Informatik-Studium auskommen, aber im Grundstudium müssen ja erstmal Grundlagen geschaffen werden und für Mathematik und theoretische Informatik braucht man eben keinen Computer. Aber in Seminaren und Projekten wird schon praktisch gearbeitet und das erworbene Wissen kann dort angewendet werden. Ohne jemals an einer FH studiert zu haben, möchte ich behaupten, daß dort praktischer gearbeitet wird. Ob einen nun der praktischere Ansatz besser gefällt ist Geschmackssache. HTH Jan
  16. Orffi

    emulieren

    Hallo b-r-e, Du bist auf einen Artikel "hereingefallen", der nicht ganz ernst gemeint war. Natürlich brauchst Du ein funktionierendes System, auf dem Du dann etwas anderes emulieren kannst. Du kannst zum Beispiel einen C64 auf Deinem aktuellen PC emulieren und die Spiele von "damals" spielen. Der Code des C64-Spiels wird vom Emulator in x86er Code übersetzt, der dann ausgeführt werden kann. Es aber nicht so, daß Du durch Emulation schneller wirst. Natürlich wirst Du langsamer, weil Du keinen Code hast, der nativ ausgeführt wird, sondern einen Schicht dazwischen hast, die den Code der emulierten Maschine in den Code Deiner tatsächlichen Maschine transformiert. Wenn man den Artikel zu Ende denken würde, würde es bedeuten, daß ich mit meinem Athlon 900 einen Pentium 4 5 GHz emulieren kann von dem aus ich eine noch schnelleren Prozessor emulieren kann. (Juhu, ich brauche nie wieder einen schnelleren Rechner, ich emuliere mir einfach einen schnelleren...) Das kann natürlich nicht funktionieren. HTH Jan
  17. Orffi

    Zeichenanzahl

    Kleine Korrektur: Der Logarithmus zur Basis 10 heißt dekadischer Logarithmus. Der Logarithmus zur Basis e heißt natürlicher Logaritmus. Es muß also der dekadische Logarithmus (log_{10}) verwendet werden. HTH Jan
  18. Ich verstehe nicht so ganz, warum Du die Menge der Leute, die hier antworten "dürfen" so begrenzt. Ich habe mich einfach mal über Deine Bitte hinweggesetzt und antworte trotzdem, obwohl auch ich kein Quelltext liefern werde. Das hat verschiedene Gründe: 1. Niemand kann Dir einen Quelltext geben, der unbegrenzt Adressen speichern kann. Selbst wenn wir unbegrenzt ein wenig aufweichen, kommen wir doch irgendwann an einen Punkt, an dem wir ein Datenbanksystem benötigen. Für ein DBS habe ich kein Quelltext herumliegen, tut mir leid. 2. Du solltest schon ein wenig genauer sagen, was für eine dynamische Struktur Du haben möchtest. Es gibt ja nicht nur eine. Da gäbe zum Beispiel Bäume, Queues, Stacks, Listen (einfach oder doppelt verkettet), Hash-Tabellen und alle anderen, die ich jetzt nicht aufzählen will. Natürlich machen hier einige Strukturen keinen Sinn, aber Du solltest trotzdem sagen, welche Struktur Du nutzen möchtest. (Und natürlich wo Dein Problem liegt, denn hier wird die Meinung verteten, daß man jemanden am besten hilft, wenn man ihm keine fertige Lösung gibt. Dieser Meinung schließe ich mich an.) Außerdem ist eine Hash-Tabelle, die sich entsprechend der Daten in ihr selbstständig vergrößert/verkleinert auch keine Sache, die man eben gepostet bekommt und sofort versteht. Verstehen tut man es, wenn man es selber probiert hat. In diesem Sinne hat Guybrush Threepwood nur versucht zu helfen. (Ich übrigens auch.) Auch wenn Du diese Art von Hilfe nicht als solche erkennst. Bis denn dann Jan
  19. Wo liegt das Problem? (Abgesehen davon, daß das Programm überhaupt nicht dem C++ Standard entspricht...) Ist doch klar, daß dreimal 40 ausgegeben wird, denn in der Zeile darüber weist Du z den Wert 40 zu, der y zugewiesen wird und dann x zugewiesen wird. HTH Jan
  20. Ich habe schnell mal hrs.de angeworfen. Ich weiß ja nicht, was ihr ausgeben wollt. (Ich setze Doham mal unter Druck, in dem ich gleich in der Mehrzahl schreibe.) Hier ist der Link: http://www.hrs.de/cgi-bin/hrsparser?HP=19&NP=20〈=de&ulog=www3KLp28927&ipl=0a6y0741&ipr=6105133q&USEDB=prod&ort=Hamburg&orti=Hamburg&l_id=33&rn=13629&b_tag=20&b_monat=3&b_jahr=2003&e_tag=21&e_monat=3&e_jahr=2003&K1=0&UGL=50 Vielleicht hilft es ja für den ersten Überblick. Bis denn dann Jan
  21. Hi! Ich kann Dir leider nicht mit einem PAP dienen, da ich die Syntax von einem Programmablaufplan nicht kenne. (PAP ist für mich eine Abkürzung für: Prozeßalgebra mit Parallelismus) Trotzdem habe ich im Bronstein nachgeschlagen und folgendes Gefunden: Wenn Deine EAN fogendermaßen aussieht: abcdefghikmnp, dann ist p Deine Prüfziffer. Um die Prüfziffer p berechnen zu können mußt Du zuerst x= a+3b+c+3d+e+3f+g+3h+i+3k+m+3n berechnen. Deine Prüfziffer p erhälst Du nun, in dem x+p die nächste Zahl ergibt, die Durch 10 teilbar ist. Berechnen ließe sich das so: p = (10 - (x mod 10)%10) Ein Beispiel: Angenommen Du hast den Wein Kröver Nackta r s c h (das Teil heißt tatsächlich so, natürlich ohne Leerzeichen, aber die mußte ich setzen). Dann hat dieser Wein folgende EAN: 4 3 1 1 6 0 5 4 4 8 4 6 0 4+9+1+3+6+3*0+5+12+4+24+4+18=90 90 mod 10 = 0 10 - 0 = 10 10 mod 10 = 0 Diese 0 ist die 0 ganz rechts im Beispiel. Ich weiß, daß ich eigentlich nicht auf Deine Frage geantwortet habe, aber ich wüßte jetzt auch nicht, wo da ein großer Ablauf sein sollte. Zuerst berechnet man x, danach p. Vielleicht habe ich Dich auch falsch verstanden. HTH Jan
  22. Ich habe hier einen kleinen Text geschrieben. Allerdings bin ich der Meinung, daß Guybrush Threepwood, entscheiden sollte, ob er diesen Text so möchte, da 1. ich seinen Text ein wenig verändert habe und 2. es "sein" Thema ist und ich es ihm nicht "wegnehmen" möchte. Mir ist durchaus bewußt, daß es leichter ist, einen Text zu kritisieren als ihn selber zu verfassen, deswegen sollte mein Initialkommentar kein Angriff auf Guybrush Threepwood sein, sondern nur ein Hinweis. Lange Vorrede, hier der Text: In C und C++ hat die Bezeichnung String zwei unterschiedliche Bedeutungen. Deswegen unterscheiden wir zwischen C-String und std::string. In C werden Strings als array von Character angelegt: char szString[10]; /*ein C-String*/ reserviert Speicherplatz für einen String mit 9 (Index 0-8) Zeichen, da jeder C-String mit einem '\0' abgeschlossen werden muß. Dies geschieht bei den meisten Funktionen automatisch. Nur wenn man die Zeichen selber festlegt, sollte man daran denken, da sonst Speciherüberläufe auftreten könen. C-Strings können nicht über den == Operator miteinander verglichen werden, da so nur die Startadressen der Arrays verglichen werden und nicht der Inhalt der Arrays. Um Vergleiche über den Inhalt durchzuführen, gibt es verschiedene Funktionen, z.B. strcmp() aus <string.h>, die in einer C Referenz oder hier auf dem Board nachgelesen werden können. In C++ kann man selbstverständlich auch die C-Strings verwenden, aber wie aus dem obigen Abschnitt erkennbar ist, ist eine solche Lösung nicht die eleganteste. Deshalb gibt es in den Bibliotheken, die zum ISO-Standard von C++ gehören, die Klasse string aus <string>. Durch Verwendung dieser Klasse vereinfacht sich die Handhabung von Strings. Strings vom Typ std::string kann man z.B. sehr einfach durch den bekannten == Operator vergleichen. Des Weiteren muß bei der Erzeugung eines std::strings nicht die maximale Größe bekannt sein. Die Klasse "kümmert sich darum, daß immer genügend Speicher alloziiert ist. Um von einem std::string einen C-String zu erhalten nutzt man die Funktion c_str(), die in der Klasse string enthalten ist. Um alle Möglichkeiten der Klasse string kennen zu lernen, empfehlen wir z.B das Kapitel 20 aus "The C++ Programming Language" von Bjarne Stroustrup, die dritte Ausgabe. Bis denn dann Jan
  23. @Klotzkopf Ich muß gestehen, daß ich dies überlesen habe. Allerdings wäre ich trotzdem dafür, daß unter dem Thema "Strings" beide Sprachen abgehandelt werden und in diesem Zusammenhang auf die Unterschiede hingewiesen wird. @Guybrush Threepwood CString mag in der Welt von Microsoft eine Bezeichnung für einen String sein, aber in der restlichen Welt wird mit CString eben ein String bezeichnet, der ein char* ist. Es geht hier darum, den Unterschied zwischen char* und der Klasse string aus <string> hervor zu heben. Übrigens ist es völlig egal, wie ein Operator sein Verhalten erreicht, das entscheidene ist, daß sein Verhalten korrekt ist. Und der Operator == liefert zurück, ob die Strings gleich sind oder nicht. Mehr ist nicht entscheidend. Bis denn dann Jan
  24. Ich hätte da auch einen Änderungsvorschlag: Hier wird nur C behandelt, aber die FAQ ist ja für C und C++. In C++ gibt es für Strings aus <string> sehr wohl den Operator == mit dem man zwei Strings vergleichen kann. Ich bin dafür, daß die Unterschiede besser herausgearbeitet werden. Zum Beispiel könnte man von CStrings sprechen, wenn die Rede von char* ist. Bis denn dann Jan
  25. Orffi

    Fragen zu C/C++

    Mir ist neu, daß Schleifen keine Kontrollstrukturen sein sollen. Zitat aus dem Buch Kerninghan & Ritchie "Programmieren in C" 2. Ausgabe, welches ich eben hervorgekramt habe: "C besitzt die fundamentalen Kontrolstrukturen, die für wohlstrukturierte Programme notwendig sind: Zusammenfassung von Anweisungen, Entscheidungen (if-else), Auswahl von einem aus einer Menge von möglichen Fällen (switch), Schleifen mit Test des Abbruchkriteriums am Anfang (while, for) oder am Ende (do) sowie vorzeitiges Velassen einer Schleife (break)" (Seite 1) Mit Ausnahme des breaks ist es genau das, was ich auch gesagt habe. Bis denn dann Jan

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...