<?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[Änfängerprogramm: gut oder schlecht???]]></title><description><![CDATA[<p>hallo, bin mit meinen c++-kenntnissen noch ganz am anfang und ahbe jetzt mein erstes programm geschrieben, eine konsolenanwendung. wie gesagt ich kann noch kaum was, habe erst gelernt wie man mit variablen umgeht usw.<br />
also jetzt wollte ich mal wissen ob der code von meinem taschenrechner gut oder schlecht geschrieben ist, also was ich verbessern könnte bzw. wo fehler unter bestimmten bedingungen auftreten können oder was ich mir hätte sparen, etc. können, läuft aber eigentlich ganz gut soweit!</p>
<pre><code>#include&lt;iostream&gt;
#include&lt;string&gt;
using namespace std;

int main()
{
	float z1=0,z2=0;
	string op,schleife=&quot;ja&quot;;
	while (schleife==&quot;ja&quot;)
	{
		cout&lt;&lt;&quot;\n********NEUE RECHNUNG********\n\nErste Zahl: &quot;;
		cin&gt;&gt;z1;
		cout&lt;&lt;&quot;Operator: &quot;;
		cin&gt;&gt;op;
		while (op!=&quot;=&quot;)
		{
			cout&lt;&lt;&quot;Naechste Zahl: &quot;;
			cin&gt;&gt;z2;
			if (op==&quot;+&quot;)
				z1=z1+z2;
			if (op==&quot;-&quot;)
				z1=z1-z2;
			if (op==&quot;*&quot;)
				z1=z1*z2;
			if (op==&quot;/&quot;)
				z1=z1/z2;
			cout&lt;&lt;&quot;Operator: &quot;;
			cin&gt;&gt;op;
		}
		cout&lt;&lt;&quot;Ergebnis: &quot;&lt;&lt;z1&lt;&lt;&quot;\n\n*******RECHNUNG BEENDET*******\n\n&quot;;
		schleife=&quot;ka&quot;;
		while ((schleife!=&quot;ja&quot;)&amp;&amp;(schleife!=&quot;nein&quot;))
		{
			cout&lt;&lt;&quot;Noch eine Rechnung? (Antwortmoeglichkeiten: 'ja' und 'nein') &quot;;
			cin&gt;&gt;schleife;
		}
	}
	return 0;
}
</code></pre>
<p>da ist noch eine frage, wie kann ich überprüfen ob für zahl1 und zahl2 nur zahlen eingegeben werde, bei buchstaben bekomme ich nämlich totale probleme, da dann irgendein mist ausgegeben wird, der sich dann immer wiederholt...</p>
<p>thx so far, Mr. Pink</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/143510/änfängerprogramm-gut-oder-schlecht</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 06:48:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/143510.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 09 Apr 2006 11:12:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Änfängerprogramm: gut oder schlecht??? on Sun, 09 Apr 2006 11:12:14 GMT]]></title><description><![CDATA[<p>hallo, bin mit meinen c++-kenntnissen noch ganz am anfang und ahbe jetzt mein erstes programm geschrieben, eine konsolenanwendung. wie gesagt ich kann noch kaum was, habe erst gelernt wie man mit variablen umgeht usw.<br />
also jetzt wollte ich mal wissen ob der code von meinem taschenrechner gut oder schlecht geschrieben ist, also was ich verbessern könnte bzw. wo fehler unter bestimmten bedingungen auftreten können oder was ich mir hätte sparen, etc. können, läuft aber eigentlich ganz gut soweit!</p>
<pre><code>#include&lt;iostream&gt;
#include&lt;string&gt;
using namespace std;

int main()
{
	float z1=0,z2=0;
	string op,schleife=&quot;ja&quot;;
	while (schleife==&quot;ja&quot;)
	{
		cout&lt;&lt;&quot;\n********NEUE RECHNUNG********\n\nErste Zahl: &quot;;
		cin&gt;&gt;z1;
		cout&lt;&lt;&quot;Operator: &quot;;
		cin&gt;&gt;op;
		while (op!=&quot;=&quot;)
		{
			cout&lt;&lt;&quot;Naechste Zahl: &quot;;
			cin&gt;&gt;z2;
			if (op==&quot;+&quot;)
				z1=z1+z2;
			if (op==&quot;-&quot;)
				z1=z1-z2;
			if (op==&quot;*&quot;)
				z1=z1*z2;
			if (op==&quot;/&quot;)
				z1=z1/z2;
			cout&lt;&lt;&quot;Operator: &quot;;
			cin&gt;&gt;op;
		}
		cout&lt;&lt;&quot;Ergebnis: &quot;&lt;&lt;z1&lt;&lt;&quot;\n\n*******RECHNUNG BEENDET*******\n\n&quot;;
		schleife=&quot;ka&quot;;
		while ((schleife!=&quot;ja&quot;)&amp;&amp;(schleife!=&quot;nein&quot;))
		{
			cout&lt;&lt;&quot;Noch eine Rechnung? (Antwortmoeglichkeiten: 'ja' und 'nein') &quot;;
			cin&gt;&gt;schleife;
		}
	}
	return 0;
}
</code></pre>
<p>da ist noch eine frage, wie kann ich überprüfen ob für zahl1 und zahl2 nur zahlen eingegeben werde, bei buchstaben bekomme ich nämlich totale probleme, da dann irgendein mist ausgegeben wird, der sich dann immer wiederholt...</p>
<p>thx so far, Mr. Pink</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1033680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1033680</guid><dc:creator><![CDATA[Mr. Pink]]></dc:creator><pubDate>Sun, 09 Apr 2006 11:12:14 GMT</pubDate></item><item><title><![CDATA[Reply to Änfängerprogramm: gut oder schlecht??? on Sun, 09 Apr 2006 11:15:05 GMT]]></title><description><![CDATA[<p>LOL. der string schleife ist voll lustig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1033681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1033681</guid><dc:creator><![CDATA[s.]]></dc:creator><pubDate>Sun, 09 Apr 2006 11:15:05 GMT</pubDate></item><item><title><![CDATA[Reply to Änfängerprogramm: gut oder schlecht??? on Sun, 09 Apr 2006 11:33:34 GMT]]></title><description><![CDATA[<p>s. schrieb:</p>
<blockquote>
<p>LOL. der string schleife ist voll lustig.</p>
</blockquote>
<p>Also,ich hab schon bedeutend schlechtere Anfängercodes gesehen.<br />
Für nen absoluten Anfänger finde ich es eigentlich ganz ok.<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12869">@Mr.Pink</a>:<br />
Wenn du es verbessern möchtest dann überprüf nach den Eingaben über cin den Zustand von cin.Bei einem Fehlerzustand setzt du den Status zurück und löschst die fehlerhaften Daten aus dem Stream.<br />
Momentan muss der User korrekte Daten eingeben.<br />
Probier mal ,z.B. bei der Eingabe der ersten Zahl, nen Buchstaben anstelle einer Zahl einzugeben.Dann siehst du wofür das gut ist <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>MfG Spacelord</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1033696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1033696</guid><dc:creator><![CDATA[Spacelord]]></dc:creator><pubDate>Sun, 09 Apr 2006 11:33:34 GMT</pubDate></item><item><title><![CDATA[Reply to Änfängerprogramm: gut oder schlecht??? on Sun, 09 Apr 2006 12:01:49 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>für nen Anfänger sieht das schon ganz gut aus. Ich sehe ein int main (anstatt void), ich sehe aktuelle Header und ich sehe sauber formatierten Code. Aber mittels string auf Terminierung der Schleife zu prüfen, ist nicht so cool. Außerdem brauchst du für den Operator auch nur ein char. Mein Vorschlag:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

int main() {
  char schleife;

  do {
    float z1=0, z2=0;

    cout&lt;&lt;&quot;\n********NEUE RECHNUNG********\n\n&quot;;
    cout&lt;&lt;&quot;Erste Zahl: &quot;;
    cin&gt;&gt;z1;

    char op;
    do {
      cout&lt;&lt;&quot;Operator: &quot;;
      cin&gt;&gt;op;

      cout&lt;&lt;&quot;Naechste Zahl: &quot;;
      cin&gt;&gt;z2;

      switch (op) {
        case '+': z1 += z2; break;
        case '-': z1 -= z2; break;
        case '*': z1 *= z2; break;
        case '/': z1 /= z2; break;
        default: cerr&lt;&lt;&quot;Falscher Operator\n&quot;; 
      }
    }while (op != '=');

    cout&lt;&lt;&quot;Ergebnis: &quot;&lt;&lt;z1&lt;&lt;'\n';
    cout&lt;&lt;&quot;Noch eine Rechnung(j/n)?&quot;; 
    cin &gt;&gt; schleife;
  } while (schleife == 'j');

  return 0;
}
</code></pre>
<p>Der operator und die schleifenbedingung für's weitermachen sind jetzt chars, denn der operator z.b. wird bei deinem Programm nie mehr als ein Zeichen brauchen, ein string ist hier fehl am Platz. Die ifs habe ich durch ein switch ersetzt. Die while Schleifen wurden zu do - while Schleifen und ich habe die Variablen so spät wie möglich deklariert.</p>
<p>Das Einbauen der Fehlerbehandlung überlasse ich dir <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>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1033703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1033703</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Sun, 09 Apr 2006 12:01:49 GMT</pubDate></item><item><title><![CDATA[Reply to Änfängerprogramm: gut oder schlecht??? on Sun, 09 Apr 2006 11:58:42 GMT]]></title><description><![CDATA[<p>cool, danke<br />
das mit dem switch case kannste ich gar nicht, aber habs glaub ich verstanden. praktisch ist da ja das</p>
<pre><code>default: cerr&lt;&lt;&quot;Falscher Operator\n&quot;;
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /><br />
ebenso war mir die do-whiles-schleife nicht bekannt, warum muss denn am anfang schleife=&quot;n&quot; gesetzt werden? genau das entfällt doch durch den gebrauch dieser schleife. <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=":confused:"
      alt="😕"
    /></p>
<p>aber vielen dank erst mal <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1033709</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1033709</guid><dc:creator><![CDATA[Mr. Pink]]></dc:creator><pubDate>Sun, 09 Apr 2006 11:58:42 GMT</pubDate></item><item><title><![CDATA[Reply to Änfängerprogramm: gut oder schlecht??? on Sun, 09 Apr 2006 12:01:31 GMT]]></title><description><![CDATA[<p>Mr. Pink schrieb:</p>
<blockquote>
<p>ebenso war mir die do-whiles-schleife nicht bekannt, warum muss denn am anfang schleife=&quot;n&quot; gesetzt werden?</p>
</blockquote>
<p>Muss nicht, wäre auch nicht nötig gewesen, aber man gewöhnt sich an, einer Variable nen Startwert mitzugeben. Hier ist es egal.</p>
<blockquote>
<p>genau das entfällt doch durch den gebrauch dieser schleife. <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=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>richtig, ich editer's mal weg...</p>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1033711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1033711</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Sun, 09 Apr 2006 12:01:31 GMT</pubDate></item><item><title><![CDATA[Reply to Änfängerprogramm: gut oder schlecht??? on Sun, 09 Apr 2006 12:06:26 GMT]]></title><description><![CDATA[<p>Da kann ich mich meinen Vorrednern nur anschliessen, da hat man schon Schlechteres gesehen. 3 Tipps möchte ich dir trotzdem noch geben.</p>
<p>Verwende Leerzeichen! Jemand der sowas hier liest</p>
<pre><code class="language-cpp">while (op!=&quot;=&quot;)
</code></pre>
<p>ist erstmal wie vor den Kopf gestossen. Bei folgendem</p>
<pre><code class="language-cpp">while (op != &quot;=&quot;)
</code></pre>
<p>wird einem schon eher klar, was zusammengehört und erhöht die Lesbarkeit. Gleiches gilt für die include's, cout's, cin's, etc.</p>
<p>Schau dir mal die Assignment Operatoren an. In C++ schreibt man statt</p>
<pre><code class="language-cpp">z1 = z1 + z2;
</code></pre>
<p>besser</p>
<pre><code class="language-cpp">z1 += z2;
</code></pre>
<p>Bei trivialen Typen (wie in deinem Fall) ist das noch nicht so entscheidend, bei nicht-trivialen aber schon.</p>
<p>Für deinen Fall ist die Lösung von GPC sicherlich einfacher. Es kann aber durchaus sein, dass du dennoch mal ein switch für Strings brauchst und dies über if's simulieren musst. Dann mach die einzelnen Zweige besser exklusiv, also</p>
<pre><code class="language-cpp">if (op == &quot;+&quot;)
                z1 += z2;
            else if (op == &quot;-&quot;)
                z1 -= z2;
            else if (op == &quot;*&quot;)
                z1 *= z2;
            else if (op == &quot;/&quot;)
                z1 /= z2;
</code></pre>
<p>Das reduziert die Vergleiche auf ein Minimum und mehr ist auch nicht nötig, da die Argumente sich sowieso gegenseitig ausschliessen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1033716</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1033716</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Sun, 09 Apr 2006 12:06:26 GMT</pubDate></item><item><title><![CDATA[Reply to Änfängerprogramm: gut oder schlecht??? on Sun, 09 Apr 2006 15:41:07 GMT]]></title><description><![CDATA[<p>danke, für die antworten, werd mich dann mal wieder ans proggen machen.<br />
habe denk ich einige praktische feinheiten gelernt, mal sehen, ob ich die auch gut in spätere programme einbauen kann... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Edit: Wofür steht genau das &quot;cerr&quot; bei</p>
<pre><code>default: cerr&lt;&lt;&quot;Falscher Operator\n&quot;;
</code></pre>
<p>habs wohl dochnicht ganz verstanden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1033864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1033864</guid><dc:creator><![CDATA[Mr. Pink]]></dc:creator><pubDate>Sun, 09 Apr 2006 15:41:07 GMT</pubDate></item><item><title><![CDATA[Reply to Änfängerprogramm: gut oder schlecht??? on Sun, 09 Apr 2006 16:27:01 GMT]]></title><description><![CDATA[<p>das ist ein ausgabestream, ähnlich dem &quot;cout&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1033954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1033954</guid><dc:creator><![CDATA[DrOetker]]></dc:creator><pubDate>Sun, 09 Apr 2006 16:27:01 GMT</pubDate></item><item><title><![CDATA[Reply to Änfängerprogramm: gut oder schlecht??? on Mon, 10 Apr 2006 08:07:54 GMT]]></title><description><![CDATA[<p>gibts da noch nen unterschied oder ist es praktisch egal was ich nehme?<br />
könnt ich dann auch einfach</p>
<pre><code>default: cout&lt;&lt;&quot;Falscher Operator\n&quot;;
</code></pre>
<p>schreiben?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034286</guid><dc:creator><![CDATA[Mr. Pink]]></dc:creator><pubDate>Mon, 10 Apr 2006 08:07:54 GMT</pubDate></item><item><title><![CDATA[Reply to Änfängerprogramm: gut oder schlecht??? on Mon, 10 Apr 2006 08:11:14 GMT]]></title><description><![CDATA[<p>Mr. Pink schrieb:</p>
<blockquote>
<p>gibts da noch nen unterschied oder ist es praktisch egal was ich nehme?<br />
könnt ich dann auch einfach</p>
<pre><code>default: cout&lt;&lt;&quot;Falscher Operator\n&quot;;
</code></pre>
<p>schreiben?!</p>
</blockquote>
<p>cerr ist die Standardfehlerausgabe, d.h. dieser Stream ist ungepuffert und zweitens könnte man ihn umleiten (kann man cout ja auch), in eine log-Datei z.B., die die Fehler auflistet. Aber normalerweise gibt er dir das auf der Konsole aus und gut ist <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>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034288</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Mon, 10 Apr 2006 08:11:14 GMT</pubDate></item><item><title><![CDATA[Reply to Änfängerprogramm: gut oder schlecht??? on Mon, 10 Apr 2006 08:12:04 GMT]]></title><description><![CDATA[<p>cerr und cout können unabhängig voneinander umgeleitet werden (auch wenn defaultmäßig beide auf den Bildschirm schreiben) - cout ist die reguläre Ausgabe des Programms, cerr ist für Fehlermeldungen.</p>
<p>(PS: In die obige switch()-Anweisung solltest du noch ein &quot;case '=':break;&quot; einbauen, sonst spuckt dir das Programm für's = auch ein &quot;falscher Operator&quot; entgegen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034289</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 10 Apr 2006 08:12:04 GMT</pubDate></item></channel></rss>