<?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[Class EInvalidOp wirft Exeption &amp;quot;Invalid floating point operation&amp;quot;]]></title><description><![CDATA[<p>Ich bin gerade dabei einen Genetischen Algorithmus in C++ zu schreiben. In meinem Programm wird zunächst in der &quot;main&quot; ein Objekt vom Typ TUrChromosom erstellt, in dessen Konstruktor wiederum ein Objekt der Klasse TPopulation erstellt wird, in dessen Konstruktor wiederum die Methode Organisiere Optimierung der Klasse TPopulation aufgerufen wird, in der dann der restliche Algorithmus abläuft.</p>
<p>Dass war jetzt mal grob erklärt wie mein Programm abläuft.</p>
<p>Mein Problem ist im Moment, dass sobald ich einen float Wert über eine get-Methode abfragen will oder einen float Wert einem anderen float Wert zuweisen oder hinzuaddieren will, wird die Exception &quot;Invalid floating point operation&quot; der Klasse EInvalidOp geworfen.<br />
Mir ist allerdings nicht bewusst, dass ich eine ungültige Operation durchgeführt hätte.</p>
<p>Hier hab ich nochmal das Codestück in dem die Exception ausgelöst wird.<br />
Das Programm löst die Exception in der Zeile aus wo die getHeight Methode aufgerufen wird.<br />
Falls ihr zum Beantworten meiner Frage das komplette Programm benötigt, kann ich es euch per Email schicken.</p>
<p>Vielen Dank für eure Mühen schon mal im Voraus!</p>
<pre><code>void TPopulation :: bewerten()
{
	TEChromosom *tmp;
	TList *myList;
	TContainer *packet_x;
	TContainer *packet_y;
	int _anzahl_spalten =0;
	float a_kosten_spalte = 0;
	float a_kosten = 0;
	float b_kosten_spalte = 0;
	float b_kosten = 0;
	float c_kosten_spalte = 0;
	float c_kosten = 0;
	float d_kosten_spalte = 0;
	float d_kosten = 0;
	float hoehe_x;
	float hoehe_y;
	float gewicht_x;
	float gewicht_y;
	float spaltenhoehe;
	float spaltengewicht;
	float _fitness;

	// Durchläuft Liste chrom_pool mit allen existierenden Individuen
	for( int i = 0; i &lt;= ( ( chrom_pool -&gt; Count )-1 ); i++ )
	{
		// tmp bekommt Referenz auf EntwicklungsChromosom an der Stelle [i]
		tmp = ( TEChromosom* ) chrom_pool -&gt; Items[i];

		spaltengewicht = 0;
		spaltenhoehe = 0;

		// myList erhält Referenz auf die Liste (TList) mit den Containern
		// des Entwicklungs Chromosoms
		myList = tmp -&gt; getContainerList();

		// Durchläuft Liste bestehend aus Elementen der Klasse TContainer
		for ( int k = 0; k &lt; myList -&gt; Count; k++ )
		{

			// Zugriff auf jeweils 2 Pakete in der Spalte die weiter unten
			// im Code verglichen werden sollen
			packet_x = (TContainer*) myList -&gt; Items[k];
			packet_y = (TContainer*) myList -&gt; Items[k+1];
			cout &lt;&lt; &quot;Testausgabe_1&quot;;
			getch();

			// Ermitteln der für die Bewertung relevanten Daten der Pakete
			hoehe_x = packet_x -&gt; GetHeight();  // Fehler u.a.
			cout &lt;&lt; &quot;Testausgabe_2&quot;;
			getch();
			hoehe_y = packet_y -&gt; GetHeight();

			gewicht_x = packet_x -&gt; GetWeight();
			gewicht_y = packet_y -&gt; GetWeight();

// Restlicher Code der Methode bewerten....
</code></pre>
<pre><code>float TContainer::GetHeight( )
{
	return fHeight;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/151340/class-einvalidop-wirft-exeption-quot-invalid-floating-point-operation-quot</link><generator>RSS for Node</generator><lastBuildDate>Sun, 06 Sep 2026 08:43:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/151340.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 25 Jun 2006 13:44:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Class EInvalidOp wirft Exeption &amp;quot;Invalid floating point operation&amp;quot; on Sun, 25 Jun 2006 13:44:43 GMT]]></title><description><![CDATA[<p>Ich bin gerade dabei einen Genetischen Algorithmus in C++ zu schreiben. In meinem Programm wird zunächst in der &quot;main&quot; ein Objekt vom Typ TUrChromosom erstellt, in dessen Konstruktor wiederum ein Objekt der Klasse TPopulation erstellt wird, in dessen Konstruktor wiederum die Methode Organisiere Optimierung der Klasse TPopulation aufgerufen wird, in der dann der restliche Algorithmus abläuft.</p>
<p>Dass war jetzt mal grob erklärt wie mein Programm abläuft.</p>
<p>Mein Problem ist im Moment, dass sobald ich einen float Wert über eine get-Methode abfragen will oder einen float Wert einem anderen float Wert zuweisen oder hinzuaddieren will, wird die Exception &quot;Invalid floating point operation&quot; der Klasse EInvalidOp geworfen.<br />
Mir ist allerdings nicht bewusst, dass ich eine ungültige Operation durchgeführt hätte.</p>
<p>Hier hab ich nochmal das Codestück in dem die Exception ausgelöst wird.<br />
Das Programm löst die Exception in der Zeile aus wo die getHeight Methode aufgerufen wird.<br />
Falls ihr zum Beantworten meiner Frage das komplette Programm benötigt, kann ich es euch per Email schicken.</p>
<p>Vielen Dank für eure Mühen schon mal im Voraus!</p>
<pre><code>void TPopulation :: bewerten()
{
	TEChromosom *tmp;
	TList *myList;
	TContainer *packet_x;
	TContainer *packet_y;
	int _anzahl_spalten =0;
	float a_kosten_spalte = 0;
	float a_kosten = 0;
	float b_kosten_spalte = 0;
	float b_kosten = 0;
	float c_kosten_spalte = 0;
	float c_kosten = 0;
	float d_kosten_spalte = 0;
	float d_kosten = 0;
	float hoehe_x;
	float hoehe_y;
	float gewicht_x;
	float gewicht_y;
	float spaltenhoehe;
	float spaltengewicht;
	float _fitness;

	// Durchläuft Liste chrom_pool mit allen existierenden Individuen
	for( int i = 0; i &lt;= ( ( chrom_pool -&gt; Count )-1 ); i++ )
	{
		// tmp bekommt Referenz auf EntwicklungsChromosom an der Stelle [i]
		tmp = ( TEChromosom* ) chrom_pool -&gt; Items[i];

		spaltengewicht = 0;
		spaltenhoehe = 0;

		// myList erhält Referenz auf die Liste (TList) mit den Containern
		// des Entwicklungs Chromosoms
		myList = tmp -&gt; getContainerList();

		// Durchläuft Liste bestehend aus Elementen der Klasse TContainer
		for ( int k = 0; k &lt; myList -&gt; Count; k++ )
		{

			// Zugriff auf jeweils 2 Pakete in der Spalte die weiter unten
			// im Code verglichen werden sollen
			packet_x = (TContainer*) myList -&gt; Items[k];
			packet_y = (TContainer*) myList -&gt; Items[k+1];
			cout &lt;&lt; &quot;Testausgabe_1&quot;;
			getch();

			// Ermitteln der für die Bewertung relevanten Daten der Pakete
			hoehe_x = packet_x -&gt; GetHeight();  // Fehler u.a.
			cout &lt;&lt; &quot;Testausgabe_2&quot;;
			getch();
			hoehe_y = packet_y -&gt; GetHeight();

			gewicht_x = packet_x -&gt; GetWeight();
			gewicht_y = packet_y -&gt; GetWeight();

// Restlicher Code der Methode bewerten....
</code></pre>
<pre><code>float TContainer::GetHeight( )
{
	return fHeight;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1085134</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1085134</guid><dc:creator><![CDATA[gernerh]]></dc:creator><pubDate>Sun, 25 Jun 2006 13:44:43 GMT</pubDate></item></channel></rss>