-
Gesamte Inhalte
9912 -
Benutzer seit
-
Letzter Besuch
-
Tagessiege
3
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von Klotzkopp
-
Du brauchst zwei getrennte Speicherreservierungen. Erst eine für Neu, dann eine für Neu->zeichen. Und sizeof((char *)zeichenkette) ist immer noch falsch. sizeof liefert dir die Größe eines Typs. Der Typ char* ist auf einer 32-Bit-Plattform 4 Bytes groß. Und genau das kommt heraus, wenn du sizeof mit einem char-Zeiger verwendest. Für das zweite malloc darfst du also nicht sizeof benutzen. Du musst die Stringlänge bestimmten. Und vergiss nicht die Nullterminierung. Deine suchen-Funktion verändert *liste, und macht damit deine Liste beim Suchen kaputt. Du solltest in der Funktion eine Kopie von *liste machen, und damit suchen. Der zweite strcmp-Aufruf ist unnötig. Stell das return i; einfach hinter die Suchschleife. Und beachte, dass der Pfeiloperator stärker bindet als der Dereferenzierungsoperator. *liste->zeichen ist also gleichbedeutend mit *(liste->zeichen) Du willst aber (*liste)->zeichen
-
Naja, wenn du in der Excel-Doku nachsiehst, sollte dich das nicht verwundern. Range Object
-
So ist es. Du hast also tagelang umsonst mit multiplen Satzzeichen und Großbuchstaben rumdiskutiert, und auf deiner vermeintlichen Fehlerursache herumgeritten. Bitte daraus lernen: Beschreib die eigentlichen Fehlersymptome, nicht das, was du für die Ursache hältst. Und jetzt bitte die Exception debuggen, wie Schiller256 gesagt hat.
-
In main hast du schon eine Variable, und in sortiert_einfuegen und ausgabe hast du einen Parameter dafür (wobei der in sortiert_einfuegen die globale Variable verdeckt und der in ausgabe nicht benutzt wird). Wenn du sie global lässt, sind die Parameter überflüssig, und damit entsprechen deine Funktionen nicht mehr der Aufgabenstellung. Richtig. Nein. Erstens musst du das mit zwei getrennten malloc-Aufrufen machen. Zweitens ist sizeof(zeichenkette) falsch. Informiere dich darüber, was sizeof tut. Das glaube ich nicht. Der große Vorteil einer verketteten Liste ist ja, dass man auch mittendrin schnell einfügen kann.
-
Ich sehe keinen Grund dafür, die Kommandozeilenparameter überhaupt zu kopieren. Aber dieser Code (einschließlich des delete[] am Ende) ließe sich auch durch einen schicken Einzeiler ersetzen: vector<string> argv(c_argv, c_argv + argc);
-
Was passiert denn, wenn du da einfach superBildschirm hinschreibst?
-
Das sieht nach einem wilden Mischmasch von C und C++ aus. Du machst dir mit den vielen Zeigern unnötig das Leben schwer. Benutz std::vector statt Arrays. Benutz std::string statt char*. eof eignet sich nicht als Schleifenbedingung, weil es erst dann true ergibt, wenn bereits ein Lesevorgang fehlgeschlagen ist. Das Stringarray für die Kommandozeilenparameter wird am Anfang angelegt und gefüllt, und am Ende gelöscht, aber dazwischen nicht benutzt. Dein Problem rührt übrigens daher, dass du immer wieder dieselben char-Zeiger t[0] und t[1] in deinem element-Array speicherst.
-
Laut Aufgabenstellung soll das ein char-Zeiger sein, kein Array. Ganz schnell weg mit der globalen Variablen :eek Den Rückgabewert von malloc soll man nicht casten. In neuesElement fehlt die Speicherreservierung für den Text (siehe oben: Array -> Zeiger) Die Funktion heißt zwar sortiert_einfuegen, aber irgendwie fügt sie immer am Ende ein. Ist sicher nicht Sinn der Sache. Sieht gut aus. Du musst die Adresse eines stringList-Zeigers reingeben, da die Einfügefunktion den Zeiger gegebenenfalls ändern muss.
-
Das ist falsch, dein DEA akzeptiert jede Eingabe aus Nullen und Einsen. Es sollte dir schon grundsätzlich komisch vorkommen, dass dein DEA weniger Zustände hat als der NEA. Das kann nämlich nicht sein. Es gibt eine allgemeingültige Vorgehensweise für so eine Umwandlung, ist die dir bekannt?
-
Deine Funktionsköpfe stimmen nicht mit denen aus der Aufgabenstellung überein. Und Funktionsrümpfe müssen in geschweiften Klammern stehen. Das solltest du eigentlich wissen. Sinn und Zweck dieser Aufgabe ist sicher nicht, dass du irgendwelche Quellcodes aus dem Internet umbaust. Es bringt auch nichts, denn bei deinem Kenntnisstand geht das schief, wie du gemerkt hast. Wenn du nur ziellos herumbastelst, bis der Compiler sich nicht mehr beklagt, lernst du nichts. Willst du mit jeder weiteren Aufgabe hier ankommen, oder willst du lernen, wie man so etwas selbst löst?
-
Deine Bild-Links funktionieren nicht. Das Board hat übrigens eine eigene Upload-Funktion.
-
Eine Funktionsdeklaration besteht aus dem Rückgabetyp, dem Funktionsnamen und der Parameterliste in runden Klammern.
-
Nur als Anmerkungen: Das sind Source-Dateien. Ressourcendateien sind etwas anderes. Sicher. Füge a.cpp eine Deklaration der Funktion in b.cpp hinzu. Headerdateien hat man allerdings aus dem Grund, genau das nicht machen zu müssen, denn spätestens wenn du solche Deklarationen in mehreren Dateien pflegen musst, wird's unübersichtlich. Darum wären Headerdateien hier die richtige Lösung.
-
Nein. Ich habe jetzt im Detail nicht geprüft, ob deine Arrays groß genug sind, aber ich meinte nicht, dass du sie kleiner machen sollst. Wie ich bereits sagte: char-Array mit Nullterminierung -> strcpy Alles andere -> memcpy oder eine Schleife
-
Du hast ein grundsätzliches Verständnisproblem bei der Verwendung von Arrays. Wenn du ein Array als char klartext[100] deklarierst, was ist dann klartext[0]? Beantworte das für dich selbst, bevor du weiterliest. Antwort: klartext[0] bezeichnet das erste Element des Array klartext. Was ist klartext[99]? Antwort: klartext[99] bezeichnet das 100. (und damit letzte) Element des Arrays klartext. Was ist klartext[100]? Antwort: klartext[100] wäre das 101. Element des Arrays klartext. Da dieses aber nur 100 Elemente hat, ist der Ausdruck ungültig. Du tust in deinem Code allerdings mehrfach so, als würde so ein Ausdruck plötzlich das ganze Array bezeichnen. Mit klartext[100] = irgendwas machst du keine Zuweisung an das ganze Array, genausowenig wie mit klartext[0] oder klartext[99]. Damit greifst du nur auf ein ungültiges Element zu. Man kann Arrays nichts zuweisen. Du musst die Elemente einzeln kopieren. Bei nullterminierten Strings kannst du strcpy benutzen.
-
Falls das dein Name ist, bist du dir hoffentlich über die Folgen im Klaren.
-
Ja. Die O-Notation gibt eine asymptotische obere Schranke an, die mathematische Definition kannst du bei Wikipedia nachlesen. Ganz grob gesagt bedeutet das nur, dass die Laufzeit von Quicksort im durchschnittlichen Fall "nur" um einen endlichen Faktor größer ist als n * log(n). Das ist auch der Grund, warum der Logarithmus hier keine Basis hat, denn die würde sich nur als konstanter Faktor auswirken.
-
Prozente zusammenziehen, von der letzten Prüfung
Klotzkopp antwortete auf timmiboyer's Thema in IHK-Prüfung allgemein
Da die eigentliche Frage ja nun seit einem Monat geklärt ist, mache ich hier zu, damit das nicht noch weiter abdriftet. -
Die path-Klasse hat eine Methode parent_path.
-
Nein. So funktioniert Objektorientierung nun einmal nicht. Was du vorhast, erfordert eine Verwandschaft zwischen den Klassen. Oder du änderst die Klasse superstift, dass sie mit deiner Bildschirmklasse arbeitet. Wenn die Klasse von dir ist, legst du doch selbst fest, in welchem Package sie liegt.
-
Auch wenn diese Klasse identische Methoden hat, kannst du sie trotzdem hier nicht ersetzen. Das hat auch nichts damit zu tun, in welchem Paket die Klassen liegen. Dazu müssten Bildschirm und superBildschirm schon in einer Vererbungsbeziehung stehen.
-
Hat es. sizeof(int[10]) ist bei dir 40 (10*sizeof(int)). sizeof(double[10]) könnte 80 sein (10*sizeof(double)). sizeof(char[10]) ist 10 (10*sizeof(char), wobei sizeof(char) per Definition 1 ist). Größe des Arrays = Anzahl Elemente * Größe eines Elements <=> Größe des Arrays / Größe eines Elements = Anzahl Elemente
-
Die Lösung 2 stellt einen ganz anderen Sachverhalt dar. Da ja offenbar ein Tutor mehrere Übungsgruppen leiten kann, und auch jeder Teilnehmer an mehreren Übungsgruppen teilnehmen kann, kann ein Tutor durchaus mehr als 20 Teilnehmer haben, und jeder Teilnehmer mehrere Tutoren, eben verteilt auf mehrere Übungsgruppen. Das ist mit Lösung 2 aber nicht mehr möglich.
-
Diese beiden Ausdrücke haben unterschiedliche Bedeutungen. Der sizeof-Operator liefert dir die Größe eines Typs oder Ausdrucks in Bytes. Wenn es das ist, was du wissen willst, dann lass das stehen. Wenn du aber wissen willst, wieviele Elemente ein Array hat, musst du diesen Wert noch durch die Größe eines einzelnen Elements in Bytes teilen. Ist dir der Unterschied klar?
-
Array und Zeiger sind unterschiedliche Dinge. Bitte nicht durcheinanderwerfen. Nein, a ist der Name des Arrays. Arrays sind implizit in Zeiger auf den Elementtyp konvertierbar, der dabei entstehende Zeiger zeigt auf das erste Element.