<?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[bug im mini-programm - ob jmnd mal eben drüberschauen könnte?]]></title><description><![CDATA[<p>abend zusammen... naja eher guten morgen^^</p>
<p>hab hier ein kleine programm, dass an sich ja schon halbwegs brauchbar funktioniert - wenn ich aber nu 9 zeichen (durch leerzeichen getrennt) eingebe und mir diese ausgeben lasse, dann geht das gerade eben noch gut^^ - bei einem weiteren eingegeben zeichen, dass ich aus der queue lesen will versucht er anscheinend auf eine falsche speicheraddresse zuzugreifen. - ich such scho seit 2h find aber meinen eigenen fehler (wie immer <sub>.</sub>) net. sieht ihn jmnd?</p>
<p>header</p>
<pre><code>#ifndef TEXT_QUEUE_H
#define TEXT_QUEUE_H
#include&lt;string&gt;
const int max_queue_size=3;
const int max_queue_number=3;

using namespace std;

typedef struct t_w{
	string single_word;
}text_word;

typedef struct queue{
	int front;
	int rear;
	text_word text[max_queue_size];
	bool is_empty;
}word_queue;

typedef struct hyper_hyper{
	int front_queue;
	int rear_queue;
	bool is_empty;		//is_empty=true , wenn genau 1 grund-queue vorhanden ist
	word_queue* queues[max_queue_number];
}text_queue;

bool append(text_queue* p_text, text_word in);
text_word extract(text_queue* pointer_all);
bool append(text_queue* p_text, word_queue* p_queue);
bool is_full(text_queue* p_text);

#endif
</code></pre>
<p>main</p>
<pre><code>#include&lt;iostream&gt;
#include&lt;string&gt;
#include&quot;text_queue.h&quot;

using namespace std;

int main(int argc, char* argv[])
{
	int eingabe;
	text_word input, output;
	word_queue* pointer=NULL;
	text_queue* pointer_hyper=NULL;
	text_queue hyper;
	hyper.front_queue=hyper.rear_queue=0;
	hyper.is_empty=true;
	pointer_hyper=&amp;hyper;
	int counter;

	do
	{
		cout&lt;&lt;&quot;Bitte druecken sie die:\n&quot;;
		cout&lt;&lt;&quot;1 um Woerter einzugeben!\n&quot;;
		cout&lt;&lt;&quot;2 um Woerter auszulesen!\n&quot;;
		cout&lt;&lt;&quot;3 fuer Abbruch!\n&quot;;
		cin&gt;&gt;eingabe;

		switch(eingabe)
		{
		case 3:
		{
			cout&lt;&lt;&quot;Abbruch durch Benutzer...&quot;&lt;&lt;endl;

			if(!hyper.is_empty)
			{
				pointer=NULL;
				delete pointer_hyper;	//loeschen aller  evtl. new-erzeugten queues, allerdings mäkelt er hier etwas
				pointer_hyper=NULL;
			}
				return 0;
		}

		case 1:
		{
			cout&lt;&lt;&quot;Bitte geben sie die Woerter ein, bzw. 'exit' fuer Abbruch&quot;&lt;&lt;endl;
			do
			{
				cin&gt;&gt;input.single_word;
				if (input.single_word==&quot;exit&quot;)	//schleifen-'ausbruch'
					break;

				if(hyper.is_empty)
				{ 
					hyper.queues[hyper.rear_queue]=new word_queue;
					hyper.queues[hyper.rear_queue]-&gt;is_empty=true;
					hyper.is_empty=false;
				}

				if(!append(pointer_hyper, input))	//platz im aktuellen queue?
				{
					if(append(pointer_hyper, pointer))
					{	
						hyper.queues[hyper.rear_queue]=new word_queue;
						hyper.queues[hyper.rear_queue]-&gt;is_empty=true;
						hyper.is_empty=false;
						pointer=hyper.queues[hyper.rear_queue];
					}
					if(!append(pointer_hyper, input))
						cout&lt;&lt;&quot;'Warteschlange' voll! Es passt &quot;&lt;&lt;input.single_word&lt;&lt;&quot; &quot;&lt;&lt;&quot;nicht mehr hinein!\n&quot;;
				}

			}
			while(1);
		    break;   
		}
		case 2:
		{
			if(hyper.is_empty)
			{
				cout&lt;&lt;&quot;keine Woerter zum auslesen vorhanden!&quot;&lt;&lt;endl;
				break;
			}
			cout&lt;&lt;&quot;Wie viele Woerter sollen ausgelesen werden?&quot;;
			cin&gt;&gt;eingabe;
			counter=eingabe;
			while(counter&gt;0)
			{
				if(!hyper.is_empty)
				{
					pointer=hyper.queues[hyper.front_queue];
					output=extract(pointer_hyper);
					cout&lt;&lt;output.single_word&lt;&lt;&quot; &quot;;
					counter--;
					if(pointer-&gt;is_empty)
					{						
						delete pointer;
						pointer=NULL;	
					}

				}
				else break;
			}
			cout&lt;&lt;&quot;\nwurde aus der 'Warteschlange' entfernt\n\n&quot;;
			if(counter&gt;0)
				cout&lt;&lt;counter&lt;&lt;&quot; Stellen koennen nicht gelesen werden, da sie nicht gefuellt sind!\n\n&quot;;
			break;
		}
		default:
		{
			cout&lt;&lt;&quot;ungueltige Eingabe - Bitte wiederholen!\n\n&quot;;
			break;
		}

		}
	}while(1);

	return 0;
}
</code></pre>
<p>und funktions-cpp</p>
<pre><code>#include&lt;string&gt;
#include&quot;text_queue.h&quot;

bool append(text_queue* p_text, text_word in)
{
	bool is_true =false;
	if(p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;is_empty)		//wenn das jeweilige queue leer ist, werden front und rear je auf 0 gesetzt, um damit arbeiten zu können
	{p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;rear=p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;front=0;}

	if(p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;rear+1==max_queue_size)
	{		
		if(p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;front!=0)
		{
			if(!p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;is_empty)
			{
				p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;rear=0;				
			}
			p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;text[p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;rear]=in;
			p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;is_empty=false;
			is_true=true;
		}
		return is_true;

	}

	if(p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;rear+1&lt;max_queue_size&amp;&amp;p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;rear+1!=p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;front)
	{
		is_true=true;
		if(p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;is_empty)
		{
			p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;is_empty=false;
		}
		else
		{
			p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;rear++;
		}
		p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;text[p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;rear]=in;
	}
	return is_true;
}

text_word extract(text_queue* p_hyper)
{
	text_word temp;

	temp =p_hyper-&gt;queues[p_hyper-&gt;front_queue]-&gt;text[p_hyper-&gt;queues[p_hyper-&gt;front_queue]-&gt;front];

	if(p_hyper-&gt;queues[p_hyper-&gt;front_queue]-&gt;front==p_hyper-&gt;queues[p_hyper-&gt;front_queue]-&gt;rear)
	{
		p_hyper-&gt;queues[p_hyper-&gt;front_queue]-&gt;is_empty=true;
		if(p_hyper-&gt;front_queue==p_hyper-&gt;rear_queue)
		{			
			p_hyper-&gt;is_empty=true;
		}
		if(p_hyper-&gt;front_queue+1==max_queue_number)
		{
			p_hyper-&gt;front_queue=0;
		}

		else
		{
			p_hyper-&gt;front_queue++;
		}
	}
	else if(p_hyper-&gt;queues[p_hyper-&gt;front_queue]-&gt;front+1==max_queue_size)
	{
		p_hyper-&gt;queues[p_hyper-&gt;front_queue]-&gt;front=0;
	}
	else {p_hyper-&gt;queues[p_hyper-&gt;front_queue]-&gt;front++;}

	return temp;
}
/*wir haben text_word extract verwendet, da diese Variante mit weniger erzeugten Variablen auskommt
/*und das Problem eines nicht vorhandenen Wortes über bool is_empty gelöst wird*/

bool append(text_queue* p_text, word_queue* p_queue)
{	
	bool is_true=false;
	if(p_text-&gt;rear_queue+1==max_queue_number)
	{
		if(p_text-&gt;front_queue==0)
		{
			return is_true;
		}
		else
		{
			p_text-&gt;rear_queue=0;
		}
	}					
	else 
	{	
		if(p_text-&gt;rear_queue+1==p_text-&gt;front_queue)
		{
			return is_true;
		}
		else
			p_text-&gt;rear_queue++;
	}
	is_true=true;
	return is_true;
}
</code></pre>
<p>danke für jede hilfe - auch abseits des angesprochenen bugs.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/198916/bug-im-mini-programm-ob-jmnd-mal-eben-drüberschauen-könnte</link><generator>RSS for Node</generator><lastBuildDate>Fri, 02 Oct 2026 18:26:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/198916.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 27 Nov 2007 03:17:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to bug im mini-programm - ob jmnd mal eben drüberschauen könnte? on Tue, 27 Nov 2007 03:17:10 GMT]]></title><description><![CDATA[<p>abend zusammen... naja eher guten morgen^^</p>
<p>hab hier ein kleine programm, dass an sich ja schon halbwegs brauchbar funktioniert - wenn ich aber nu 9 zeichen (durch leerzeichen getrennt) eingebe und mir diese ausgeben lasse, dann geht das gerade eben noch gut^^ - bei einem weiteren eingegeben zeichen, dass ich aus der queue lesen will versucht er anscheinend auf eine falsche speicheraddresse zuzugreifen. - ich such scho seit 2h find aber meinen eigenen fehler (wie immer <sub>.</sub>) net. sieht ihn jmnd?</p>
<p>header</p>
<pre><code>#ifndef TEXT_QUEUE_H
#define TEXT_QUEUE_H
#include&lt;string&gt;
const int max_queue_size=3;
const int max_queue_number=3;

using namespace std;

typedef struct t_w{
	string single_word;
}text_word;

typedef struct queue{
	int front;
	int rear;
	text_word text[max_queue_size];
	bool is_empty;
}word_queue;

typedef struct hyper_hyper{
	int front_queue;
	int rear_queue;
	bool is_empty;		//is_empty=true , wenn genau 1 grund-queue vorhanden ist
	word_queue* queues[max_queue_number];
}text_queue;

bool append(text_queue* p_text, text_word in);
text_word extract(text_queue* pointer_all);
bool append(text_queue* p_text, word_queue* p_queue);
bool is_full(text_queue* p_text);

#endif
</code></pre>
<p>main</p>
<pre><code>#include&lt;iostream&gt;
#include&lt;string&gt;
#include&quot;text_queue.h&quot;

using namespace std;

int main(int argc, char* argv[])
{
	int eingabe;
	text_word input, output;
	word_queue* pointer=NULL;
	text_queue* pointer_hyper=NULL;
	text_queue hyper;
	hyper.front_queue=hyper.rear_queue=0;
	hyper.is_empty=true;
	pointer_hyper=&amp;hyper;
	int counter;

	do
	{
		cout&lt;&lt;&quot;Bitte druecken sie die:\n&quot;;
		cout&lt;&lt;&quot;1 um Woerter einzugeben!\n&quot;;
		cout&lt;&lt;&quot;2 um Woerter auszulesen!\n&quot;;
		cout&lt;&lt;&quot;3 fuer Abbruch!\n&quot;;
		cin&gt;&gt;eingabe;

		switch(eingabe)
		{
		case 3:
		{
			cout&lt;&lt;&quot;Abbruch durch Benutzer...&quot;&lt;&lt;endl;

			if(!hyper.is_empty)
			{
				pointer=NULL;
				delete pointer_hyper;	//loeschen aller  evtl. new-erzeugten queues, allerdings mäkelt er hier etwas
				pointer_hyper=NULL;
			}
				return 0;
		}

		case 1:
		{
			cout&lt;&lt;&quot;Bitte geben sie die Woerter ein, bzw. 'exit' fuer Abbruch&quot;&lt;&lt;endl;
			do
			{
				cin&gt;&gt;input.single_word;
				if (input.single_word==&quot;exit&quot;)	//schleifen-'ausbruch'
					break;

				if(hyper.is_empty)
				{ 
					hyper.queues[hyper.rear_queue]=new word_queue;
					hyper.queues[hyper.rear_queue]-&gt;is_empty=true;
					hyper.is_empty=false;
				}

				if(!append(pointer_hyper, input))	//platz im aktuellen queue?
				{
					if(append(pointer_hyper, pointer))
					{	
						hyper.queues[hyper.rear_queue]=new word_queue;
						hyper.queues[hyper.rear_queue]-&gt;is_empty=true;
						hyper.is_empty=false;
						pointer=hyper.queues[hyper.rear_queue];
					}
					if(!append(pointer_hyper, input))
						cout&lt;&lt;&quot;'Warteschlange' voll! Es passt &quot;&lt;&lt;input.single_word&lt;&lt;&quot; &quot;&lt;&lt;&quot;nicht mehr hinein!\n&quot;;
				}

			}
			while(1);
		    break;   
		}
		case 2:
		{
			if(hyper.is_empty)
			{
				cout&lt;&lt;&quot;keine Woerter zum auslesen vorhanden!&quot;&lt;&lt;endl;
				break;
			}
			cout&lt;&lt;&quot;Wie viele Woerter sollen ausgelesen werden?&quot;;
			cin&gt;&gt;eingabe;
			counter=eingabe;
			while(counter&gt;0)
			{
				if(!hyper.is_empty)
				{
					pointer=hyper.queues[hyper.front_queue];
					output=extract(pointer_hyper);
					cout&lt;&lt;output.single_word&lt;&lt;&quot; &quot;;
					counter--;
					if(pointer-&gt;is_empty)
					{						
						delete pointer;
						pointer=NULL;	
					}

				}
				else break;
			}
			cout&lt;&lt;&quot;\nwurde aus der 'Warteschlange' entfernt\n\n&quot;;
			if(counter&gt;0)
				cout&lt;&lt;counter&lt;&lt;&quot; Stellen koennen nicht gelesen werden, da sie nicht gefuellt sind!\n\n&quot;;
			break;
		}
		default:
		{
			cout&lt;&lt;&quot;ungueltige Eingabe - Bitte wiederholen!\n\n&quot;;
			break;
		}

		}
	}while(1);

	return 0;
}
</code></pre>
<p>und funktions-cpp</p>
<pre><code>#include&lt;string&gt;
#include&quot;text_queue.h&quot;

bool append(text_queue* p_text, text_word in)
{
	bool is_true =false;
	if(p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;is_empty)		//wenn das jeweilige queue leer ist, werden front und rear je auf 0 gesetzt, um damit arbeiten zu können
	{p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;rear=p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;front=0;}

	if(p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;rear+1==max_queue_size)
	{		
		if(p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;front!=0)
		{
			if(!p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;is_empty)
			{
				p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;rear=0;				
			}
			p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;text[p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;rear]=in;
			p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;is_empty=false;
			is_true=true;
		}
		return is_true;

	}

	if(p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;rear+1&lt;max_queue_size&amp;&amp;p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;rear+1!=p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;front)
	{
		is_true=true;
		if(p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;is_empty)
		{
			p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;is_empty=false;
		}
		else
		{
			p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;rear++;
		}
		p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;text[p_text-&gt;queues[p_text-&gt;rear_queue]-&gt;rear]=in;
	}
	return is_true;
}

text_word extract(text_queue* p_hyper)
{
	text_word temp;

	temp =p_hyper-&gt;queues[p_hyper-&gt;front_queue]-&gt;text[p_hyper-&gt;queues[p_hyper-&gt;front_queue]-&gt;front];

	if(p_hyper-&gt;queues[p_hyper-&gt;front_queue]-&gt;front==p_hyper-&gt;queues[p_hyper-&gt;front_queue]-&gt;rear)
	{
		p_hyper-&gt;queues[p_hyper-&gt;front_queue]-&gt;is_empty=true;
		if(p_hyper-&gt;front_queue==p_hyper-&gt;rear_queue)
		{			
			p_hyper-&gt;is_empty=true;
		}
		if(p_hyper-&gt;front_queue+1==max_queue_number)
		{
			p_hyper-&gt;front_queue=0;
		}

		else
		{
			p_hyper-&gt;front_queue++;
		}
	}
	else if(p_hyper-&gt;queues[p_hyper-&gt;front_queue]-&gt;front+1==max_queue_size)
	{
		p_hyper-&gt;queues[p_hyper-&gt;front_queue]-&gt;front=0;
	}
	else {p_hyper-&gt;queues[p_hyper-&gt;front_queue]-&gt;front++;}

	return temp;
}
/*wir haben text_word extract verwendet, da diese Variante mit weniger erzeugten Variablen auskommt
/*und das Problem eines nicht vorhandenen Wortes über bool is_empty gelöst wird*/

bool append(text_queue* p_text, word_queue* p_queue)
{	
	bool is_true=false;
	if(p_text-&gt;rear_queue+1==max_queue_number)
	{
		if(p_text-&gt;front_queue==0)
		{
			return is_true;
		}
		else
		{
			p_text-&gt;rear_queue=0;
		}
	}					
	else 
	{	
		if(p_text-&gt;rear_queue+1==p_text-&gt;front_queue)
		{
			return is_true;
		}
		else
			p_text-&gt;rear_queue++;
	}
	is_true=true;
	return is_true;
}
</code></pre>
<p>danke für jede hilfe - auch abseits des angesprochenen bugs.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1410685</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1410685</guid><dc:creator><![CDATA[moep]]></dc:creator><pubDate>Tue, 27 Nov 2007 03:17:10 GMT</pubDate></item><item><title><![CDATA[Reply to bug im mini-programm - ob jmnd mal eben drüberschauen könnte? on Tue, 27 Nov 2007 08:33:33 GMT]]></title><description><![CDATA[<p>Wo bleibt der Debugger denn hängen?</p>
<p>Ich glaube nicht, dass sich jemand freiwillig durch diesen Code gräbt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1410766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1410766</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Tue, 27 Nov 2007 08:33:33 GMT</pubDate></item><item><title><![CDATA[Reply to bug im mini-programm - ob jmnd mal eben drüberschauen könnte? on Tue, 27 Nov 2007 09:03:14 GMT]]></title><description><![CDATA[<p>hat sich soeben erledigt - thread kann geschlossen werden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1410784</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1410784</guid><dc:creator><![CDATA[moep]]></dc:creator><pubDate>Tue, 27 Nov 2007 09:03:14 GMT</pubDate></item><item><title><![CDATA[Reply to bug im mini-programm - ob jmnd mal eben drüberschauen könnte? on Tue, 27 Nov 2007 14:22:32 GMT]]></title><description><![CDATA[<blockquote>
<p>hyper_hyper</p>
</blockquote>
<p>Hmm ... wie heißt der DJ noch gleich? Aja Scooter-Fan? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1411041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1411041</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Tue, 27 Nov 2007 14:22:32 GMT</pubDate></item></channel></rss>