<?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[Geburtstagsparadoxon Problem]]></title><description><![CDATA[<p>Hallo,<br />
hab ein Problem und hoffe jemand kann mir weiterhelfen.<br />
Ich soll ein Programm schreiben mit dem das Geburtstagsparadoxon untersucht wird.<br />
Nun will ich vergleichen ob es 2 gleiche Geburtstage gibt. Es soll true zurückgegeben werden falls ja. Diese Methode habe ich geschrieben. MS Visual C++ gibt keine Fehlermeldung aus. Der Code wird normal geschluckt jedoch passiert nix. Sieht vielleicht jemand auf anhieb woran es liegen könnte?<br />
Methode:</p>
<pre><code class="language-cpp">bool group::birthdayOnTheSameDay()
{
	for(int i = 0; i &lt;= size; i++)
	{ 
		for(int j = i+1; j &lt;= size; j++)
		{
			if(birthdays[i].getDayInYear() == birthdays[j].getDayInYear())
			{
				return true;
				cout &lt;&lt; &quot;\nMehrere Personen haben am gleichen Tag Geburtstag&quot; &lt;&lt; endl;
				break;
			}
		}
	}
	return false;
}
</code></pre>
<p>Mein Main:</p>
<pre><code class="language-cpp">int main()
{
	cout &lt;&lt; &quot; 1 Gruppe mit 200 Geburtstagen: \n&quot;;
	group group1(200);
	group1.sort();
	group1.print();
	group1.birthdayOnTheSameDay();
</code></pre>
<p>Objekt erstellen Funktioniert, sortieren Funktioniert und die ausgabe Funktioniert. Die oben geschriebene Methode funktioniert nicht.</p>
<p>Hier noch das Klassendiagramm:<br />
<a href="http://imageshack.us/photo/my-images/859/umluo.jpg/" rel="nofollow">http://imageshack.us/photo/my-images/859/umluo.jpg/</a></p>
<p>Braucht ihr noch mehr Input?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/298588/geburtstagsparadoxon-problem</link><generator>RSS for Node</generator><lastBuildDate>Thu, 13 Aug 2026 18:54:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/298588.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 23 Jan 2012 19:16:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Geburtstagsparadoxon Problem on Mon, 23 Jan 2012 19:16:01 GMT]]></title><description><![CDATA[<p>Hallo,<br />
hab ein Problem und hoffe jemand kann mir weiterhelfen.<br />
Ich soll ein Programm schreiben mit dem das Geburtstagsparadoxon untersucht wird.<br />
Nun will ich vergleichen ob es 2 gleiche Geburtstage gibt. Es soll true zurückgegeben werden falls ja. Diese Methode habe ich geschrieben. MS Visual C++ gibt keine Fehlermeldung aus. Der Code wird normal geschluckt jedoch passiert nix. Sieht vielleicht jemand auf anhieb woran es liegen könnte?<br />
Methode:</p>
<pre><code class="language-cpp">bool group::birthdayOnTheSameDay()
{
	for(int i = 0; i &lt;= size; i++)
	{ 
		for(int j = i+1; j &lt;= size; j++)
		{
			if(birthdays[i].getDayInYear() == birthdays[j].getDayInYear())
			{
				return true;
				cout &lt;&lt; &quot;\nMehrere Personen haben am gleichen Tag Geburtstag&quot; &lt;&lt; endl;
				break;
			}
		}
	}
	return false;
}
</code></pre>
<p>Mein Main:</p>
<pre><code class="language-cpp">int main()
{
	cout &lt;&lt; &quot; 1 Gruppe mit 200 Geburtstagen: \n&quot;;
	group group1(200);
	group1.sort();
	group1.print();
	group1.birthdayOnTheSameDay();
</code></pre>
<p>Objekt erstellen Funktioniert, sortieren Funktioniert und die ausgabe Funktioniert. Die oben geschriebene Methode funktioniert nicht.</p>
<p>Hier noch das Klassendiagramm:<br />
<a href="http://imageshack.us/photo/my-images/859/umluo.jpg/" rel="nofollow">http://imageshack.us/photo/my-images/859/umluo.jpg/</a></p>
<p>Braucht ihr noch mehr Input?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171616</guid><dc:creator><![CDATA[Tsubasa89]]></dc:creator><pubDate>Mon, 23 Jan 2012 19:16:01 GMT</pubDate></item><item><title><![CDATA[Reply to Geburtstagsparadoxon Problem on Mon, 23 Jan 2012 19:20:57 GMT]]></title><description><![CDATA[<p>Tsubasa89 schrieb:</p>
<blockquote>
<p>jedoch passiert nix.</p>
</blockquote>
<p>Was heißt das? Was sollte &quot;passieren&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171620</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171620</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Mon, 23 Jan 2012 19:20:57 GMT</pubDate></item><item><title><![CDATA[Reply to Geburtstagsparadoxon Problem on Mon, 23 Jan 2012 19:24:54 GMT]]></title><description><![CDATA[<p>Wo kommt die Variable size her? Wo kommt birthdays her?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171623</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171623</guid><dc:creator><![CDATA[pyhax]]></dc:creator><pubDate>Mon, 23 Jan 2012 19:24:54 GMT</pubDate></item><item><title><![CDATA[Reply to Geburtstagsparadoxon Problem on Mon, 23 Jan 2012 19:33:45 GMT]]></title><description><![CDATA[<p>Den Fehler kann ich in dem was du zeigst nicht genau benennen. Ungwöhnlich kommt mir aber z.B. vor, dass du size+1 Iterationen machst.</p>
<p>Was mir aber ganz stark auffällt: Designoverkill? Ganz besonders die total überfrachtete Datumsklasse. Und in group erfindest du die Standardbibliothek neu. Zieh doch einfach N Zahlen von 1 bis 365 und guck, ob zwei gleiche dabei sind. Mit den Algorithmen aus der Standardbibliothek ist das ein Dreizeiler.</p>
<p>Da:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;set&gt;
#include &lt;cstdlib&gt;

using namespace std;

int main()
{
  cout &lt;&lt; &quot;Seed und Anzahl Versuchspersonen: &quot;;
  int seed, N;
  cin &gt;&gt; seed &gt;&gt; N;
  srand(seed);

  // Und jetzt der eigentliche Algorithmus
  set&lt;int&gt; geburtstage;
  for (int i = 0; i &lt; N; ++i)
    geburtstage.insert(rand() % 365);
  if (geburtstage.size() != N)
    cout &lt;&lt; &quot;Mehrere Personen haben am gleichen Tag Geburtstag.\n&quot;;
  else
    cout &lt;&lt; &quot;Geburtstage sind nicht entartet.\n&quot;;
}
</code></pre>
<p>Pack das meinetwegen noch in eine Funktion oder wenn's sein muss design es mit Klassen, aber so einfach kann's sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171624</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171624</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 23 Jan 2012 19:33:45 GMT</pubDate></item><item><title><![CDATA[Reply to Geburtstagsparadoxon Problem on Mon, 23 Jan 2012 19:25:49 GMT]]></title><description><![CDATA[<p>Vergleich mit &quot;&lt;=&quot; ist natürlich falsch, da der Index nie == size sein darf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171625</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Mon, 23 Jan 2012 19:25:49 GMT</pubDate></item><item><title><![CDATA[Reply to Geburtstagsparadoxon Problem on Mon, 23 Jan 2012 19:32:58 GMT]]></title><description><![CDATA[<p>Die Klassen waren so vorgegeben und sollen umgesetzt werden.<br />
birthdayOnTheSameDay() soll einfach zurückgeben ob es 2 gleiche Geburtstage gibt mehr nicht.</p>
<p>Hier beide Klassen:<br />
date.h:</p>
<pre><code class="language-cpp">#ifndef DATE_H
#define DATE_H

class Date
{
public:
	Date();
	void setRandomDate();
	int getDayInYear();
	int getDayInMonth();
	int getMonth();
	int getYear();
	void print();

private:
	int year;
	int dayInYear;
};
#endif
</code></pre>
<p>date.cpp:</p>
<pre><code class="language-cpp">#include &quot;Date.h&quot;
#include &lt;iostream&gt;
#include &lt;cstdlib&gt;
#include &lt;ctime&gt;
#include &lt;iomanip&gt;
using namespace std;

Date::Date()
{
	setRandomDate();
}
void Date::print()
{
	cout &lt;&lt; setw(2) &lt;&lt; setfill('0') &lt;&lt; getDayInMonth() &lt;&lt; &quot;.&quot; &lt;&lt; setw(2) &lt;&lt; setfill('0') &lt;&lt; getMonth() &lt;&lt; &quot;.&quot; &lt;&lt; year;
}

void Date::setRandomDate()
{
	//srand (time(0));
	dayInYear = 1 + rand () % 365;
	year = 1950 + rand () % 58;	
}

int Date::getDayInYear()
{
	return this-&gt;dayInYear;
}

int Date::getDayInMonth()
{
int d=getDayInYear(), i=0;
int mo[12] = {{31},{28},{31},{30},{31},{30},{31},{31},{30},{31},{30},{31}};
	do{
		if (d&lt;=31){return d;}
	d = d-mo[i];
		if (d&lt;=mo[i])  {return d;}
	i++;}

while (i!=13 &amp;&amp; d&gt;mo[i-1]);	
}

int Date::getMonth()
{
int d=getDayInYear(), i=0;
int mo[12] = {{31},{28},{31},{30},{31},{30},{31},{31},{30},{31},{30},{31}};
	do{
	d = d-mo[i];
		if (d&lt;=mo[i] &amp;&amp; d&lt;=0) 
			return i+1; 
		else
	i++;}

while (i!=13 &amp;&amp; d&gt;mo[i-1]);
}

int Date::getYear()
{
	return this-&gt;year;
}
</code></pre>
<p>group.h:</p>
<pre><code class="language-cpp">#ifndef GROUP_H
#define GROUP_H
#include &quot;Date.h&quot;
class group
{
public:
	group(int);
	int static const numberOfBirthdays = 200;
	bool birthdayOnTheSameDay();
	void sort();
	void print();
	bool isFull();

private:
	Date birthdays[numberOfBirthdays];
	int size;
};
#endif
</code></pre>
<p>group.cpp:</p>
<pre><code class="language-cpp">#include &quot;group.h&quot;
#include &lt;iostream&gt;
#include &lt;iomanip&gt;
using namespace std;

group::group(int gsize)
{
	if(gsize &gt; 1 &amp;&amp; gsize &lt; numberOfBirthdays)
		size = gsize;
	else
		size = numberOfBirthdays;
}

bool group::isFull()
{
	if (size == numberOfBirthdays)
	return true;
}

bool group::birthdayOnTheSameDay()
{
	for(int i = 0; i &lt;= size; i++)
	{ 
		for(int j = i+1; j &lt;= size; j++)
		{
			if(birthdays[i].getDayInYear() == birthdays[j].getDayInYear())
			{
				return true;
				cout &lt;&lt; &quot;\nMehrere Personen haben am gleichen Tag Geburtstag&quot; &lt;&lt; endl;
				break;
			}
		}
	}
	return false;
}

void group::print()
{
	for(int i=0; i&lt;size; i++)
	{
		cout &lt;&lt; &quot;Person &quot; &lt;&lt; setw(3) &lt;&lt; setfill (' ') &lt;&lt; i+1 &lt;&lt; &quot; von &quot; &lt;&lt; setw(3) &lt;&lt; size &lt;&lt;&quot;:\t&quot;;
		birthdays[i].print();
		cout &lt;&lt; endl;
	}

}

void group::sort() //Bubble-Sort
{
	for (int i = size - 1; i &gt; 0; i--) 
	{
		for (int j = 0; j &lt; i; j++) 
		{
			if (birthdays[i].getYear() &lt; birthdays[j].getYear()) 
			{
				Date swap = birthdays[i];
				birthdays[i] = birthdays[j];
				birthdays[j] = swap;
			}
		}
	}	

	for (int k = size - 1; k &gt; 0; k--) 
	{
		for (int l = 0; l &lt; k; l++) 
		{
			if (birthdays[k].getYear() == birthdays[l].getYear() &amp;&amp; birthdays[k].getDayInYear() &lt; birthdays[l].getDayInYear())
			{
				Date swap = birthdays[k];
				birthdays[k] = birthdays[l];
				birthdays[l] = swap;
			}
		}
	}		
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2171628</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171628</guid><dc:creator><![CDATA[Tsubasa89]]></dc:creator><pubDate>Mon, 23 Jan 2012 19:32:58 GMT</pubDate></item><item><title><![CDATA[Reply to Geburtstagsparadoxon Problem on Mon, 23 Jan 2012 19:34:08 GMT]]></title><description><![CDATA[<p>Tsubasa89 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">return true;
				cout &lt;&lt; &quot;\nMehrere Personen haben am gleichen Tag Geburtstag&quot; &lt;&lt; endl;
				break;
</code></pre>
</blockquote>
<p>Das cout unter return true wird niemals erreicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171629</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171629</guid><dc:creator><![CDATA[*Q* 1]]></dc:creator><pubDate>Mon, 23 Jan 2012 19:34:08 GMT</pubDate></item><item><title><![CDATA[Reply to Geburtstagsparadoxon Problem on Mon, 23 Jan 2012 19:43:27 GMT]]></title><description><![CDATA[<p>Q schrieb:</p>
<blockquote>
<p>Tsubasa89 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">return true;
				cout &lt;&lt; &quot;\nMehrere Personen haben am gleichen Tag Geburtstag&quot; &lt;&lt; endl;
				break;
</code></pre>
</blockquote>
<p>Das cout unter return true wird niemals erreicht.</p>
</blockquote>
<p>Danke.<br />
cout und return getauscht und schon gehts.</p>
<p>Bin ein Anfänger sorry <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171637</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171637</guid><dc:creator><![CDATA[Tsubasa89]]></dc:creator><pubDate>Mon, 23 Jan 2012 19:43:27 GMT</pubDate></item><item><title><![CDATA[Reply to Geburtstagsparadoxon Problem on Mon, 23 Jan 2012 23:58:37 GMT]]></title><description><![CDATA[<p>Tsubasa89 schrieb:</p>
<blockquote>
<p>Q schrieb:</p>
<blockquote>
<p>Tsubasa89 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">return true;
				cout &lt;&lt; &quot;\nMehrere Personen haben am gleichen Tag Geburtstag&quot; &lt;&lt; endl;
				break;
</code></pre>
</blockquote>
<p>Das cout unter return true wird niemals erreicht.</p>
</blockquote>
<p>Danke.<br />
cout und return getauscht und schon gehts.</p>
<p>Bin ein Anfänger sorry <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Das &quot;break&quot; kannst du auch wegmachen, das hat auch keinen Zweck mehr wenn es unter dem &quot;return&quot; steht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171729</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 23 Jan 2012 23:58:37 GMT</pubDate></item></channel></rss>