Print Ausgabe
-
Hallo alle zusammen .
Habe im Moment bei der g) mit der Print methode so meine Probleme.
Habe irgendwie das Gefühl das ich an die Grenzen meines Wissens gekommen bin .
Wie soll ich das ausgeben ?
Zeit: Dienstag, 14.2.2017Ich habe es ein wenig probiert ,bin nicht sicher wie ich es machen soll?
Header#ifndef MYCODE_CJULIANDATE_H_ #define MYCODE_CJULIANDATE_H_ #include <string> #include<iostream> using namespace std; /** * Diese Klasse repr�sentiert ein Julianisches Datum ohne Uhrzeit. */ class CJulianDate { private: long m_days; /** * Formatiert die �bergebene Tagesnummer (1-31) wie folgt: Ist die Zahl * einstellig, wird ein Leerzeichen vorangestellt (3 --> " 3"). Stimmt * die Zahl mit dem Tag des von diesem Objekt repr�sentierten * gregorianischen Datums �berein, wird das Ergebnis mit eckigen * Klammern umgeben ("10" --> "[10]"), sonst werden am Anfang und * am Ende je ein Leerzeichen erg�nzt ("10" --> " 10 "). */ std::string formatDayNumber (short day) const; public: /** * Erzeugt ein neues Objekt mit dem angegebenen Julianischen Datum. */ CJulianDate(long date = 0); /** * Erzeugt ein neues Objekt, dessen Wert aus dem angegebene Gregorianische Datum * berechnet wird. * * - year: das Jahr * - month: der Monat (Januar = 1) * - day: der Tag (erster Tag eines Monats: 1) */ CJulianDate(int year, short month, short day); CJulianDate(const CJulianDate& oldvariable); /** * Liefert das Julianische Datum (Tage seit dem 1. Januar -4712 (4713 v. Chr)). */ long getJulianDate() const; /** * �bernimmt das angegebene Julianische Datum. */ void setJulianDate(long date); /** * Liefert den aktuallen Wert als Gregorianisches Datum. * * - year: das Jahr * - month: der Monat (Januar = 1) * - day: der Tag (erster Tag eines Monats: 1) */ void toGregorianDate(int& year, short& month, short& day) const; void prettyPrintMonth(); /** * Konvertiert und �bernimmt das angegebene Gregorianische Datum. * * - year: das Jahr * - month: der Monat (Januar = 1) * - day: der Tag (erster Tag eines Monats: 1) */ void fromGregorianDate(int year, short month, short day); /** * Liefert den Wochentag zu dem aktuellen Datum (Montag = 1). */ int dayOfWeek() const; /** * Liefert den Namen des Wochentags zu dem aktuellen Datum (Montag = 1). */ std::string dayOfWeekAsName() const; /** * Addiert die angegebene Anzahl Tage zu diesem Julianischen Datum hinzu. */ CJulianDate& operator+= (long days) { m_days += days; return *this; } /** * Vergleicht zwei Julianische Daten und liefert true, wenn das als * linker Operand angegebene Datum vor dem als rechter Operand * angegebenen liegt. */ bool operator< (const CJulianDate& rhs) const; friend ostream& operator << (ostream& lop, const CJulianDate& rhs); long operator-(const CJulianDate& other); void print(); }; #endif /* MYCODE_CJULIANDATE_H_ */
#include "CJulianDate.h" #include <cstdio> #include<iostream> using namespace std; #include "CCalendarEntry.h" //=============================================== // Erg�nzen Sie Ihren Code am Ende dieser Datei! //=============================================== CJulianDate::CJulianDate(long date) { m_days = date; } CJulianDate::CJulianDate(int year, short month, short day) { fromGregorianDate(year, month, day); } long CJulianDate::getJulianDate() const { return m_days; } void CJulianDate::setJulianDate(long date) { m_days = date; } void CJulianDate::toGregorianDate(int& year, short & month, short & day) const { long i, j, k, l, n; l = m_days + 68569; n = 4 * l / 146097; l = l - (146097 * n + 3) / 4; i = 4000 * (l + 1) / 1461001; l = l - 1461 * i / 4 + 31; j = 80 * l / 2447; k = l - 2447 * j / 80; l = j / 11; j = j + 2 - 12 * l; i = 100 * (n - 49) + i + l; year = i; month = j; day = k; } void CJulianDate::fromGregorianDate(int year, short month, short day) { m_days = day - 32075 + 1461 * (year + 4800 + (month - 14) / 12) / 4 + 367 * (month - 2 - (month - 14) / 12 * 12) / 12 - 3 * ((year + 4900 + (month - 14) / 12) / 100) / 4; } int CJulianDate::dayOfWeek() const { return (m_days % 7) + 1; } std::string CJulianDate::dayOfWeekAsName() const { switch (dayOfWeek()) { case 1: return "Montag"; case 2: return "Dienstag"; case 3: return "Mittwoch"; case 4: return "Donnerstag"; case 5: return "Freitag"; case 6: return "Samstag"; case 7: return "Sonntag"; default: return "(Fehler)"; } } std::string CJulianDate::formatDayNumber(short day) const { char buffer[5]; int year; short month; short refDay; toGregorianDate(year, month, refDay); sprintf(buffer, day == refDay ? "[%2d]" : " %2d ", day); return std::string(buffer); } bool CJulianDate::operator <(const CJulianDate& rhs) const { return m_days < rhs.m_days; } //===================================================== // Erg�nzen Sie Ihren Code unterhalb dieses Kommentars //===================================================== ostream& operator << (ostream& lop, const CJulianDate& rhs){ short day, month; int year; rhs.toGregorianDate(year, month, day); lop<< rhs.dayOfWeekAsName() << ", " << day << "." << month << "." << year << std::endl; return lop; } long CJulianDate::operator-(const CJulianDate& other){ return this->m_days -other.m_days; } void CJulianDate::prettyPrintMonth(){ CJulianDate current = CJulianDate(*this); int year; short month; short day; short printMonth = month; current.toGregorianDate( year, month, day); current.fromGregorianDate(year, month, 1); current.dayOfWeekAsName(); current += -(current.dayOfWeek() - 1); current.toGregorianDate(year, month, day); while( month <= printMonth ){ if(month <printMonth){ cout << " " << " " << " " << " " << endl; } else { current.formatDayNumber(day); } if(current.dayOfWeekAsName() == "Sonntag" ){ cout << endl; } current.operator +=(1);} } CJulianDate::CJulianDate(const CJulianDate& oldvariable){ m_days = oldvariable.m_days; } void CJulianDate::print(){ cout<< CJulianDate semesterBegin(2016,10,1) << " ," << CJulianDate semesterBegin(2017,14,2) <<CJulianDate semesterEnd(2017,3,31) << endl; cout << "Dauer::" << "182 Tage" << endl; cout << "Zeit:" << m_days << " , " <<....... ? cout << "Ort:" << m_location <<endl; cout<< "Beschreibung:" << " " << "Git-Klausur" << endl; prettyPrintMonth(); }
#ifndef MYCODE_CCALENDARENTRY_H_ #define MYCODE_CCALENDARENTRY_H_ #include <string> #include "CJulianDate.h" class CCalendarEntry { private: CJulianDate m_date; std::string m_location; std::string m_description; public: /** * Setzt die Werte der Attribute f�r den Termin. * * Da der gregorianische Kalender erst am 15.10.1582 in Kraft trat, erfolgt * eine Plausibilit�tspr�fung (Zusicherung). Liegt das �bergebene Datum vor * dem 15.10.1582 werden die Daten nicht �bernommen (die Attribute bleiben * unver�ndert) und es wird "false" zur�ckgegeben. * * - date: das Datum * - location: der Ort * - description: die Beschreibung * * R�ckgabewert: true, wenn die Daten �bernommen wurden. */ bool set(const CJulianDate& date, const std::string& location, const std::string& description); /** * Liefert das Datum, zu dem der Termin stattfindet. */ const CJulianDate& getDate() const; /** * Liefert den Ort, an dem der Termin stattfindet. */ const std::string& getLocation() const; /** * Liefert die Beschreibung des Termins. */ const std::string& getDescription() const; /** * Gibt den Termin wie folgt auf der Konsole aus: * * Zeit: <Attribut m_date im gregorianischen Format> * Ort: <Attribut m_location> * Beschreibung: <Attribut m_description> */ void print() const; }; #endif /* MYCODE_CCALENDARENTRY_H_ */
#include <iostream> // Header f�r die Standard-IO-Objekte (z.B. cout, cin) #include <stdlib.h> #include "CJulianDate.h" // F�gen Sie hier weitere ben�tigte Header-Dateien der // Standard-Bibliothek ein z.B. // #include <string> using namespace std; // Erspart den scope vor Objekte der // C++-Standard-Bibliothek zu schreiben // z.B. statt "std::cout" kann man "cout" schreiben // Inkludieren Sie hier die Header-Files Ihrer Klassen, z.B. // #include "CFraction.h" // Hauptprogramm // Dient als Testrahmen, von hier aus werden die Klassen aufgerufen int main (void) { CJulianDate semesterBegin(2016,10,1); CJulianDate semesterEnd(2017,3,31); }
[code="cpp"]
Fehlermeldungen:
Description Resource Path Location Type
die Regel für Ziel „CJulianDate/CCalenderEntry.o“ scheiterte subdir.mk /CJulianDate/Debug/CJulianDate line 24 C/C++ Problem
fatal error: CCalendarEntry.h: Datei oder Verzeichnis nicht gefunden CCalenderEntry.cpp /CJulianDate/CJulianDate line 16 C/C++ Problem
Function 'semesterBegin' could not be resolved CJulianDate.cpp /CJulianDate/CJulianDate line 158 Semantic Error
Function 'semesterBegin' could not be resolved CJulianDate.cpp /CJulianDate/CJulianDate line 158 Semantic Error
Function 'semesterEnd' could not be resolved CJulianDate.cpp /CJulianDate/CJulianDate line 158 Semantic Error
Invalid overload of 'endl' CJulianDate.cpp /CJulianDate/CJulianDate line 158 Semantic Error
make: *** [CJulianDate/CCalenderEntry.o] Fehler 1 CJulianDate C/C++ Problem
Member declaration not found CCalenderEntry.cpp /CJulianDate/CJulianDate line 21 Semantic Errorhttps://www.pic-upload.de/view-33685174/prog1.png.html
https://www.pic-upload.de/view-33685175/prog2.png.html
-
Was soll das tun?
cout<< CJulianDate semesterBegin(2016,10,1) <<
-
Aus meiner Sicht das ausgeben
Semesterbeginn: Samstag, 1.10.2016,
Oder wie sonst?
-
Warum sollte es das tun? Erkläre den Code.
-
Zuersteinmal solltest du den Fehler
fatal error: CCalendarEntry.h: Datei oder Verzeichnis nicht gefunden CCalenderEntry.cpp /CJulianDate/CJulianDate line 16 C/C++ Problem
beheben.
Entweder die Datei gibt es nicht oder aber du hast dich verschrieben.
-
Sorry hatte vergessen die Datei zu posten
Was soll das tun?
Ich hatte gedacht das es genau so wie in der AUfgabenstellung gestellt das ausgibt .Aber anscheinend wohl nicht
/* * CCalendarEntry.cpp * * Created on: 04.02.2017 * Author: mnl */ #include "CCalendarEntry.h" #include <string> #include<iostream> using namespace std; const std::string& CCalenderEntry::getLocation(){ return m_location; }
-
Also mit anderen Worten: du hast den Code von irgendwo kopiert und versuchst jetzt die Ausgabe reinzufummeln.
-
Ich übe an dieser Aufgabe nur .
Ich muss die Aufgabe nicht abgeben .
-
jackson33 schrieb:
Ich übe an dieser Aufgabe nur .
Ich muss die Aufgabe nicht abgeben .Ja, dann
manni66 schrieb:
Warum sollte es das tun? Erkläre den Code.
-
In der main wird ja auch durch den gleichen Befehl der Semesterbeginn ausgegeben .
Daher habe ich auch in der operator Ausgabe gemacht
-
jackson33 schrieb:
In der main wird ja auch durch den gleichen Befehl der Semesterbeginn ausgegeben .
Nein, da wird nichts ausgegeben. Und schon gar nicht genauso.
-
Und wie soll ich das denn dann bitte machen ?
Hast du Tipps ?Ich habe es ja selbst nicht hinbekommen
,daher habe ich ja auch die Frage gestellt
-
Dir fehlen die Grundlagen - du fängst also am Besten noch mal vorne in deinem Buch an.
-
manni66s Tipp ist sicher gut.
Um dein Problem zu erkennen, könntest du dir auch einfach mal diverse Beispiele heraussuchen, wie cout denn so funktioniert bzw. insbesondere wie die Syntax ist.
Also z.B.
cout << xxx << '#\n'; cout << "Hallo"; cout << sin(x) << cos(x) << tan(x); cout << x << y << z << a << b << c;
Und vergleiche das mit deinem
cout<< CJulianDate semesterBegin(2016,10,1) << ...
Vielleicht liest du einmal nach, wie Operator-Überladung funktioniert. Und ob man einfach beliebigen Code zwischen die
<< ... <<
schreiben kann.Deswegen mach das, was manni66 gesagt hat: Erkläre, was deine cout-Zeile tun soll und warum. Erkläre nur diese Zeile, sag nicht "anderswo siehts ähnlich aus".
-
Ich weiss es dass ich am ende ein semikolon reinbauen muss beim cout .
Ich wusste nicht wie ich die Ausgabe darstellen muss ,aber trotzdem danke .
-
naja man sollte vielleicht erwähnen, dass "cout" schon richtig kompliziert ist und dass selbst jahrelange, erfahrene Programmierer immense Probleme mit dieser Ausgabe haben. Und dann gibt es ja auch noch "cin"
-
Hat jemand noch brauchbare Tipps für mich ?
Die mich weiter bringen ?
-
jackson33 schrieb:
Hat jemand noch brauchbare Tipps für mich ?
Die mich weiter bringen ?Erster Ratschlag: Programmieren ist nicht Code aus dem Internet zusammen zu kopieren. Wenn du selber Code schreibst, musst du ihn auch verstehen. Code ist kein Haufen von wahllos zusammengeschmissenen Buchstaben und Zeichen, Code ist Logik pur. Du musst genau wissen, warum du wo und welches Zeichen setzt.
Zweiter Ratschlag: Dein eigentliches Problem ist, dass du Ratschläge wie diese ignorierst. Ob aus Faulheit, Dummheit, oder Selbstüberschätzung ist egal. Jedenfalls wirst du nie etwas erreichen, wenn du dies nicht änderst. Dass du dazu derzeit nicht bereit bist, das merkt ein Helfer sehr schnell. Und hört dann auf zu helfen, da es sinnlos ist. Und nun mag dir keiner mehr helfen.
-
Ja aber wie soll ich lernen wenn ich was nicht verstehe ?
Da wird man ja in diesem Forum direkt fertig gemacht
-
jackson33 schrieb:
Ja aber wie soll ich lernen wenn ich was nicht verstehe ?
manni66 schrieb:
Dir fehlen die Grundlagen - du fängst also am Besten noch mal vorne in deinem Buch an.
jackson33 schrieb:
Da wird man ja in diesem Forum direkt fertig gemacht
Ja? Wo?