<?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[loesung gesucht]]></title><description><![CDATA[<p>Hallo zusammen!<br />
Hab folgende Aufgabenstellung und keinen blassen Dunst! kann mir bitte jemand helfen?</p>
<p>Sie sollen ein Schlüsselverwaltungsprogramm für eine neu gegründete Firma in C++ realisieren:<br />
Es gibt 2 Arten von Schlüsseln,<br />
• die normalen Zimmerschlüssel schließen nur das jeweilige Zimmer auf ,<br />
• die Abteilungsschlüssel passen auf alle Schlössern einer Abteilung. Die Firma hat die Abteilungen A, B und C.<br />
Jeder Mitarbeiter erhält einen Schlüssel für sein Zimmer, jeder Abteilungsleiter für seine Abteilung. Von den Mitarbeitern wird die Mitarbeiternummer, der Name und die Zimmernummer gespeichert. Vom Abteilungsleiter wird zusätzlich der Name der Abteilung, gespeichert, deren Leiter er ist.<br />
Ihr Programm soll folgende Menüpunkte erhalten:<br />
• Ausgabe eines Schlüssels an einen Mitarbeiter/Abteilungsleiter (Abfrage/Eingabe der Daten über cout/cin)<br />
• Suchen eines Mitarbeiters nach Mitarbeiternummer mit Ausgabe seiner Daten und des an ihn ausgegebenen Schlüssels<br />
• Ausgabe sämtlicher Mitarbeiter, die einen Schlüssel erhalten haben mit Angabe der Schlüsseldaten<br />
• Programmende<br />
Das Programm muss 100 Mitarbeiter und 100 Schlüssel (in Feldern) verwalten können und<br />
mindestens eine Vererbungsbeziehung enthalten.<br />
Die Objekte (nicht die Felder) sollen dynamisch erzeugt werden!<br />
Hinweis:<br />
Ein Feld für dynamisch zu erzeugende Objekte wird wie folgt angelegt:<br />
Mitarbeiter *Mitarbeiterliste[10]; //Array für 10 Instanzen der Klasse Mitarbeiter<br />
Bei Programmstart ist die Datenbank der Schlüsselverwaltung leer. Eine permanente Speicherung der Daten ist nicht gefordert. Die Daten müssen nur zur Laufzeit des Programms verfügbar sein.</p>
<p>Vielen dank für eure Mühe!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/267298/loesung-gesucht</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 14:26:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/267298.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 21 May 2010 15:59:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to loesung gesucht on Fri, 21 May 2010 15:59:44 GMT]]></title><description><![CDATA[<p>Hallo zusammen!<br />
Hab folgende Aufgabenstellung und keinen blassen Dunst! kann mir bitte jemand helfen?</p>
<p>Sie sollen ein Schlüsselverwaltungsprogramm für eine neu gegründete Firma in C++ realisieren:<br />
Es gibt 2 Arten von Schlüsseln,<br />
• die normalen Zimmerschlüssel schließen nur das jeweilige Zimmer auf ,<br />
• die Abteilungsschlüssel passen auf alle Schlössern einer Abteilung. Die Firma hat die Abteilungen A, B und C.<br />
Jeder Mitarbeiter erhält einen Schlüssel für sein Zimmer, jeder Abteilungsleiter für seine Abteilung. Von den Mitarbeitern wird die Mitarbeiternummer, der Name und die Zimmernummer gespeichert. Vom Abteilungsleiter wird zusätzlich der Name der Abteilung, gespeichert, deren Leiter er ist.<br />
Ihr Programm soll folgende Menüpunkte erhalten:<br />
• Ausgabe eines Schlüssels an einen Mitarbeiter/Abteilungsleiter (Abfrage/Eingabe der Daten über cout/cin)<br />
• Suchen eines Mitarbeiters nach Mitarbeiternummer mit Ausgabe seiner Daten und des an ihn ausgegebenen Schlüssels<br />
• Ausgabe sämtlicher Mitarbeiter, die einen Schlüssel erhalten haben mit Angabe der Schlüsseldaten<br />
• Programmende<br />
Das Programm muss 100 Mitarbeiter und 100 Schlüssel (in Feldern) verwalten können und<br />
mindestens eine Vererbungsbeziehung enthalten.<br />
Die Objekte (nicht die Felder) sollen dynamisch erzeugt werden!<br />
Hinweis:<br />
Ein Feld für dynamisch zu erzeugende Objekte wird wie folgt angelegt:<br />
Mitarbeiter *Mitarbeiterliste[10]; //Array für 10 Instanzen der Klasse Mitarbeiter<br />
Bei Programmstart ist die Datenbank der Schlüsselverwaltung leer. Eine permanente Speicherung der Daten ist nicht gefordert. Die Daten müssen nur zur Laufzeit des Programms verfügbar sein.</p>
<p>Vielen dank für eure Mühe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1900850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1900850</guid><dc:creator><![CDATA[karin14]]></dc:creator><pubDate>Fri, 21 May 2010 15:59:44 GMT</pubDate></item><item><title><![CDATA[Reply to loesung gesucht on Fri, 21 May 2010 16:03:38 GMT]]></title><description><![CDATA[<p>karin14 schrieb:</p>
<blockquote>
<p>Hallo zusammen!<br />
Hab folgende Aufgabenstellung und keinen blassen Dunst! kann mir bitte jemand helfen?</p>
</blockquote>
<p>So läuft das hier nicht. Lies dir <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-200753.html" rel="nofollow">diesen Thread</a> in Ruhe durch. Ganz wichtig sind die Punkte 1, 2 und 4. Anschliessend kannst du nochmals einen Post erstellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1900854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1900854</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 21 May 2010 16:03:38 GMT</pubDate></item><item><title><![CDATA[Reply to loesung gesucht on Fri, 21 May 2010 16:07:12 GMT]]></title><description><![CDATA[<p>Alles klar Wußte ich nicht! War und bin nur sehr verzweifelt! Danke trotzdem!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1900857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1900857</guid><dc:creator><![CDATA[karin14]]></dc:creator><pubDate>Fri, 21 May 2010 16:07:12 GMT</pubDate></item><item><title><![CDATA[Reply to loesung gesucht on Fri, 21 May 2010 17:58:58 GMT]]></title><description><![CDATA[<p>DU musst doch ein Grundahnung haben. Ich mein man bekommt doch so eine Aufgabe nicht ohne vorher schon mal gemacht zu haben. Zeig was du hast und frag konkrete Fragen, dann bekommst auch Hilfe ... Denn wenn du Eigeniniziative zeigst stehen dir hier Tor und Tür offen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1900895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1900895</guid><dc:creator><![CDATA[freak4fun]]></dc:creator><pubDate>Fri, 21 May 2010 17:58:58 GMT</pubDate></item><item><title><![CDATA[Reply to loesung gesucht on Fri, 21 May 2010 18:05:45 GMT]]></title><description><![CDATA[<p>die aufgabe hört sich auch zu umfangreich an, um hier ne fertig-lösung zu bekommen... ich hatte zwar gerade lange weile, aber so viel dann doch nicht... : D</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1900899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1900899</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 21 May 2010 18:05:45 GMT</pubDate></item><item><title><![CDATA[Reply to loesung gesucht on Sun, 23 May 2010 00:18:17 GMT]]></title><description><![CDATA[<p>btw: warum gibts keine angabe darüber, wie die zimmernr. aussieht? Oo</p>
<p>logisch wäre <code>X-yyy</code> - also Abteilung und dann eine Zimmernummer - allerdings wäre es auch denkbar, wenn da wirklich nur eine Nummer wäre und die Zuordnung irgendwie anders gelöst wäre...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1901308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1901308</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sun, 23 May 2010 00:18:17 GMT</pubDate></item><item><title><![CDATA[Reply to loesung gesucht on Sun, 23 May 2010 09:55:10 GMT]]></title><description><![CDATA[<p>Ich hatte dann doch ein wenig lange Weile:</p>
<p>Da fehlt zwar noch ein Teil(es gehen noch keine Schlüssel auszuteilen), aber ich hab ja auch nicht ewig nix zu tun ;o)<br />
Das das Feld nicht dynamisch erzeugt werden soll, hab ich überlesen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p><strong>types.h</strong></p>
<pre><code class="language-cpp">#pragma once

#include &lt;string&gt;

namespace key_species
{
	enum T
	{
		room,
		section
	};
}

namespace sections
{
	enum T
	{
		A = 0,
		B,
		C
	};

	char names[] =
	{
		'A',
		'B',
		'C'
	};
}

struct room_nr_t
{
	sections::T section;
	unsigned int room_nr;

	room_nr_t(sections::T section, unsigned int room_nr)
	:	section(section), room_nr(room_nr)
	{}
};

bool operator== (const room_nr_t&amp; lhs, const room_nr_t&amp; rhs)
{
	return lhs.section == rhs.section &amp;&amp; lhs.room_nr == rhs.room_nr;
}

std::ostream&amp; operator&lt;&lt; (std::ostream&amp; os, const room_nr_t&amp; these)
{
	os &lt;&lt; sections::names[these.section] &lt;&lt; '-' &lt;&lt; these.room_nr;
	return os;
}

typedef unsigned int worker_nr_t;
typedef std::string name_t;
typedef std::string section_name_t;
</code></pre>
<p><strong>worker.h</strong></p>
<pre><code class="language-cpp">#include &quot;types.h&quot;

#include &lt;iostream&gt;

struct worker_base
{
public:
	worker_base(const name_t&amp; name, const worker_nr_t&amp; nr, const room_nr_t&amp; room)
	: name(name), nr(nr), room(room)
	{}

	virtual void print(std::ostream&amp; os) const = 0;

	virtual ~worker_base() {}

	worker_nr_t get_nr() const
	{
		return nr;
	}
protected:
	worker_nr_t nr;
	room_nr_t room;
	name_t name;
};

std::ostream&amp; operator&lt;&lt; (std::ostream&amp; os, const worker_base&amp; these)
{
	these.print(os);
	return os;
}

struct worker : worker_base
{
public:
	worker(const name_t&amp; name, const worker_nr_t&amp; nr, const room_nr_t&amp; room)
	:	worker_base(name, nr, room),
		key(room)
	{}

	virtual void print (std::ostream&amp; os) const
	{
		os &lt;&lt; &quot;Name: &quot; &lt;&lt; name &lt;&lt; &quot;; Worker number: &quot; &lt;&lt; nr &lt;&lt; &quot;; Room: &quot; &lt;&lt; room;
	}
private:
	key_t&lt;key_species::room&gt; key;
};

struct chief : worker_base
{
public:
	chief(const name_t&amp; name, const worker_nr_t&amp; nr, const room_nr_t&amp; room, const section_name_t&amp; section)
	:	worker_base(name, nr, room),
		section(section),
		key(room.section)
	{}

	virtual void print (std::ostream&amp; os) const
	{
		os &lt;&lt; &quot;Name: &quot; &lt;&lt; name &lt;&lt; &quot;; Worker number: &quot; &lt;&lt; nr &lt;&lt; &quot;; Room: &quot; &lt;&lt; room &lt;&lt; &quot;; Section: &quot; &lt;&lt; section &lt;&lt; &quot;; &quot;;
	}
private:
	section_name_t section;
	key_t&lt;key_species::section&gt; key;
};
</code></pre>
<p><strong>key.h</strong></p>
<pre><code class="language-cpp">#include &quot;types.h&quot;

template&lt;key_species::T species&gt;
struct key_t;

template&lt; &gt;
struct key_t &lt;key_species::room&gt;
{
public:
	explicit key_t(const room_nr_t&amp; room)
	:	room(room)
	{}

	bool can_open(const room_nr_t&amp; room) const
	{
		return room == this-&gt;room;
	}

private:
	room_nr_t room;
};

template&lt; &gt;
struct key_t &lt;key_species::section&gt;
{
public:
	explicit key_t(const sections::T&amp; section)
	:	section(section)
	{}

	bool can_open(const room_nr_t&amp; room) const
	{
		return room.section == section;
	}

private:
	sections::T section;
};
</code></pre>
<p><strong>main.cpp</strong></p>
<pre><code class="language-cpp">#include &lt;algorithm&gt;
#include &lt;vector&gt;

#include &quot;types.h&quot;
#include &quot;key.h&quot;
#include &quot;worker.h&quot;

int main()
{
	std::vector&lt;worker_base*&gt; all_worker;

	//worker hinzufügen
	all_worker.push_back(new worker(&quot;name&quot;, 123, room_nr_t(sections::A, 20)));
	all_worker.push_back(new chief (&quot;name&quot;, 234, room_nr_t(sections::A, 20), &quot;section&quot;));

	//ausgabe eines schlüssels

	//suchen eines mitarbeiters per nr. -&gt; ausgabe seiner daten + schlüssel
	{
		worker_nr_t x;
		std::cout &lt;&lt; &quot;Mitarbeiter Nummer?&quot; &lt;&lt; std::endl;
		std::cin &gt;&gt; x;
		for(std::vector&lt;worker_base*&gt;::iterator i(all_worker.begin()), e(all_worker.end()); i != e; ++i)
		{
			worker_base* iter = *i;
			if(iter-&gt;get_nr() != x)
				continue;

			std::cout &lt;&lt; *iter &lt;&lt; std::endl;
			break;
		}
	}

	for(std::vector&lt;worker_base*&gt;::iterator i(all_worker.begin()), e(all_worker.end()); i != e; ++i)
		delete *i;
}
</code></pre>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1901370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1901370</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sun, 23 May 2010 09:55:10 GMT</pubDate></item></channel></rss>