<?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[C++ Dezimalzahl in Excelspaltennamen umwandeln]]></title><description><![CDATA[<p>Hallo Community,</p>
<p>ich habe bei einem vermeintlich Funktionierenden kleinen Programm das Dezimalzahlen in in Excel Spaltennamen umwandelt durch Zufall einen Bug<br />
entdeckt den ich mir nicht erklären kann.<br />
Es ist bei der Zahl 1248 als Ergebnis liefert er mir AV@ jedoch müsste es eigentlich AUZ sein.<br />
Ich dache schon an einen Rundungsfehler jedoch muss man ja immer abrunden sonst sind viele anderen Werte auch Falsch.</p>
<pre><code>int main()
{
	int zahl = 0;
	int reste[26];
	int zaehler = 0;
	int neu = 0;
	cout &lt;&lt; &quot;Dezimal: &quot;;
	cin &gt;&gt; zahl;
	neu = zahl;
	do
	{
		reste[zaehler++] = neu % 26;
		neu /= 26;
	} while (neu != 0);

	string erg = &quot;Excelspalte: &quot;;
	for (int l = zaehler - 1; l&gt;-1; l--)
	{
		erg += (char)(64 + reste[l]);
	}
	cout &lt;&lt; erg &lt;&lt; endl;
	cin &gt;&gt; erg;
	return 0;
}
</code></pre>
<p>PS: ich bin C++ Anfänger also bitte nicht zu komplizierte Erklärungen <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>LG<br />
DerGast</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/333206/c-dezimalzahl-in-excelspaltennamen-umwandeln</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 05:22:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/333206.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 18 Jun 2015 14:40:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to C++ Dezimalzahl in Excelspaltennamen umwandeln on Thu, 18 Jun 2015 14:40:30 GMT]]></title><description><![CDATA[<p>Hallo Community,</p>
<p>ich habe bei einem vermeintlich Funktionierenden kleinen Programm das Dezimalzahlen in in Excel Spaltennamen umwandelt durch Zufall einen Bug<br />
entdeckt den ich mir nicht erklären kann.<br />
Es ist bei der Zahl 1248 als Ergebnis liefert er mir AV@ jedoch müsste es eigentlich AUZ sein.<br />
Ich dache schon an einen Rundungsfehler jedoch muss man ja immer abrunden sonst sind viele anderen Werte auch Falsch.</p>
<pre><code>int main()
{
	int zahl = 0;
	int reste[26];
	int zaehler = 0;
	int neu = 0;
	cout &lt;&lt; &quot;Dezimal: &quot;;
	cin &gt;&gt; zahl;
	neu = zahl;
	do
	{
		reste[zaehler++] = neu % 26;
		neu /= 26;
	} while (neu != 0);

	string erg = &quot;Excelspalte: &quot;;
	for (int l = zaehler - 1; l&gt;-1; l--)
	{
		erg += (char)(64 + reste[l]);
	}
	cout &lt;&lt; erg &lt;&lt; endl;
	cin &gt;&gt; erg;
	return 0;
}
</code></pre>
<p>PS: ich bin C++ Anfänger also bitte nicht zu komplizierte Erklärungen <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>LG<br />
DerGast</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2457091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2457091</guid><dc:creator><![CDATA[DerGast]]></dc:creator><pubDate>Thu, 18 Jun 2015 14:40:30 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Dezimalzahl in Excelspaltennamen umwandeln on Thu, 18 Jun 2015 15:18:58 GMT]]></title><description><![CDATA[<p>Es liegt an der Zählweise. Du bildest 1 auf A ab und 26 auf Z. Das Modulo gibt dir aber Zahlen von 0 bis 25. Es ist in der Informatik auch eher üblich bei 0 mit den Zählen anzufangen.</p>
<p>Du müsstest also deinen Code so ändern das 0 =&gt; A und 25 =&gt; Z umgewandelt wird. Damit funktioniert der Algorithmus, ist allerdings aus Sicht des Benutzers immer um 1 daneben, weil der ja mit 1 anfängt zu zählen. Dafür brauchst du von der Eingabe einfach nur 1 abziehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2457107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2457107</guid><dc:creator><![CDATA[Tobiking2]]></dc:creator><pubDate>Thu, 18 Jun 2015 15:18:58 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Dezimalzahl in Excelspaltennamen umwandeln on Thu, 18 Jun 2015 20:58:46 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">for (int l = zaehler - 1; l&gt;-1; l--)
    {
        erg += (char)(64 + reste[l]);
    }
</code></pre>
<ol>
<li><code>l</code> bzw. <code>1</code> sind schwer auseinanderzuhalten. <code>l</code> ist von daher ein schlechter Variablenname.<br />
Üblicherweise nimmt man <code>i</code> , dann <code>j</code> , dann <code>k</code> . Spätestens, wenn man dann auch noch <code>l</code> braucht, sollte man über ein Refactoring nachdenken - vielleicht aber auch schon bei <code>j</code> .</li>
</ol>
<p>2. Wiederverwende doch einfach <code>zaehler</code> und lern den &quot;going-to&quot;-Operator kennen*</p>
<pre><code class="language-cpp">while(zaehler--&gt;0)
        erg += 'A'+reste[zaehler];
</code></pre>
<p>(*) den &quot;going-to&quot; operator gibt es nicht. Ueberleg mal, wie der Compiler <code>zaehler--&gt;0</code> interpretiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2457142</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2457142</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Thu, 18 Jun 2015 20:58:46 GMT</pubDate></item></channel></rss>