<?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[Fließkommazahl errechne die nächst größeren Ganzzahl]]></title><description><![CDATA[<p>Hallo</p>
<p>ich habe eine Hausaufgabe bekommen:</p>
<p>Das Unterprogramm ceiling nehme als einzigen (Wert-) Parameter x eine Fließkommazahl. Als Ergebnis liefere das Unterprogramm die kleinste Ganzzahl zurück, die größer oder gleich x ist.<br />
Hinweis 1: Folgende zwei Beispiele sollen die Arbeitsweise des Unterprogramms ceiling erläutern:<br />
ceiling(3.14) = 4<br />
ceiling(-5.67) = -5<br />
Es darf keine „Typumwandlung“ zwischen Fließkommazahlen und Ganzzahlen benutzen. Das Unterprogramm soll stattdessen das Ergebnis in mehreren Schritten berechnen, ausgehend von einer von Ihnen zu definierenden Ganzzahl als Startwert. Vergleichsoperationen wie &gt;, ≥ etc. zwischen Fließkommazahlen und Ganzzahlen sind gestattet.</p>
<p>Ich brauche keinen fertigen Code, nur einen Hinweis wie ich das lösen könnte. Habe schon verschiedene Dinge probiert.</p>
<pre><code>void Test(double f_in)
{
	do
	{
		//f_in = f_in + 0.01;
		f_in = f_in + 0.000000000000001;
		cout &lt;&lt; &quot;f_in &quot; &lt;&lt; f_in &lt;&lt; &quot; f_in /  100000000000000 &quot; &lt;&lt; f_in /  100000000000000 &lt;&lt; &quot;\n&quot;;
	}while(f_in / 100000000000000 != 0.0);
	cout &lt;&lt; f_in &lt;&lt; &quot;\n&quot;;
}

void main()
{
	Test(2.9999999999999001);
	//Test(2.98);
	system(&quot;pause&quot;);
}
</code></pre>
<p>Das ganze läuft aber nicht zufriedenstellend. Aber bin ich auf dem richtigen Wege? Denke es hackt an den Nachkommastellen.....</p>
<p>Schreibe unter Windows7 <a href="http://VS2010.Net" rel="nofollow">VS2010.Net</a> in C++.</p>
<p>Bin für jede Hilfe Dankbar!!!!<br />
Danke fürs lesen und darüber nachdenken.<br />
Magier</p>
<p>P.S. Ja ich weiß der Code ist nicht perfekt (Variablen Bezeichnung) usw.....</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/305395/fließkommazahl-errechne-die-nächst-größeren-ganzzahl</link><generator>RSS for Node</generator><lastBuildDate>Sat, 08 Aug 2026 23:22:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/305395.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 27 Jun 2012 21:04:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fließkommazahl errechne die nächst größeren Ganzzahl on Wed, 27 Jun 2012 21:09:47 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>ich habe eine Hausaufgabe bekommen:</p>
<p>Das Unterprogramm ceiling nehme als einzigen (Wert-) Parameter x eine Fließkommazahl. Als Ergebnis liefere das Unterprogramm die kleinste Ganzzahl zurück, die größer oder gleich x ist.<br />
Hinweis 1: Folgende zwei Beispiele sollen die Arbeitsweise des Unterprogramms ceiling erläutern:<br />
ceiling(3.14) = 4<br />
ceiling(-5.67) = -5<br />
Es darf keine „Typumwandlung“ zwischen Fließkommazahlen und Ganzzahlen benutzen. Das Unterprogramm soll stattdessen das Ergebnis in mehreren Schritten berechnen, ausgehend von einer von Ihnen zu definierenden Ganzzahl als Startwert. Vergleichsoperationen wie &gt;, ≥ etc. zwischen Fließkommazahlen und Ganzzahlen sind gestattet.</p>
<p>Ich brauche keinen fertigen Code, nur einen Hinweis wie ich das lösen könnte. Habe schon verschiedene Dinge probiert.</p>
<pre><code>void Test(double f_in)
{
	do
	{
		//f_in = f_in + 0.01;
		f_in = f_in + 0.000000000000001;
		cout &lt;&lt; &quot;f_in &quot; &lt;&lt; f_in &lt;&lt; &quot; f_in /  100000000000000 &quot; &lt;&lt; f_in /  100000000000000 &lt;&lt; &quot;\n&quot;;
	}while(f_in / 100000000000000 != 0.0);
	cout &lt;&lt; f_in &lt;&lt; &quot;\n&quot;;
}

void main()
{
	Test(2.9999999999999001);
	//Test(2.98);
	system(&quot;pause&quot;);
}
</code></pre>
<p>Das ganze läuft aber nicht zufriedenstellend. Aber bin ich auf dem richtigen Wege? Denke es hackt an den Nachkommastellen.....</p>
<p>Schreibe unter Windows7 <a href="http://VS2010.Net" rel="nofollow">VS2010.Net</a> in C++.</p>
<p>Bin für jede Hilfe Dankbar!!!!<br />
Danke fürs lesen und darüber nachdenken.<br />
Magier</p>
<p>P.S. Ja ich weiß der Code ist nicht perfekt (Variablen Bezeichnung) usw.....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227934</guid><dc:creator><![CDATA[magier-phil]]></dc:creator><pubDate>Wed, 27 Jun 2012 21:09:47 GMT</pubDate></item><item><title><![CDATA[Reply to Fließkommazahl errechne die nächst größeren Ganzzahl on Wed, 27 Jun 2012 21:14:05 GMT]]></title><description><![CDATA[<p>Nein, du bist definitiv nicht auf dem richtigen Weg. Die gesuchte Lösung basiert wohl einfach auf der Idee, in einer Schleife die nächstgrößere/nächstkleinere Ganzzahl zu suchen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227936</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Wed, 27 Jun 2012 21:14:05 GMT</pubDate></item><item><title><![CDATA[Reply to Fließkommazahl errechne die nächst größeren Ganzzahl on Wed, 27 Jun 2012 21:22:28 GMT]]></title><description><![CDATA[<p>Ähm und das bedeutet....<br />
Eine schleife die alle Werte von Min bis Max double durchläuft und einen Vergleich nach Größer-Kleiner anstellt....</p>
<p>Denke ich sehe den Wald vor lauter Bäumen nicht mehr....<br />
Aber schon mal DANKE!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227943</guid><dc:creator><![CDATA[magier-phil]]></dc:creator><pubDate>Wed, 27 Jun 2012 21:22:28 GMT</pubDate></item><item><title><![CDATA[Reply to Fließkommazahl errechne die nächst größeren Ganzzahl on Wed, 27 Jun 2012 21:28:41 GMT]]></title><description><![CDATA[<p>Die Aufgabe ist mMn. komplett bescheuert.</p>
<p>Sie als <code>return ceil(x);</code> zu implementieren wird vermutlich nicht erwünscht sein.<br />
Und wenn man davon ausgeht dass ceil() verboten ist, dann werden wohl floor() und fmod() auch verboten sein. Und dann fängt es an lächerlich zu werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227944</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 27 Jun 2012 21:28:41 GMT</pubDate></item><item><title><![CDATA[Reply to Fließkommazahl errechne die nächst größeren Ganzzahl on Wed, 27 Jun 2012 21:29:40 GMT]]></title><description><![CDATA[<p>Naja wir sollen ja was lernen...ich frage schon gar nicht mehr nach Sinn und Unsinn..... :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227945</guid><dc:creator><![CDATA[magier-phil]]></dc:creator><pubDate>Wed, 27 Jun 2012 21:29:40 GMT</pubDate></item><item><title><![CDATA[Reply to Fließkommazahl errechne die nächst größeren Ganzzahl on Wed, 27 Jun 2012 21:33:22 GMT]]></title><description><![CDATA[<p>Ja, die Aufgabe ist komplett bescheuert. Wenn man wenigstens von einem IEEE 754 float ausgehen könnte, dann könnte man mit den Bits rummachen, aber so...</p>
<p>magier-phil schrieb:</p>
<blockquote>
<p>Eine schleife die alle Werte von Min bis Max double durchläuft und einen Vergleich nach Größer-Kleiner anstellt....</p>
</blockquote>
<p>Fast, du suchst ja nur nach Ganzzahlen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227947</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227947</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Wed, 27 Jun 2012 21:33:22 GMT</pubDate></item><item><title><![CDATA[Reply to Fließkommazahl errechne die nächst größeren Ganzzahl on Wed, 27 Jun 2012 21:40:12 GMT]]></title><description><![CDATA[<p>Du kannst ja mit 1 als erste Schätzung anfangen, und die Zahl solange verdoppeln, bis sie nicht mehr kleiner als die Eingangszahl ist. Dann hast Du eine obere Grenze. Die untere Grenze wäre dann genau halb so groß und anschließend halbierst Du dieses Intervall sukzessiv, bis der Abstand der Grenzen ==1 ist. Dann ist die obere Grenze das Ergebnis.<br />
Für negative Eingangszahlen musst Du es Dir selber nochmal überlegen.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227952</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227952</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Wed, 27 Jun 2012 21:40:12 GMT</pubDate></item><item><title><![CDATA[Reply to Fließkommazahl errechne die nächst größeren Ganzzahl on Wed, 27 Jun 2012 21:48:38 GMT]]></title><description><![CDATA[<p>Naja, durchprobieren ist etwas doof.<br />
Es gibt schon eine ansatzweise brauchbare Variante wie man das implementieren kann.</p>
<p>Kurzform: die Zahl so lange halbieren bis man 1,xxxxxxxx hat (mitzählen). Dann das ganze wieder rückwärts, wobei man immer den 1er vorne wegnimmt.<br />
Wenn man fertig ist, hat man (nur mehr) die Nachkommastellen der ursprünglichen Zahl.</p>
<p>Damit sollte sich dann arbeiten lassen.</p>
<p>EDIT: OK, die Variante von Werner ist auch gut.<br />
Wobei man ein Problem bei riesen Zahlen bekommen wird. Also welche die grösser als die Mantisse sind. Da müsste man zumindest tricksen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227953</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 27 Jun 2012 21:48:38 GMT</pubDate></item><item><title><![CDATA[Reply to Fließkommazahl errechne die nächst größeren Ganzzahl on Wed, 27 Jun 2012 21:53:35 GMT]]></title><description><![CDATA[<p>Ha HABE ES!!!!!!!!!!!!!!!!!!!!!!!!!</p>
<p>DANKE DANKE DANKE!!!</p>
<pre><code>void Test(double d_in)
{	
	for (int int_Zahl = INT_MIN;  int_Zahl &lt;= INT_MAX ; int_Zahl++ )
	{
		if( int_Zahl &gt; int(d_in))
		{
			cout &lt;&lt; int_Zahl &lt;&lt; &quot;\n&quot;;
			return;
		}
	}
}

void main()
{	
	cout &lt;&lt; &quot;ceiling(3.14) = &quot;;
	Test(3.14);
	cout &lt;&lt; &quot;ceiling(-5.67) = &quot;;
	Test(-5.67);
	system(&quot;pause&quot;);
}
</code></pre>
<p>Jetzt entspricht alles der Aufgabe!!!<br />
Herzlichen Dank für den Denkanstoß und so<br />
Wünsche eine gute Nacht!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227956</guid><dc:creator><![CDATA[magier-phil]]></dc:creator><pubDate>Wed, 27 Jun 2012 21:53:35 GMT</pubDate></item><item><title><![CDATA[Reply to Fließkommazahl errechne die nächst größeren Ganzzahl on Wed, 27 Jun 2012 21:50:38 GMT]]></title><description><![CDATA[<p>Ähm, da solltest nochmal ganz genau drüber nachdenken, vor allem über das int(d_in)...war das nicht verboten? Und wenn du das schon machst, wofür dann überhaupt der ganze Rest!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227959</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Wed, 27 Jun 2012 21:50:38 GMT</pubDate></item><item><title><![CDATA[Reply to Fließkommazahl errechne die nächst größeren Ganzzahl on Wed, 27 Jun 2012 21:57:33 GMT]]></title><description><![CDATA[<p>Ja hatte noch den alten Code....sorry...<br />
es muss natürlich</p>
<pre><code>{
       if( int_Zahl &gt; int(f_in))
	{
</code></pre>
<p>heißen nicht<br />
größer gleich.... soll ja den nächst größere Zeigen.<br />
Vergleiche sind expizit erlaubt!</p>
<blockquote>
<p>Vergleichsoperationen wie &gt;, ≥ etc. zwischen Fließkommazahlen und Ganzzahlen sind gestattet.</p>
</blockquote>
<p>DANKE!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227962</guid><dc:creator><![CDATA[magier-phil]]></dc:creator><pubDate>Wed, 27 Jun 2012 21:57:33 GMT</pubDate></item><item><title><![CDATA[Reply to Fließkommazahl errechne die nächst größeren Ganzzahl on Wed, 27 Jun 2012 22:02:05 GMT]]></title><description><![CDATA[<p>int(f_in) ist aber eine Typumwandlung. Lass das einfach weg...</p>
<p>btw: Was ist mit negativen Zahlen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227963</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Wed, 27 Jun 2012 22:02:05 GMT</pubDate></item><item><title><![CDATA[Reply to Fließkommazahl errechne die nächst größeren Ganzzahl on Wed, 27 Jun 2012 22:05:15 GMT]]></title><description><![CDATA[<p>dot schrieb:</p>
<blockquote>
<p>Und wenn du das schon machst, wofür dann überhaupt der ganze Rest!?</p>
</blockquote>
<p>Welcher Rest?? Was meinst du?</p>
<p>INT_MIN &lt;- Minimum von Integer (in &lt;climits&gt; festgelegt)<br />
INT_MAX &lt;- Maximum von Integer<br />
void main()<br />
{<br />
cout &lt;&lt; &quot;ceiling(3.14) = &quot;; //Ausgabe damit es so aussieht wie in der Aufgabenstellung<br />
Test(3.14);<br />
cout &lt;&lt; &quot;ceiling(-5.67) = &quot;;<br />
Test(-5.67);<br />
system(&quot;pause&quot;); //Erzeugt ein &quot;HALT&quot;....damit die Konsole offen bleibt<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227965</guid><dc:creator><![CDATA[magier-phil]]></dc:creator><pubDate>Wed, 27 Jun 2012 22:05:15 GMT</pubDate></item><item><title><![CDATA[Reply to Fließkommazahl errechne die nächst größeren Ganzzahl on Wed, 27 Jun 2012 22:13:58 GMT]]></title><description><![CDATA[<p>dot schrieb:</p>
<blockquote>
<p>int(f_in) ist aber eine Typumwandlung. Lass das einfach weg...<br />
btw: Was ist mit negativen Zahlen?</p>
</blockquote>
<p>Naja denke die Typumwandlung geht in Ordnung.<br />
Stimmt mit negativen Zahlen ist das Ergebnis zwar mathematisch richtig. Also der nächst größere Integer aber nicht nach Beispiel. Mhhhh....ach ich hasse das.<br />
Hat jemand eine Idee??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227968</guid><dc:creator><![CDATA[magier-phil]]></dc:creator><pubDate>Wed, 27 Jun 2012 22:13:58 GMT</pubDate></item><item><title><![CDATA[Reply to Fließkommazahl errechne die nächst größeren Ganzzahl on Wed, 27 Jun 2012 22:23:18 GMT]]></title><description><![CDATA[<p>Meine Lösung....</p>
<pre><code class="language-cpp">void Test(double d_in)
{	
	for (int int_Zahl = INT_MIN;  int_Zahl &lt;= INT_MAX ; int_Zahl++ )	
	{		
		if( int_Zahl &gt; int(d_in))
		{
			if(int_Zahl &gt;= 0)
			{
				cout &lt;&lt; int_Zahl &lt;&lt; &quot;\n&quot;;
			}
			else
			{
				cout &lt;&lt; int_Zahl - 1 &lt;&lt; &quot;\n&quot;;
			}
			return;
		}
	}
}

void main()
{	
	cout &lt;&lt; &quot;ceiling(3.14) = &quot;;
	Test(3.14);
	cout &lt;&lt; &quot;ceiling(-5.67) = &quot;;
	Test(-5.67);
	cout &lt;&lt; &quot;ceiling(0.67) = &quot;;
	Test(0.67);
	system(&quot;pause&quot;);
}
</code></pre>
<p>Nicht schön aber selten......und so stimmt die Ausgabe!</p>
<blockquote>
<p>ceiling(3.14) = 4<br />
ceiling(-5.67) = -5</p>
</blockquote>
<p>Und mit 0.XX läuft es auch...</p>
<p>Ausgabe:</p>
<blockquote>
<p>ceiling(3.14) = 4<br />
ceiling(-5.67) = -5<br />
ceiling(0.67) = 1<br />
Drücken Sie eine beliebige Taste . . .</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2227972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227972</guid><dc:creator><![CDATA[magier-phil]]></dc:creator><pubDate>Wed, 27 Jun 2012 22:23:18 GMT</pubDate></item><item><title><![CDATA[Reply to Fließkommazahl errechne die nächst größeren Ganzzahl on Wed, 27 Jun 2012 22:24:03 GMT]]></title><description><![CDATA[<p>Aber du verwendest immer noch die verbotene Typumwandlung und diese Lösung ist wahnsinnig langsam...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227973</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Wed, 27 Jun 2012 22:24:03 GMT</pubDate></item><item><title><![CDATA[Reply to Fließkommazahl errechne die nächst größeren Ganzzahl on Wed, 27 Jun 2012 22:33:15 GMT]]></title><description><![CDATA[<p>dot schrieb:</p>
<blockquote>
<p>Aber du verwendest immer noch die verbotene Typumwandlung und diese Lösung ist wahnsinnig langsam...</p>
</blockquote>
<p>Ja ich weiß...ist aber ne Klausur/Hausaufgabe....auf Speed kommt es nicht an. Und ja du hast recht ohne ist es besser. Scheinbar rundet int(XX)....<br />
so jetzt habe ich es...ohne Typenumwandlung....</p>
<pre><code>void Test(double d_in)
{	
	for (int int_Zahl = INT_MIN;  int_Zahl &lt;= INT_MAX ; int_Zahl++ )	
	{		
		if( int_Zahl &gt; d_in)
		{			
			cout &lt;&lt; int_Zahl &lt;&lt; &quot;\n&quot;;			
			return;
		}
	}
}
</code></pre>
<p>Benutzt INT_MIN/INT_MAX nur um den ganzen Bereich abzudecken.</p>
<blockquote>
<p>ceiling(3.14) = 4<br />
ceiling(-5.67) = -5<br />
ceiling(0.67) = 1<br />
Drücken Sie eine beliebige Taste . . .</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2227974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227974</guid><dc:creator><![CDATA[magier-phil]]></dc:creator><pubDate>Wed, 27 Jun 2012 22:33:15 GMT</pubDate></item><item><title><![CDATA[Reply to Fließkommazahl errechne die nächst größeren Ganzzahl on Wed, 27 Jun 2012 23:06:24 GMT]]></title><description><![CDATA[<p>magier-phil schrieb:</p>
<blockquote>
<p>dot schrieb:</p>
<blockquote>
<p>Aber du verwendest immer noch die verbotene Typumwandlung und diese Lösung ist wahnsinnig langsam...</p>
</blockquote>
<p>Ja ich weiß...ist aber ne Klausur/Hausaufgabe....auf Speed kommt es nicht an. Und ja du hast recht ohne ist es besser. Scheinbar rundet int(XX)....</p>
</blockquote>
<p>Nö, int(XX) rundet nicht, es schneidet einfach den Nachkommateil weg (&quot;truncate&quot;).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227976</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 27 Jun 2012 23:06:24 GMT</pubDate></item></channel></rss>