Zum Inhalt springen

Klotzkopp

Mitglieder
  • Gesamte Inhalte

    9912
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Alle Inhalte von Klotzkopp

  1. C++/CLI ? Wikipedia Ja, das versuche ich dir seit zwei Beiträgen zu erklären.
  2. Wenn das der Wortlaut der Aufgabenstellung ist, dann ist das in Ordnung. Dir muss nur klar sein, dass die verwendete Programmiersprache dann C++/CLI ist, nicht C++. Wenn die Aufgabe gewesen wäre, das in C++ zu machen, hättest du die falsche Programmiersprache benutzt. Die Programmierung grafischer Benutzeroberflächen in C++ ist durchaus nicht einfach. Aber zum Glück kannst du C++/CLI benutzen, da geht das wesentlich einfacher. Weil das unterschiedliche Programmiersprachen sind. Und weil der Borland Builder eine Bibliothek für grafische Benutzeroberflächen verwendet, die Visual C++ nicht kennt. Ich kann dich erst mal ins richtige Unterforum verschieben, hier bist du nämlich falsch
  3. Langsam. Die Programmiersprache, bei der die Programmierung der grafischen Oberflächen wie in C# funktioniert, ist C++/CLI. Diese Sprache hat Parallelen zu C++, ist aber grundsätzlich eine eigenständige Programmiersprache. C++/CLI ist nicht dasselbe wie C++. Wenn deine Aufgabe lautet, das in C++ zu machen, wirst du damit dieser Anforderung möglicherweise nicht gerecht. Bitte kläre das.
  4. Klotzkopp

    error 2440

    Wie ich schon sagte: Dein Programm hat keine main-Funktion.
  5. Klotzkopp

    error 2440

    Dein Programm hat keine main-Funktion.
  6. Und warum fehlt irgendwie das Wissen? Dein Auftritt hier als völlig Ahnungsloser passt so gar nicht zum Schwierigkeitsgrad der Aufgabe, schon gar nicht, wenn das Voraussetzung für eine Prüfung sein soll. Und was möchtest du jetzt von uns? Die Aufgabe erfordert Kenntnisse in dynamischen Datenstrukturen, Dateioperationen, Sortieren und dem Umgang mit Datumsangaben. Das ist nichts, was man dir hier bis Donnerstag beibringen könnte, zumal wir offenbar bei Adam und Eva anfangen müssten. Wenn du so ahnungslos bist, wie du hier vorgibst, ist diese Lösung für Teil 1 (die übrigens fehlerhaft ist) vermutlich auch nicht von dir selbst geschrieben. Wir können dir bei konkreten Einzelproblemen helfen, aber wenn du dich stur stellst und einfach sagst: "Ich kann das nicht", können wir auch nichts machen. Du erwartest hoffentlich nicht, dass hier jemand deine Hausaufgaben macht.
  7. Du hast doch von mir einen Hinweis zur weiteren Vorgehensweise bekommen. Setz das bitte mal um.
  8. Der grundsätzliche Aufbau einer for-Schleife: for(INIT; CONDITION; STEP) { BODY }[/CODE] Der Ablauf sieht so aus (das solltest du auswendig lernen): 1. INIT ausführen 2. CONDITION prüfen. Wenn falsch, dann Ende 3. BODY ausführen 4. STEP ausführen 5. Gehe zu 2
  9. Ja, das hatte ich wohl übersehen :floet:
  10. Ich weiß. Ich bin nicht sicher, ob er ihn bemerkt hat.
  11. Ich bin mir nicht sicher: Hast du den Hinweis mitbekommen, dass das mit einer unmodifizierten Playstation nicht geht?
  12. Aufgabe 2 und 3 wirst du nicht "im Vorbeigehen", also während du die Datei durchgehst, erledigen können. Du musst dir eine geeignete Datenstruktur überlegen, die du im Arbeitsspeicher vorhältst. Für Aufgabe 2 wäre das natürlich zunächst mal eine Liste der Lieferanten, die du dann alphabetisch sortierst. Damit solltest du anfangen. Und nebenbei: "Brauche dringend HILFE!!!!" ist ein ausgesprochen schlechter Threadtitel. Hilfe braucht so ziemlich jeder, der hier einen Thread aufmacht, und die GROSSSCHREIBUNG und Satzzeicheninflation hat auch keinen Mehrwert, sondern schreckt nur potenzielle Helfer ab.
  13. Klotzkopp

    error 2440

    malloc gibt's auch in C++. Es gibt nur wenige Dinge, die in C erlaubt, in C++ aber nicht erlaubt sind. Die implizite Konvertierung von void-Zeigern ist eins dieser Dinge. dizem, du hast immer noch nicht gesagt, welche Fehler gemeldet werden, wenn du den Cast in (double*) änderst.
  14. Auch fread und fwrite bewirken unter Windows die Umwandlung von von Zeilenumbrüchen, wenn die Filestreams nicht im Binärmodus geöffnet wurden. Eine automatische binäre Kopie erreichst du damit nicht.
  15. Schau dir das nochmal genau an, so ist das totaler Blödsinn. Außerdem solltest du nicht versuchen, beide Dateien in einer einzigen Schleife zu kopieren. Die Wahrscheinlichkeit, dass beide gleich groß sind, ist doch ziemlich gering. Selbst, wenn du das da oben richtig hinbekommen hättest, würde das Kopieren der Bilddatei abgebrochen, sobald die Textdatei komplett kopiert ist.
  16. Klotzkopp

    error 2440

    Ich kann dir nicht sagen, was du schreiben sollst, weil ich nicht weiß, was der Code tun soll. Der Code ist offensichtlich nicht von dir, sondern stammt aus der CSparse-Bibliothek, mit leichten Änderungen. Niemand hier weiß aber, ob die Änderungen am Code Absicht sind, und welches Ziel sie haben. Und welche das sind, sollen wir jetzt raten? Warum denn überhaupt der Cast? cs_malloc gibt void* zurück, das sollte sich ohne Cast umwandeln lassen. Oder schickst du den Code durch einen C++-Compiler? Was lösen? Was ist denn überhaupt das Problem? Geht es dir nur darum, dass der Code fehlerfrei compiliert werden kann? Ist dir klar, dass er dann ziemlich sicher trotzdem nicht das tust, was du willst? Der Compiler meldet nur Fehler, wenn er den Code nicht übersetzen kann. Er kann nicht prüfen, ob der Code das tut, was du willst. Und was du willst, hast du uns noch nicht gesagt.
  17. Klotzkopp

    error 2440

    w ist ein double*. int* passt da nicht drauf.
  18. Kommt drauf an. Ich nehme an, mit Exporter meinst du ein Plug-In für eines der Programme. Ein Konverter muss beide Dateiformate verarbeiten können und eine eigene, interne Repräsentation der Daten vorhalten, die mit beiden vereinbar ist. Ein Konverter muss natürlich nichts einlesen, und er muss auch keine eigene Datenrepräsentation vorhalten, dafür ist er aber gezwungen, mit der Plugin-Schnittstelle des Host-Programms zu arbeiten, wenn es denn eine solche gibt. Du brauchst eine Spezifikation des Zieldateiformats sowie entweder der Plugin-Schnittstelle (Exporter) oder des Quelldateiformats (Konverter). Ich glaube nicht, dass es für ein derart spezialisiertes Problem Tutorials gibt. Tutorials sind für Einsteiger, und behandeln deshalb meistens allgemeine, häufig anzutreffende Einsteigerthemen. Lies dir genau durch, wie dein Zieldateiformat aufgebaut ist, dann schau dir an, wie deine Quelldaten aussehen, und dann überleg dir, wie du das eine in das andere überführst. Der größte Teil dieser Aufgabe dürfte reine Hirnarbeit sein, die programmtechnische Umsetzung ist vermutlich das kleinere Problem. Ist das eigentlich immer noch dasselbe Problem wie hier?
  19. Was heißt denn "aktueller String"? Hast du in main denn überhaupt mehr als ein Array für die umgewandelten Strings? Wenn du deine Zeiger auf immer dasselbe Array verweisen lässt, ist doch klar, dass hinterher in allen dasselbe drinsteht.
  20. Nicht jedes Zeichen einer Fließkommazahl muss eine Ziffer sein. Der Eingabeoperator kann am besten entscheiden, ob eine Eingabe gültig ist. Insofern halte ich das Einlesen eines Strings für einen Umweg, wenn dann hinterher doch wieder ein Stringstream zum Einsatz kommt. Stringstreams haben natürlich den Vorteil, dass man sie leichter leeren kann als cin, indem man sie einfach neu anlegt. Aber es geht auch mit cin direkt: double x; while( !(cin >> x) ) { cout << "Falsche Eingabe\n"; cin.clear(); cin.ignore(cin.rdbuf()->in_avail()); } [/code] Was denn? Da steht, dass er keine Objekte benutzen darf. Ich wollte nur darauf hinweisen, dass cin und cout Objekte [i]sind[/i].
  21. Da sollte nichts abstürzen, auch wenn du statt Zahlenwerten Texte eingibst. Allenfalls musst du den Fehlerstatus des Eingabestreams prüfen, ggf. zurücksetzen und noch nicht eingelesene Zeichen verwerfen. Aber ich würde das einfach ignorieren, und davon ausgehen, dass der Benutzer das Programm richtig verwendet. Alle möglichen Fehleingaben sauber abzufangen, wäre vermutlich komplizierter als die eigentliche Aufgabe des Programms. Und was deine Anforderung angeht, keine Objekte zu benutzen: Was glaubst du, sind cin und cout?
  22. Bevor du atoi irgendwie sinnvoll nutzen kannst, musst du natürlich zuerst deine Eingabe so umstellen, dass sie auch tatsächlich einen String einliest. Wenn du nach wie vor in double einliest, bringt dir das gar nichts. Abstürzen sollte das aber trotzdem nicht. Zeig doch mal deinen Code für die Eingabe. Dann müssen wir hier nicht so viel raten.
  23. Klotzkopp

    hilfe

    Das Speichern tust du schon, und wie das Kennzeichnen geht, ist in der Aufgabenstellung eigentlich ziemlich genau beschrieben.
  24. Ich verstehe die Frage nicht. Deine Methoden sind sowieso etwas seltsam. Sie haben Parameter, als ob man die Instanzattribute der Klasse damit setzen könnte, sie lesen die Attribute ein, und sie geben auch die eingelesenen Werte zurück. Es ist aber beispielsweise nicht möglich, den Attributwert aus der Klasse auszulesen, ohne auch gleichzeitig das Einlesen anzustoßen. Normalerweise würde man diese unterschiedlichen Funktionalitäten auf mehrere Methoden aufteilen. Dass eine Klasse ihre Attribute selbst vom Benutzer einliest, halte ich für ziemlich ungewöhnlich. Damit ist diese Klasse nämlich sehr stark an diese Art der Eingabe gebunden. Normalerweise würde man die für die Instanzerstellung notwendigen Werte außerhalb einlesen und dann einen geeigneten Konstruktor aufrufen. Das tust du doch schon. Worauf ich hinauswollte, war nur folgendes: Statt public int Erscheinung(int Er) { Er=In.readInt(); Erscheinungsdatum=Er; return Erscheinungsdatum; }[/code] kannst du auch einfach das schreiben: [code] public int Erscheinung() { Erscheinungsdatum=In.readInt(); return Erscheinungsdatum; }Der Parameter der Methode ist überflüssig. Aber wie gesagt, die Doppelfunktionalität (Einlesen und Zurückgeben) ist etwas merkwürdig.
  25. Nicht im allgemeinen Fall. Falls du in deinem Array Zeiger hast, kannst du Nullzeiger verwenden, um leere Felder zu kennzeichnen. Ansonsten haben Variablen in C und C++ immer einen Wert, es sei denn, du selbst interpretierst einen bestimmten Wert als "leer". Dann darf dieser Wert aber nicht als gültiger, nicht-leerer Wert auftauchen. Wenn dein Array dynamisch angelegt ist (malloc oder new), kannst du Elemente entfernen, indem du die verbliebenen Werte in ein neues Array mit verringerter Größe umkopierst. Falls du C++ benutzt, bietet die Standardbibliothek mehrere Containerklassen, die alle die Operation des Entfernens einzelner Elemente unterstützen. Die Unterschiede zwischen den Containern liegen in den Zeitkomplexitäten der einzelnen Operationen. Wenn du beispielweise häufig einzelne Elemente irgendwo in der Mitte einfügen oder entfernen musst, würde sich std::list anbieten. Zugriff über Indexoperator geht allerdings bei std::list nicht. Wenn du C benutzt, kannst du solche Datenstrukturen natürlich auch benutzen, du müsstest sie nur selbst implementieren.

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...