Zum Inhalt springen

Klotzkopp

Mitglieder
  • Gesamte Inhalte

    9912
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Alle Inhalte von Klotzkopp

  1. Klotzkopp

    Funktion problem

    Wenn du den Parameter in move cam nennst, solltest du dort auch diesen Bezeichner benutzen, und nicht weiterhin camera. Funktionsdefinitionen in Headerdateien sind übrigens heikel. Sobald du die Datei in mehr als eine Quellcodedatei einbindest, gibt es Linkerfehler.
  2. Du kannst die Rekursion in eine eigene Klasse stecken, und dort über eine Membervariable die Rekursionstiefe nachhalten. Möglicherweise kannst du dir auch ein zustandsbehaftetes rekursives Delegate basteln. Aber am einfachsten dürfte es sein, den Zustand (hier also die Rekursionstiefe) als Parameter zu übergeben.
  3. Klotzkopp

    Funktion problem

    Wie wäre es mit einem einfachen int-Parameter für die move-Funktion, so dass du camera übergeben kannst?
  4. Nein, gibt es nicht.
  5. Ein Beispiel, wie du dir das vorstellst, war wohl zu viel verlangt. Falls du so etwas meinst: int main() { void Daten::eingeben () { printf("Bitte Ort eingeben\n"); gets(ort); printf("Bitte Name eingeben\n"); gets(name); } Daten Adresse; Adresse.eingeben(); Adresse.anzeigen(); return 0; }[/code]Das geht grundsätzlich nicht, weder in C noch in C++. Du kannst Funktionsdefinitionen nicht verschachteln. Im kommenden C++-Standard wirst du mit Lambda-Ausdrücken lokale Funktionsobjekte anlegen können, aber das würde hier viel zu weit führen.
  6. Ich weiß nicht, was du mit "so was" meinst! Deswegen habe ich gefragt, was du dir darunter vorstellst. Solange ich nicht weiß, was du mit "in die main" schreiben meinst, kann ich dir nicht sagen, ob das geht. Gib doch mal ein Beispiel.
  7. Was stellst du dir darunter vor? Wie soll das aussehen? Die Klasse ist nur eine Vorlage, die braucht für sich genommen gar keinen Speicher. Das Objekt von dieser Klasse, das du da anlegst, braucht (mindestens) 160 Bytes. Die Unterscheidung von Klasse und Objekt ist wichtig.
  8. void Daten::eingeben () Char-Arrays, (void), printf und gets sind C-Relikte, die benutzt man in C++ eigentlich nicht. Nimm std::string statt char-Arrays. (void) ist in C++ dasselbe wie (), also kannst du dir das void sparen. Statt printf/scanf nimmt man cout/cin. Gets war schon in C böse, weil man keinerlei Möglichkeit hat, einen Pufferüberlauf zu verhindern. Aufrufen kannst du deine Funktion (eigentlich ist es eine Methode) übrigens so: Daten Adresse; Adresse.eingeben();[/code]
  9. Das ist eine ziemlich dürtige Fehlerbeschreibung. Grundsätzlich kannst du mit CreateFile, siehe Abschnitt "Physical Disks and Volumes" Zugriff erhalten. Ab Vista unterliegt das allerdings gewissen Einschränkungen. Was genau hast du denn vor, und was hast du schon versucht?
  10. Welche Codierung erwartet denn der "Leser" dieser Datei?
  11. Ja, das ist richtig.
  12. <iostream> ist keine Bibliothek.
  13. Zum Beispiel, indem du von deinen Sekunden nach und nach die richtigen Jahreslängen abziehst, bis kein ganzes Jahr mehr übrig ist. Wie gesagt, der Standard legt es nicht fest. Insofern ist irgendetwas, was du im Internet darüber findest, nicht besonders aussagekräftig, weil es auf dein System unter Umständen nicht zutrifft. long int ist allerdings sehr verbreitet.
  14. Kommt drauf an, ob du localtime benutzen solltest, oder das selbst ausrechnen. Finde heraus, welcher Typ sich bei dir hinter time_t verbirgt, und benutz dafür das passende Formatfeld.
  15. Vermutlich zumindest bis 2038.
  16. Das hatte ich überlesen, ich habe meine Antwort inzwischen geändert. Siehe oben. 311 ist jedenfalls besser als 6. Muss aber nicht. Der Standard schreibt nicht vor, welcher Typ für time_t benutzt wird. Es ist nicht einmal festgelegt, wie dieser Wert codiert ist. Unter POSIX sind das die Sekunden seit dem 1.1.1970, unter Windows auch, aber das muss nicht so sein. Daher gibt es keine portable Möglichkeit, diesen Wert direkt mit printf auszugeben.
  17. Mach doch bitte die Berechnung so, wie ich sie vorgeschlagen habe. Nicht mit Modulo. Nachtrag: 6 ist definitiv falsch. Ich weiß nicht, was das Beispielprogramm da gerechnet hat, aber laut localtime entspricht diese Zeit dem 303. Tag des Jahres. Die 311 klingt da gar nicht so schlecht und ist vermutlich durch das Ignorieren der Schaltjahre entstanden.
  18. Erstens brauchst du nicht unbedingt eine Struktur, und zweitens lässt du hier den entscheidenden Teil unter den Tisch fallen: Die Berechnung. Die hat nichts damit zu tun, ob du die Ergebnisse in einer Struktur hast oder in einem Satz int-Variablen. Mach's doch erst mal ohne Schaltjahre und Schaltsekunden. Ein Jahr hat 365 * 24 * 60 * 60 = 31.536.000 Sekunden. Du teilst also deine Gesamtsekundenzahl durch 31536000, dann hast du die Anzahl der Jahre. Diesen Wert, multipliziert mit 31536000, ziehst du dann von deiner Gesamtsekundenzahl ab. Übrig bleiben die Sekunden, die kein vollständiges Jahr ergeben. Und damit machst du mit der nächstkleineren Einheit (Tag) genauso weiter.
  19. Und zum dritten Mal: Nein. In diesen Funktionen passiert nichts, das du nicht auch selbst programmieren könntest. Es mag aufwändig sein, aber du brauchst diese Funktionen nicht zwangsläufig.
  20. Wie du die Daten strukturierst, ist egal. Die Berechnung ist der entscheidende Teil, also wie du von einer Anzahl Sekunden auf ein Datum kommst. Knifflig ist dabei, dass durch Schaltjahre die Anzahl der Tage pro Jahr nicht konstant ist, und durch Schaltsekunden die Anzahl der Sekunden pro Tag. Die Frage ist allerdings, ob du das für diese Aufgabe überhaupt berücksichtigen sollst.
  21. Nein, wie ich schon sagte, du kannst das auch selbst machen. Du kannst das, was die Funktion localtime macht, auch in deinem eigenen Code umsetzen. Ich vermute übrigens, dass genau das bei dieser Aufgabe beabsichtigt ist, nicht die Verwendung von localtime.
  22. Ich verstehe das Problem nicht. Hast du dir die Dokumentation der tm-Struktur angesehen? Da stehen doch genau diese Werte drin.
  23. Nein, du kannst das auch "von Hand" ausrechnen. Die Funktion localtime kann ja auch nicht zaubern Klar kannst du. Deine time_t-Variable bleibt davon doch unberührt. Wo soll denn da der Unterschied sein? Wie sieht die gewünschte Ausgabe aus?
  24. Richtig. Zeiger sind Variablen, die auf andere Variablen verweisen können (ein Zeiger kann auch auf nichts zeigen). Wenn du adresseThomas vorher mit einem sinnvollen Wert gefüllt hast, ja. Wenn du einen Zeiger auf eine Struktur hast, greifst du nicht mit Punkt, sondern mit dem Pfeiloperator (->) auf die Elemente zu. Die Funktion localtime gibt laut Dokumentation einen Zeiger auf eine tm-Struktur zurück. Der Zeiger verweist auf eine Struktur, die in gmtime und localtime statisch angelegt ist, d.h. du brauchst dich nicht um das Speichermanagement zu kümmern (was bei Zeigern sonst häufig der Fall ist). Das bedeutet aber auch, dass die Inhalte der Struktur durch einen weiteren Aufruf von gmtime/localtime geändert werden können. Da du das aber sowieso nur einmal aufrufst, macht das nichts. Du brauchst also einen Zeiger auf eine tm-Struktur, und weist dieser den Rückgabewert von localtime zu: struct tm *mytm; mytm = localtime(zeitInSekunden);[/code] zeitInSekunden ist dabei deine Variable, die den Rückgabewert von time aufgenommen hat. Du solltest übrigens den Typ von int auf time_t ändern. Nach dem Aufruf von localtime kannst du auf die Elemente der Struktur zugreifen, z.B. [code]mytm->tm_sec Welche Typen und Bedeutung die einzelnen Elemente haben, kannst du wiederum der Dokumentation entnehmen.
  25. Weißt du denn, was Zeiger und Strukturen sind?

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