<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Probleme Stream?]]></title><description><![CDATA[<p>Hallo Gemeinde,</p>
<p>ich bin in sachen C++ absoluter Neuling. Ich fummel immer noch an meine,m ersten program.</p>
<p>Ich will die Differenz der Tage zwischen zwei Kalendertagen bstimmen. Das Program läuft auch zunächst, nur wenn eines der beiden Daten im Jahr 200 liegt läuft es in irgendeine Endlosschleife.</p>
<p>Hier der Code des kleinen Programs:</p>
<pre><code class="language-cpp">// in diesem Programm möchte ich die Ein - und Ausgabe eines Datums testen. Datum.cpp
//Datumseingabe als char-Variable und Einlesen der einzelnen Daten in einen Integerwert.

#include &lt;sstream&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;
using namespace std;

//Einführung der Klasse Datum
class Datum{

public:

	int Tag;
	int Monat;
	int Jahr;
	char Datumstring[15];
	};

//Funktion Datumswandel

Datum Datumswandel(char dstr[15])
{
  stringstream str(dstr);
  Datum d;
  char c;
  str&gt;&gt;d.Tag&gt;&gt;c&gt;&gt;d.Monat&gt;&gt;c&gt;&gt;d.Jahr&gt;&gt;c;
  strcpy(d.Datumstring,dstr);
  return d;
} 

//Funktion zur Bestimmung Schaltjahr oder nicht
bool Schaltjahr(int datum)
{
  // Die Regel lautet: Alles, was durch 4 teilbar ist, ist ein Schaltjahr.
  // Es sei denn, das Jahr ist durch 100 teilbar, dann ist es keins.
  // Aber wenn es durch 400 teilbar ist, ist es doch wieder eins.

  if ((datum % 400) == 0)
    return true;
  else if ((datum % 100) == 0)
    return false;
  else if ((datum % 4) == 0)
    return true;

  return false;
}

//Berechnung der Tage zwischen dem ersten und zweiten Jahr
int Jahrdifftag(int Jahr1, int Jahr2)
{
int i;
int Tage = 0;	//tagesanzahl zwischen den Jahren

for (i =(Jahr2 -1); i &gt; Jahr1 ; i = i - 1)
	{
	 	 if (Schaltjahr(i) == true)	
	 		Tage  = Tage + 366;		//Schaltjahr?
   else 	Tage = Tage + 365;
	}
	return Tage;

}

//Berechnung der Tage im Kalenderjahr
int KalenderJahrTag(Datum datstr)
{
int Tage = 0;
int Monat[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

while (Schaltjahr(datstr.Jahr) == true ) // Korrektur Schaltjahr
	{
		Monat[2] = 29;
	}

	for (int i=1; i &lt; datstr.Monat; i++) //Berechnung der vollen Monate
	{
		Tage = Tage + Monat[i];
	}

	Tage = Tage + datstr.Tag; //Addition der Monatstage

return Tage;
}

//Berechnung der Tage im Geburtsjahr

int GeburtJahrTag(Datum datstr)
{
int Tage = 0;
int Monat[14] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,0};

while (Schaltjahr(datstr.Jahr) == true) //Korrektur Schaltjahr
	{
	Monat[2] = 29;
	}

for (int i =12; i &gt; datstr.Monat; i = i -1) //Berechnung der vollen Monate
	{
	Tage = Tage + Monat[i];
	}

Tage = Tage + (Monat[datstr.Monat] - datstr.Tag);

return Tage;
}

int main(){

Datum geburtstag;	//Klasse Geburtstag
Datum kalendertag;	//Klasse für das Datum
char datum1[15];		//Geburtstag als string
char datum2[15];		//Datum als String
int Tage1 = 0;			//Tage zwischen den Jahren
int Tage2 = 0;			// Tage im Geburtsjahr
int Tage3 = 0;			//Tage im kalenderjahr
int Tage = 0;				//Die wirklich abgelaufenen Tage

cout&lt;&lt;&quot;\nDies ist ein Programm zur Abfrage des Geburtstages und eines weiteren Datums!\n&quot;;

cout&lt;&lt;&quot;\nGeben Sie einen Geburtstag ein [tt.mm.jjjj]: &quot;;
cin&gt;&gt; datum1;

cout&lt;&lt;&quot;\nGeben Sie ein Datum ein [tt.mm.jjjj]: &quot;;
cin&gt;&gt; datum2;

cout&lt;&lt; &quot;\nDer Geburtstag (String) ist der: &quot;&lt;&lt;datum1&lt;&lt;&quot;\n&quot;; //reine Kontrollausgabe

geburtstag = Datumswandel(datum1);

cout&lt;&lt; &quot;\nDer Geburtstag klasse ist der: &quot;&lt;&lt;geburtstag.Datumstring &lt;&lt;&quot;\n&quot;; //reine Kontrollausgabe

kalendertag = Datumswandel(datum2);

cout&lt;&lt; &quot;\nDer Kalendertag klasse ist der: &quot;&lt;&lt;kalendertag.Datumstring &lt;&lt;&quot;\n&quot;;  //reine Kontrollausgabe

Tage1 = Jahrdifftag(geburtstag.Jahr, kalendertag.Jahr); //Tage zwischen den Jahren

Tage2 = GeburtJahrTag(geburtstag);									//Tage im Geburtsjahr

Tage3 = KalenderJahrTag(kalendertag);										//Tage im Kalenderjahr

Tage = Tage1 + Tage2 + Tage3;														//Summe der Tage

cout&lt;&lt; &quot;\n Die Klasse geburtstag lautet: &quot; &lt;&lt;geburtstag.Datumstring &lt;&lt;&quot;\n&quot;;

cout&lt;&lt; &quot;\n Die Klasse kalendertag lautet: &quot; &lt;&lt;kalendertag.Datumstring &lt;&lt;&quot;\n&quot;;

cout&lt;&lt; &quot;\n Die Anzahl der Tage zwischen den Jahren: &quot; &lt;&lt;Tage1 &lt;&lt;&quot;\n&quot;;

cout&lt;&lt; &quot;\n Die Anzahl der Tage im Geburtsjahr: &quot; &lt;&lt;Tage2 &lt;&lt;&quot;\n&quot;;

cout&lt;&lt; &quot;\n Die Anzahl der Tage im Kalenderjahr: &quot; &lt;&lt;Tage3 &lt;&lt;&quot;\n&quot;;

cout&lt;&lt; &quot;\n Zwischen dem Geburtstag und dem Kalendertag sind: &quot; &lt;&lt;Tage &lt;&lt;&quot; Tage vergangen!\n \n&quot;;

return 0;
}
</code></pre>
<p>Das Progrm läuft bei Eingabe eines Datum mit dem Jahr 2000 bis zur Zeile 141. Dann funzt nichts mehr.</p>
<p>Hilfe!!!</p>
<p>Dank an Alle.</p>
<p>Gruß Georg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/136298/probleme-stream</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 10:20:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/136298.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 08 Feb 2006 21:20:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme Stream? on Wed, 08 Feb 2006 21:20:35 GMT]]></title><description><![CDATA[<p>Hallo Gemeinde,</p>
<p>ich bin in sachen C++ absoluter Neuling. Ich fummel immer noch an meine,m ersten program.</p>
<p>Ich will die Differenz der Tage zwischen zwei Kalendertagen bstimmen. Das Program läuft auch zunächst, nur wenn eines der beiden Daten im Jahr 200 liegt läuft es in irgendeine Endlosschleife.</p>
<p>Hier der Code des kleinen Programs:</p>
<pre><code class="language-cpp">// in diesem Programm möchte ich die Ein - und Ausgabe eines Datums testen. Datum.cpp
//Datumseingabe als char-Variable und Einlesen der einzelnen Daten in einen Integerwert.

#include &lt;sstream&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;
using namespace std;

//Einführung der Klasse Datum
class Datum{

public:

	int Tag;
	int Monat;
	int Jahr;
	char Datumstring[15];
	};

//Funktion Datumswandel

Datum Datumswandel(char dstr[15])
{
  stringstream str(dstr);
  Datum d;
  char c;
  str&gt;&gt;d.Tag&gt;&gt;c&gt;&gt;d.Monat&gt;&gt;c&gt;&gt;d.Jahr&gt;&gt;c;
  strcpy(d.Datumstring,dstr);
  return d;
} 

//Funktion zur Bestimmung Schaltjahr oder nicht
bool Schaltjahr(int datum)
{
  // Die Regel lautet: Alles, was durch 4 teilbar ist, ist ein Schaltjahr.
  // Es sei denn, das Jahr ist durch 100 teilbar, dann ist es keins.
  // Aber wenn es durch 400 teilbar ist, ist es doch wieder eins.

  if ((datum % 400) == 0)
    return true;
  else if ((datum % 100) == 0)
    return false;
  else if ((datum % 4) == 0)
    return true;

  return false;
}

//Berechnung der Tage zwischen dem ersten und zweiten Jahr
int Jahrdifftag(int Jahr1, int Jahr2)
{
int i;
int Tage = 0;	//tagesanzahl zwischen den Jahren

for (i =(Jahr2 -1); i &gt; Jahr1 ; i = i - 1)
	{
	 	 if (Schaltjahr(i) == true)	
	 		Tage  = Tage + 366;		//Schaltjahr?
   else 	Tage = Tage + 365;
	}
	return Tage;

}

//Berechnung der Tage im Kalenderjahr
int KalenderJahrTag(Datum datstr)
{
int Tage = 0;
int Monat[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

while (Schaltjahr(datstr.Jahr) == true ) // Korrektur Schaltjahr
	{
		Monat[2] = 29;
	}

	for (int i=1; i &lt; datstr.Monat; i++) //Berechnung der vollen Monate
	{
		Tage = Tage + Monat[i];
	}

	Tage = Tage + datstr.Tag; //Addition der Monatstage

return Tage;
}

//Berechnung der Tage im Geburtsjahr

int GeburtJahrTag(Datum datstr)
{
int Tage = 0;
int Monat[14] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,0};

while (Schaltjahr(datstr.Jahr) == true) //Korrektur Schaltjahr
	{
	Monat[2] = 29;
	}

for (int i =12; i &gt; datstr.Monat; i = i -1) //Berechnung der vollen Monate
	{
	Tage = Tage + Monat[i];
	}

Tage = Tage + (Monat[datstr.Monat] - datstr.Tag);

return Tage;
}

int main(){

Datum geburtstag;	//Klasse Geburtstag
Datum kalendertag;	//Klasse für das Datum
char datum1[15];		//Geburtstag als string
char datum2[15];		//Datum als String
int Tage1 = 0;			//Tage zwischen den Jahren
int Tage2 = 0;			// Tage im Geburtsjahr
int Tage3 = 0;			//Tage im kalenderjahr
int Tage = 0;				//Die wirklich abgelaufenen Tage

cout&lt;&lt;&quot;\nDies ist ein Programm zur Abfrage des Geburtstages und eines weiteren Datums!\n&quot;;

cout&lt;&lt;&quot;\nGeben Sie einen Geburtstag ein [tt.mm.jjjj]: &quot;;
cin&gt;&gt; datum1;

cout&lt;&lt;&quot;\nGeben Sie ein Datum ein [tt.mm.jjjj]: &quot;;
cin&gt;&gt; datum2;

cout&lt;&lt; &quot;\nDer Geburtstag (String) ist der: &quot;&lt;&lt;datum1&lt;&lt;&quot;\n&quot;; //reine Kontrollausgabe

geburtstag = Datumswandel(datum1);

cout&lt;&lt; &quot;\nDer Geburtstag klasse ist der: &quot;&lt;&lt;geburtstag.Datumstring &lt;&lt;&quot;\n&quot;; //reine Kontrollausgabe

kalendertag = Datumswandel(datum2);

cout&lt;&lt; &quot;\nDer Kalendertag klasse ist der: &quot;&lt;&lt;kalendertag.Datumstring &lt;&lt;&quot;\n&quot;;  //reine Kontrollausgabe

Tage1 = Jahrdifftag(geburtstag.Jahr, kalendertag.Jahr); //Tage zwischen den Jahren

Tage2 = GeburtJahrTag(geburtstag);									//Tage im Geburtsjahr

Tage3 = KalenderJahrTag(kalendertag);										//Tage im Kalenderjahr

Tage = Tage1 + Tage2 + Tage3;														//Summe der Tage

cout&lt;&lt; &quot;\n Die Klasse geburtstag lautet: &quot; &lt;&lt;geburtstag.Datumstring &lt;&lt;&quot;\n&quot;;

cout&lt;&lt; &quot;\n Die Klasse kalendertag lautet: &quot; &lt;&lt;kalendertag.Datumstring &lt;&lt;&quot;\n&quot;;

cout&lt;&lt; &quot;\n Die Anzahl der Tage zwischen den Jahren: &quot; &lt;&lt;Tage1 &lt;&lt;&quot;\n&quot;;

cout&lt;&lt; &quot;\n Die Anzahl der Tage im Geburtsjahr: &quot; &lt;&lt;Tage2 &lt;&lt;&quot;\n&quot;;

cout&lt;&lt; &quot;\n Die Anzahl der Tage im Kalenderjahr: &quot; &lt;&lt;Tage3 &lt;&lt;&quot;\n&quot;;

cout&lt;&lt; &quot;\n Zwischen dem Geburtstag und dem Kalendertag sind: &quot; &lt;&lt;Tage &lt;&lt;&quot; Tage vergangen!\n \n&quot;;

return 0;
}
</code></pre>
<p>Das Progrm läuft bei Eingabe eines Datum mit dem Jahr 2000 bis zur Zeile 141. Dann funzt nichts mehr.</p>
<p>Hilfe!!!</p>
<p>Dank an Alle.</p>
<p>Gruß Georg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/989742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/989742</guid><dc:creator><![CDATA[georg kappenberg]]></dc:creator><pubDate>Wed, 08 Feb 2006 21:20:35 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme Stream? on Wed, 08 Feb 2006 21:50:05 GMT]]></title><description><![CDATA[<p>in den funktionen KalenderJahrTag() und GeburtJahrTag() hast du</p>
<pre><code class="language-cpp">while (Schaltjahr(datstr.Jahr) == true ) // Korrektur Schaltjahr
</code></pre>
<p>stehen. das muß natürlich if statt while heißen. weil das jahr 2000 ein schaltjahr ist, geht dein programm in eine endlosschleife.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/989746</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/989746</guid><dc:creator><![CDATA[Konfusius]]></dc:creator><pubDate>Wed, 08 Feb 2006 21:50:05 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme Stream? on Wed, 08 Feb 2006 22:20:10 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Das war es. Ich habe mich beim Testen irgendwie verrand. Danke für die Hilfe.</p>
<p>Ich hatte erst vermutet es liegt am Stream beim auslesen.</p>
<p>Gruß Georg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/989753</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/989753</guid><dc:creator><![CDATA[georg kappenberg]]></dc:creator><pubDate>Wed, 08 Feb 2006 22:20:10 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme Stream? on Thu, 09 Feb 2006 00:03:12 GMT]]></title><description><![CDATA[<p>hatte ein wenig zeit und hab versucht das ganze ein bisschen mehr nach c++ aussehen zu lassen... der code oben ist eher c (außer ein paar dinge wie streams und das schlüsselwort class, welches man aber ohne probleme mit typedef struct auswechseln könnte, also hier)</p>
<p>also code ist ungefähr genauso wie der ausgangscode, hab mir da auch nicht zu viel überlegt. Aja.. weiß nicht ob das eine sehr tolle lösung ist, kann natürlich sein, dass ich sachen komisch mache die andre nicht so machen würden, aber die werden das ja hoffentlich eh anmerken...</p>
<pre><code class="language-cpp">// date.h
#ifndef _DATE_
#define _DATE_

#include &lt;string&gt;
#include &lt;cstdlib&gt;

namespace util
{

  template&lt;class T&gt; const T&amp; min(const T&amp; a, const T&amp; b)
  {
    return (a&gt;b) ? a  : b;
  }

  class date
  {
    friend std::ostream&amp; operator&lt;&lt; (std::ostream&amp; os, const date&amp; obj);
    friend std::istream&amp; operator&gt;&gt; (std::istream&amp; is, date&amp; obj);

  public:
    date(void);
    date(const unsigned int day, const unsigned int month, const unsigned year);
    date(const std::string&amp; txt);

    inline bool is_leap_year(void) const
    { return date::leap_year(m_year);}

    unsigned int days_till (const date&amp; obj) const;

    inline ~date(void){}

  private:
    bool check_date(void);

    unsigned int m_day;
    unsigned int m_month;
    unsigned int m_year;

    bool m_val;

    static bool leap_year(const unsigned int year);
  };

  extern std::ostream&amp; operator&lt;&lt; (std::ostream&amp; os, const date&amp; obj);
  extern std::istream&amp; operator&gt;&gt; (std::istream&amp; is, date&amp; obj);

};  // end namespace util

#endif
</code></pre>
<pre><code class="language-cpp">// date.cc
#include &quot;date.h&quot;
#include &lt;sstream&gt;

namespace util
{

date::date(void)  : m_day(0), m_month(0), m_year(0), m_val(false)
{}

date::date(const unsigned int day, const unsigned int month,
  const unsigned year)
  : m_year(year), m_month(month), m_day(day), m_val(check_date())
{}

date::date(const std::string&amp; txt)  : m_val(false)
{
  std::istringstream is(txt);
  char c=0;
  is&gt;&gt;m_day&gt;&gt;c&gt;&gt;m_month&gt;&gt;c&gt;&gt;m_year;
  m_val=check_date();
}

bool date::check_date(void)
{
  if(m_month&gt;12 || m_month==0)
  {
    m_month=0;
    m_day=0;
    m_year=0;
    return false;
  }
  else
  {
    unsigned char days_of_month[12]={31, 28, 31, 30, 31,
      30, 31, 31, 30, 31, 30, 31};

    if(is_leap_year())
      days_of_month[1]=29;

    if(m_day==0 || m_day&gt;days_of_month[m_month+1])
    {
      m_day=0;
      m_month=0;
      m_year=0;
      return false;
    }
    else
      return true;
  }
}

unsigned int date::days_till (const date&amp; obj) const
{
  if(!obj.m_val || !m_val)
    return 0;
  else if((obj.m_year&lt; m_year)||
    (obj.m_year==m_year &amp;&amp; obj.m_month&lt;m_month)||
    (obj.m_year==m_year &amp;&amp; obj.m_month==m_month &amp;&amp; obj.m_day&lt;m_day))
  {
    return obj.days_till(*this);
  }
  else
  {
    unsigned char days_of_month[12]={31, 28, 31, 30, 31,
        30, 31, 31, 30, 31, 30, 31};
    const unsigned int years=obj.m_year-m_year;
    unsigned int days=0;

    for(unsigned int i=0; i&lt;years; ++i)
    {
      days+=365;
      if(leap_year(m_year+i))
        ++days;
    }

    if(obj.is_leap_year())
      days_of_month[1]=29;

    for(unsigned int i=1; i&lt;obj.m_month; ++i)
      days+=days_of_month[i-1];

    days+=obj.m_day;

    if(is_leap_year())
      days_of_month[1]=29;
    else
      days_of_month[1]=28;

    days-=m_day;
    for(unsigned int i=1; i&lt;m_month; ++i)
      days-=days_of_month[i-1];

    return days;
  }
}

bool date::leap_year(const unsigned int year)
{
  if(year%400==0)
    return true;
  else if(year%100==0)
    return false;
  else if(year%4==0)
    return true;
  else
    return false;
}

std::ostream&amp; operator&lt;&lt; (std::ostream&amp; os, const date&amp; obj)
{
  if(obj.m_val)
    os&lt;&lt;obj.m_day&lt;&lt;&quot;.&quot;&lt;&lt;obj.m_month&lt;&lt;&quot;.&quot;&lt;&lt;obj.m_year;
  else
    os&lt;&lt;&quot; datum ungültig...&quot;;
  return os;
}

std::istream&amp; operator&gt;&gt; (std::istream&amp; is, date&amp; obj)
{
  char c;
  is&gt;&gt;obj.m_day&gt;&gt;c&gt;&gt;obj.m_month&gt;&gt;c&gt;&gt;obj.m_year;
  obj.m_val=obj.check_date();
  return is;
}

};  // end namespace util
</code></pre>
<pre><code class="language-cpp">// main.cc
#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &quot;date.h&quot;

using namespace std;

int main(int argc, char *argv[])
{
  util::date a(1, 2, 2007);
  util::date b(1, 3, 2010);
  util::date c;
  cout&lt;&lt;a&lt;&lt;endl&lt;&lt;b&lt;&lt;endl&lt;&lt;endl&lt;&lt;a.days_till(b)&lt;&lt;endl;
  cin&gt;&gt;c;
  cout&lt;&lt;endl&lt;&lt;c.days_till(a)&lt;&lt;endl;
  system(&quot;PAUSE&quot;);
  return EXIT_SUCCESS;
}
</code></pre>
<p>na ich hoffe du kannst was damit anfangen... naja sonst machts ja auch nix.<br />
mfg Manuel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/989774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/989774</guid><dc:creator><![CDATA[Manuelh87]]></dc:creator><pubDate>Thu, 09 Feb 2006 00:03:12 GMT</pubDate></item></channel></rss>