<?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[Problem beim Ausgeben]]></title><description><![CDATA[<p>Hi,<br />
ich bin dabei, ein MitgliederVerwaltungsprogramm (z.B. eines Vereins) zu schreiben.<br />
Ich habe ein Auswahlmenu, von dem man aus über die Nummerneingabe verschiedene Dinge tun kann (gelöst mit Funktionen).<br />
Ein Punkt ist, Mitglieder zu löschen.<br />
Wenn ich drei Mitglieder eingegeben habe, erscheinen sie als 0., 1., und 2.; wenn ich dann den 1. lösche, dann steht noch 1. und 2. da, aber ich möchte, dass alle Nummern die größer sind, als die zu löschende um eins verringert werden. Eigentlich dürfte es nicht schwer sein, aber ich bekomme es einfach nciht hin.</p>
<p>Hier der Quellcode zur Funktion:</p>
<pre><code class="language-csharp">void MitgliedLoesch()
{

bool EingabeLoesch;

do
{int MitgliedNr;

system(&quot;cls&quot;);
cout &lt;&lt; &quot;\n\tMitglieder loeschen:&quot;;
cout &lt;&lt; &quot;\n\t~~~~~~~~~~~~~~~~~~~~&quot;;

for ( Zaehler=0; Zaehler &lt; 50; Zaehler++)
	{
	if (Mitglied[Zaehler].Name[0] != ' ')
	{cout &lt;&lt; endl &lt;&lt; Zaehler;
	cout &lt;&lt; &quot; --&gt; &quot;;
	for (int x=0; x&lt;20; x++)
		{cout &lt;&lt; Mitglied[Zaehler].Name[x];}
	cout &lt;&lt; &quot;, &quot;;
	for (int x=0; x&lt;20; x++)
		{cout &lt;&lt; Mitglied[Zaehler].Vorname[x];}
		cout &lt;&lt; endl;}}

	cout &lt;&lt; &quot;\n\nBitte geben Sie die Nr. des zu loeschenden Mitglieds ein\n\n\t&quot;;
	cin &gt;&gt; MitgliedNr;

	for (int v=0; v&lt;50; v++)
	{if (v&gt;MitgliedNr)
	{Zaehler--;}}

	for (int x=0; x&lt;20; x++)
	{Mitglied[MitgliedNr].Name[x]=' ';}
	for (int x=0; x&lt;20; x++)
	{Mitglied[MitgliedNr].Vorname[x]=' ';}
	for (int x=0; x&lt;35; x++)
	{Mitglied[MitgliedNr].StrasseNr[x]=' ';}
	Mitglied[MitgliedNr].PLZ=0;
	for (int x=0; x&lt;20; x++)
	{Mitglied[MitgliedNr].Ort[x]=' ';}
	Mitglied[MitgliedNr].GebJahr=0;
	Mitglied[MitgliedNr].GebMonat=0;
	Mitglied[MitgliedNr].GebTag=0;
	for (int x=0; x&lt;10; x++)
	{Mitglied[MitgliedNr].MitgliedMon[x]=' ';}
	Mitglied[MitgliedNr].MitgliedJahr=0;
	Mitglied[MitgliedNr].Tel=0;
	Mitglied[MitgliedNr].Beitrag=0;

	cout &lt;&lt; &quot;Moechten Sie ein weiteres Mitglied loeschen? (1, sonst 0):&quot;;
	cin &gt;&gt; EingabeLoesch;}
	while (EingabeLoesch == true);

	Menu();}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/126653/problem-beim-ausgeben</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 19:56:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/126653.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 17 Nov 2005 08:20:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem beim Ausgeben on Thu, 17 Nov 2005 08:20:00 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich bin dabei, ein MitgliederVerwaltungsprogramm (z.B. eines Vereins) zu schreiben.<br />
Ich habe ein Auswahlmenu, von dem man aus über die Nummerneingabe verschiedene Dinge tun kann (gelöst mit Funktionen).<br />
Ein Punkt ist, Mitglieder zu löschen.<br />
Wenn ich drei Mitglieder eingegeben habe, erscheinen sie als 0., 1., und 2.; wenn ich dann den 1. lösche, dann steht noch 1. und 2. da, aber ich möchte, dass alle Nummern die größer sind, als die zu löschende um eins verringert werden. Eigentlich dürfte es nicht schwer sein, aber ich bekomme es einfach nciht hin.</p>
<p>Hier der Quellcode zur Funktion:</p>
<pre><code class="language-csharp">void MitgliedLoesch()
{

bool EingabeLoesch;

do
{int MitgliedNr;

system(&quot;cls&quot;);
cout &lt;&lt; &quot;\n\tMitglieder loeschen:&quot;;
cout &lt;&lt; &quot;\n\t~~~~~~~~~~~~~~~~~~~~&quot;;

for ( Zaehler=0; Zaehler &lt; 50; Zaehler++)
	{
	if (Mitglied[Zaehler].Name[0] != ' ')
	{cout &lt;&lt; endl &lt;&lt; Zaehler;
	cout &lt;&lt; &quot; --&gt; &quot;;
	for (int x=0; x&lt;20; x++)
		{cout &lt;&lt; Mitglied[Zaehler].Name[x];}
	cout &lt;&lt; &quot;, &quot;;
	for (int x=0; x&lt;20; x++)
		{cout &lt;&lt; Mitglied[Zaehler].Vorname[x];}
		cout &lt;&lt; endl;}}

	cout &lt;&lt; &quot;\n\nBitte geben Sie die Nr. des zu loeschenden Mitglieds ein\n\n\t&quot;;
	cin &gt;&gt; MitgliedNr;

	for (int v=0; v&lt;50; v++)
	{if (v&gt;MitgliedNr)
	{Zaehler--;}}

	for (int x=0; x&lt;20; x++)
	{Mitglied[MitgliedNr].Name[x]=' ';}
	for (int x=0; x&lt;20; x++)
	{Mitglied[MitgliedNr].Vorname[x]=' ';}
	for (int x=0; x&lt;35; x++)
	{Mitglied[MitgliedNr].StrasseNr[x]=' ';}
	Mitglied[MitgliedNr].PLZ=0;
	for (int x=0; x&lt;20; x++)
	{Mitglied[MitgliedNr].Ort[x]=' ';}
	Mitglied[MitgliedNr].GebJahr=0;
	Mitglied[MitgliedNr].GebMonat=0;
	Mitglied[MitgliedNr].GebTag=0;
	for (int x=0; x&lt;10; x++)
	{Mitglied[MitgliedNr].MitgliedMon[x]=' ';}
	Mitglied[MitgliedNr].MitgliedJahr=0;
	Mitglied[MitgliedNr].Tel=0;
	Mitglied[MitgliedNr].Beitrag=0;

	cout &lt;&lt; &quot;Moechten Sie ein weiteres Mitglied loeschen? (1, sonst 0):&quot;;
	cin &gt;&gt; EingabeLoesch;}
	while (EingabeLoesch == true);

	Menu();}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/919759</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/919759</guid><dc:creator><![CDATA[sarah1986]]></dc:creator><pubDate>Thu, 17 Nov 2005 08:20:00 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim Ausgeben on Thu, 17 Nov 2005 08:25:21 GMT]]></title><description><![CDATA[<p>Erstmal ist es unnötig, einzelne Anweisungen noch zusätzlich zu gruppieren.<br />
Zweitens: Über deine Ein/Ausgabe-Routinen sage ich nichts (mehr) <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>Drittens: Du mußt alle Datensätze hinter dem gelöschten um einen Platz nach vorne schieben:</p>
<pre><code class="language-cpp">for(i=loeschNr+1;i&lt;gesamtNr;++i)
  Mitglied[i-1]=Mtiglied[i];
Mitglied[--gesamtNr]=(leer);
</code></pre>
<p>Viertens: Steig von Arrays um auf STL-Container (vector/deque/list).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/919766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/919766</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 17 Nov 2005 08:25:21 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim Ausgeben on Thu, 17 Nov 2005 08:25:32 GMT]]></title><description><![CDATA[<p>die for-Schleife mit dem Zähler v habe ich so probiert, es funzt aber net.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/919768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/919768</guid><dc:creator><![CDATA[sarah1986]]></dc:creator><pubDate>Thu, 17 Nov 2005 08:25:32 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim Ausgeben on Thu, 17 Nov 2005 08:28:10 GMT]]></title><description><![CDATA[<p>Meinst du diesen Block?</p>
<pre><code class="language-cpp">for (int v=0; v&lt;50; v++)
{if (v&gt;MitgliedNr)
{Zaehler--;}}
</code></pre>
<p>Der zählt nur die Variable &quot;Zaehler&quot; runter - um die entstehende Lücke zu füllen, mußt du alle nachfolgenden Elemente umkopieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/919775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/919775</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 17 Nov 2005 08:28:10 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim Ausgeben on Thu, 17 Nov 2005 08:30:33 GMT]]></title><description><![CDATA[<p>Abgesehen davon dass das etwas realitätsfern ist, eine Mitgliedsnummer zu verändern (sie ist taug dann als ID nicht viel, weil sie sich ändert...).</p>
<p>Spar dir die Nummer und zeige den Index des Mitgliedseintrags als Nummer an. Dann aktualisiert sich die Nummer automatisch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/919778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/919778</guid><dc:creator><![CDATA[Mathias]]></dc:creator><pubDate>Thu, 17 Nov 2005 08:30:33 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim Ausgeben on Thu, 17 Nov 2005 08:50:39 GMT]]></title><description><![CDATA[<p>Es ist keine Mitgliedsnummer in dem Sinn von einer fest zugeordneten Nr. In meinem Prog ist es nur eine temporäre Nummer (die Position des Mitglieds).<br />
Habe dies</p>
<pre><code class="language-csharp">for(i=loeschNr+1;i&lt;gesamtNr;++i)
  Mitglied[i-1]=Mtiglied[i];
Mitglied[--gesamtNr]=(leer);
</code></pre>
<p>auf mein Programm übertragen.<br />
Sieht jetzt so aus:</p>
<pre><code class="language-csharp">for(int i=MitgliedNr+1; i&lt;gesNr; ++i) 
	{Mitglied[i-1]=Mitglied[i]; 
	--(Mitglied[gesNr])=(); }
</code></pre>
<p>(gesNr habe ich global als const int mit dem Wert 50 definiert)<br />
und da kommen folgende Fehler:</p>
<p>error C2675: Unärer Operator '--': 'Mitglieddetails' definiert diesen Operator oder eine Konvertierung in einen für den vordefinierten Operator geeigneten Typ nicht</p>
<p>error C2059: Syntaxfehler: ')'</p>
<p>Was habe ich sooooo schlimmes getan, dass man es mir antut, sowas programmieren zu müssen???????</p>
]]></description><link>https://www.c-plusplus.net/forum/post/919798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/919798</guid><dc:creator><![CDATA[sarah1986]]></dc:creator><pubDate>Thu, 17 Nov 2005 08:50:39 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim Ausgeben on Thu, 17 Nov 2005 08:57:42 GMT]]></title><description><![CDATA[<p>Mathias schrieb:</p>
<blockquote>
<p>Spar dir die Nummer und zeige den Index des Mitgliedseintrags als Nummer an. Dann aktualisiert sich die Nummer automatisch.</p>
</blockquote>
<p>aber genau das mache ich doch.... ich habe als Index die Variable &quot;Zaehler&quot;, und diese zeige ich auch als Nummer an. Aber so ändert sich das leider nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/919806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/919806</guid><dc:creator><![CDATA[sarah1986]]></dc:creator><pubDate>Thu, 17 Nov 2005 08:57:42 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim Ausgeben on Thu, 17 Nov 2005 08:59:37 GMT]]></title><description><![CDATA[<p>Vergleich mal meinen Text mit dem, was du dort fabriziert hast <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="😉"
    /> (btw, gesNr sollte ein nicht-konstanter Wert sein, der den aktuellen Füllstand deines Arrays angibt).</p>
<p>Und anstelle des &quot;...=(leer);&quot; mußt du natürlich deinen Weg einsetzen, einen Datensatz als &quot;unbelegt&quot; zu kennzeichnen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/919808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/919808</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Thu, 17 Nov 2005 08:59:37 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim Ausgeben on Thu, 17 Nov 2005 09:09:08 GMT]]></title><description><![CDATA[<p>k, jetzt habe ich das so gemacht, aber jetzt wird nurnoch der 1. eintrag angezeigt, der 3., der ja zum 2. werden soll, garnicht mehr; er ist garnicht mehr vorhanden, die datensätze 2 und 3 sind beide leer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/919815</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/919815</guid><dc:creator><![CDATA[sarah1986]]></dc:creator><pubDate>Thu, 17 Nov 2005 09:09:08 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim Ausgeben on Thu, 17 Nov 2005 09:43:05 GMT]]></title><description><![CDATA[<p>*sich den Code näher ansehe*</p>
<p>Hmmm ich glaube du machst das generell sehr umständlich.... Zeichenketten sind in C/C++ so definiert, dass sie mit dem Zeichen '\0' beendet werden.<br />
Wenn du dies beachtest kannst du sie direkt mit cout rausschreiben ohne zig Schleifen programmieren zu müssen.<br />
Gleiches gilt für das Löschen. Es ist in dem Fall dann nur noch notwendig das erste Zeichen mit einem '\0' zu überschreiben.</p>
<p>Da du die Mitglieder nicht wirklich löschst, sondern nur leerst kanst du natürlich nicht den Index als Mitgliedernummer verwenden. Du hast schließlich immer noch deine 50 Einträge. Du must dir innerhalb der Schleife mitzählen der wievielte gültige Eintrag es ist.</p>
<p>Ansonsten verwendet man in C++ lieber std::vector anstelle von Arrays. <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 />
Da kann man die Einträge auch wirklich löschen und auch Einträge hinzufügen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/919848</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/919848</guid><dc:creator><![CDATA[Mathias]]></dc:creator><pubDate>Thu, 17 Nov 2005 09:43:05 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim Ausgeben on Thu, 17 Nov 2005 09:47:28 GMT]]></title><description><![CDATA[<p>muss das alles so kompliziert sein?<br />
ich war so froh, dass das Prog gelaufen ist. Nur diese eine Sache wollte ich noch ändern, sonst bin ich ja mittlerweile sehr zufrieden.<br />
Ich habe nur Anfängerkenntnisse, soll aber eine C++-Einsteiger-Schulung machen. Und das soll die Abschlussprüfung werden. Das blöde daran ist nur, dass ich vor einem Jahr auch so eine Schulung mitgemacht habe, und da hab ich die Abshclussprüfung an einem Tag hinbekommen (es kamen zwar keine Funktionen vor, aber sonst alles, was ich auch verwendet habe). Ich bin jetzt schon am 4. Tag am basteln und will langsam nicht mehr.........</p>
<p>Und langsam seh ich vor leiter c++ garnix mehr und habe ein richtiges blackout. und ehrlich gesagt will ich an dem code nicht mehr viel ändern, weil ich das mit der Abbruchbedingung auch noch garnicht einbringen will, das kommt erst, wenn ich die Erweiterung erstelle.<br />
Und jetzt muss ich ne Lösung finden, das irgendwie so hinzubekommen.<br />
Weißt du, wie ich diese Schleife abändern muss, damit es funzt?<br />
Ich habe se jetzt aktuell so in meinem Prog:</p>
<pre><code class="language-csharp">for(int i=MitgliedNr+1; i&lt;gesNr; ++i) 
	{Mitglied[i-1]=Mitglied[i]; 
	Mitglied[--gesNr].Name[0]=' '; }
</code></pre>
<p>Ist es überhaupt richtig die gesNr als int zu definieren und mit der zahl 50 zu initialisieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/919853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/919853</guid><dc:creator><![CDATA[sarah1986]]></dc:creator><pubDate>Thu, 17 Nov 2005 09:47:28 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim Ausgeben on Thu, 17 Nov 2005 09:53:52 GMT]]></title><description><![CDATA[<p>Nein, gesNr belegst du immer mit der tatsächlichen Anzahl an Datensätzen (also - wenn du drei Personen eingetragen hast, steht dort drin 3, wenn eine gelöscht wird, bleibt 2 übrig).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/919858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/919858</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Thu, 17 Nov 2005 09:53:52 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim Ausgeben on Thu, 17 Nov 2005 10:21:14 GMT]]></title><description><![CDATA[<p>aber trotzdem funzt es bei mir nicht, ich glaube ich lasse das einfach weg. dann steht halt 0. und danach 2. ist mir langsam auch egal, aber trotzdem danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/919876</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/919876</guid><dc:creator><![CDATA[sarah1986]]></dc:creator><pubDate>Thu, 17 Nov 2005 10:21:14 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim Ausgeben on Thu, 17 Nov 2005 10:33:56 GMT]]></title><description><![CDATA[<p>wenn ich es so lasse, wie ich es wollte, speichert er neue einträge, nachdem ich etwas gelöscht habe, aber nicht mehr. normalerweise wird bei der funktion MitgliedNeu zuerst das erste leere feldelement gesucht. und dort soll er die daten reinschreiben. macht er aber net. er schreibt es nirgends rein.<br />
erklärt sich jmd. dazu bereit, sich mal meinen gesamtcode anzuschauen, woran das liegt. da er über 500 zeilen lang ist, am besten per mail</p>
]]></description><link>https://www.c-plusplus.net/forum/post/919884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/919884</guid><dc:creator><![CDATA[sarah1986]]></dc:creator><pubDate>Thu, 17 Nov 2005 10:33:56 GMT</pubDate></item></channel></rss>