<?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[einfacher Taschenrechner (Trennung von Char und Int)]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich muss einen einfachen Taschenrechner programmieren. Der Benutzer soll eine Zahl und ein Operator eingeben können.</p>
<p>Jetzt nur wie kann ich einen Char-Datentyp mit einem Integer-Datentyp kombinieren. Also eine Abfrage ob es sich um ein Int oder Char handelt.</p>
<p>So sollte es aussehen:<br />
Eingabe -&gt; 10<br />
Eingabe -&gt; 4<br />
Eingabe -&gt; +<br />
Ausgabe -&gt; 14</p>
<p>Wie kann ich das am besten und am einfachsten realisieren?</p>
<p>Gruss,<br />
Cyrill</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/128229/einfacher-taschenrechner-trennung-von-char-und-int</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 15:31:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/128229.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 01 Dec 2005 16:45:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to einfacher Taschenrechner (Trennung von Char und Int) on Thu, 01 Dec 2005 16:45:25 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich muss einen einfachen Taschenrechner programmieren. Der Benutzer soll eine Zahl und ein Operator eingeben können.</p>
<p>Jetzt nur wie kann ich einen Char-Datentyp mit einem Integer-Datentyp kombinieren. Also eine Abfrage ob es sich um ein Int oder Char handelt.</p>
<p>So sollte es aussehen:<br />
Eingabe -&gt; 10<br />
Eingabe -&gt; 4<br />
Eingabe -&gt; +<br />
Ausgabe -&gt; 14</p>
<p>Wie kann ich das am besten und am einfachsten realisieren?</p>
<p>Gruss,<br />
Cyrill</p>
]]></description><link>https://www.c-plusplus.net/forum/post/931489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/931489</guid><dc:creator><![CDATA[DragonShaolin]]></dc:creator><pubDate>Thu, 01 Dec 2005 16:45:25 GMT</pubDate></item><item><title><![CDATA[Reply to einfacher Taschenrechner (Trennung von Char und Int) on Thu, 01 Dec 2005 17:07:16 GMT]]></title><description><![CDATA[<p>Die Operanden kannst du ja gleich in Integer-Variablen einlesen und den Operator in ein char speichern.<br />
Danach kannst du eine einfache switch-case-Abfrage machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/931519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/931519</guid><dc:creator><![CDATA[michba]]></dc:creator><pubDate>Thu, 01 Dec 2005 17:07:16 GMT</pubDate></item><item><title><![CDATA[Reply to einfacher Taschenrechner (Trennung von Char und Int) on Thu, 01 Dec 2005 17:31:06 GMT]]></title><description><![CDATA[<p>Liest ein Zeichen (char) ein und prüf das in einem switch-case-Verteiler darauf ob es sich um einen Operanden handelt, wenn ja, dann kannst du dich um die Verarbeitung der rechten Seite kümmern. Wenn du in einen case-Zweig für die Zahlen kommst, pack das Zeichen in den Eingabestrom (putback) zurück und lies eine Zahl ein (cin &gt;&gt; zahlenVariable).</p>
<p>Mal nen kleines Beispiel (nur für switch-case-Verteiler):</p>
<pre><code class="language-cpp">switch(ch) {
  case '+':
  case '-':
     // weg damit und von vorne beginnen um nächstes zeichen zu lesen
  case '0': case '1': // ....
     cin.putback(ch);
     cin &gt;&gt; zahl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/931542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/931542</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Thu, 01 Dec 2005 17:31:06 GMT</pubDate></item><item><title><![CDATA[Reply to einfacher Taschenrechner (Trennung von Char und Int) on Thu, 01 Dec 2005 17:39:26 GMT]]></title><description><![CDATA[<p>Danke für die Antwort.</p>
<p>Ich weiß gerade nur nicht wie ich es jetzt realisiere.<br />
Es soll alles über ein cin funktionieren. d.h. eine Schleife</p>
<p>Hier meine Aufgabe, weil mein Beispiel vorhin etwas kurz geraten ist.</p>
<p>Alle Zahleneigaben sollen in einem Array gespeichert werden.<br />
So sollte es aussehen.<br />
Eingabe -&gt; 12 -&gt; Array[0]=12, Array[1]=0, ..., Array[7]=0<br />
Eingabe -&gt; 3 -&gt; Array[0]=12, Array[1]=3,...<br />
Eingabe -&gt; 6 -&gt; Array[0]=12, Array[1]=3, Array[2]=6, ...<br />
Eingabe -&gt; &quot;+&quot; -&gt; Array[0]=12, Array[1]=9,...<br />
Eingabe -&gt; &quot;-&quot; -&gt; Array[0]=3,...</p>
<p>Also er solle immer die beiden letzten Werte vom Array berechnen sobald der Benutzer ein Operator eingibt.</p>
<p>Ich meine ich kann die eingegeben Chars in ein Asciiwert umwandeln, aber dann nimmt er jeweil nur ein Zeichen an. Also wenn die Eingabe eine 12 ist nimmt er nur die 1 und das wäre dann der Wert 49. Ich könnte 48 vom ASCII wert abziehen dann hätte ich ja die Zahl, aber ich glaube das ist nicht gerade die schlauste Lösung.</p>
<p>Bestimmt geht es voll einfach und ich denke mal wieder voll kompliziert.</p>
<p>Danke.</p>
<p>Gruss,<br />
Cyrill</p>
<p>[Edit]<br />
Da war noch einer schneller mit dem tippen. Ich probiere es gleich mal aus. Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/931553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/931553</guid><dc:creator><![CDATA[DragonShaolin]]></dc:creator><pubDate>Thu, 01 Dec 2005 17:39:26 GMT</pubDate></item><item><title><![CDATA[Reply to einfacher Taschenrechner (Trennung von Char und Int) on Thu, 01 Dec 2005 17:57:22 GMT]]></title><description><![CDATA[<p>Gut funktioniert wunderbar mit dem switch case.</p>
<p>Vielen Dank.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/931570</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/931570</guid><dc:creator><![CDATA[DragonShaolin]]></dc:creator><pubDate>Thu, 01 Dec 2005 17:57:22 GMT</pubDate></item><item><title><![CDATA[Reply to einfacher Taschenrechner (Trennung von Char und Int) on Fri, 02 Dec 2005 12:09:36 GMT]]></title><description><![CDATA[<p>Ich habe gerade ein Verständnissproblem.</p>
<p>Den Taschenrechner muss ich für die UNI programmieren. Es hat bis jetzt fast alles geklappt.</p>
<p>Hier ist unsere Übung als PDF-Datei: <a href="http://www2.fbi.fh-darmstadt.de/~schuette/Vorlesungen/ProgrammierenI/Praktikum/Uebungen/Uebung_4/Templates.pdf" rel="nofollow">http://www2.fbi.fh-darmstadt.de/~schuette/Vorlesungen/ProgrammierenI/Praktikum/Uebungen/Uebung_4/Templates.pdf</a></p>
<p>Wir sollen 3 Funktionen verwenden:<br />
- Hinzufügen eines Wertes</p>
<pre><code class="language-cpp">void push(int operand)
</code></pre>
<p>wirft Exception, wenn der Stack voll ist<br />
- Entnehmen des letzten Elementes</p>
<pre><code class="language-cpp">int pop()
</code></pre>
<p>wirft Exception, wenn der Stack leer ist<br />
- Abfrage auf leeren Keller</p>
<pre><code class="language-cpp">boolean isEmpty()
</code></pre>
<p>Das mit dem</p>
<pre><code class="language-cpp">void push (int operand)
</code></pre>
<p>hab ich so gut wie verstanden. <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="🙂"
    /> Diese Funktion soll ja den nächsten Wert in das Array speichern, aber wie sieht es mit der Exception aus? Die Funktion soll eine Fehlermeldung ausgeben wenn das Array voll ist. Bei einer void funktion kann ich die Fehlermeldung nur mit cout ausgeben.</p>
<p>So nun die Funktion</p>
<pre><code class="language-cpp">int pop()
</code></pre>
<p>verstehe ich nicht ganz. Was ich verstanden habe ist, dass er den letzten Wert des Arrays wieder rausnehmen soll. Aber warum eine int Funktion? Ich verstehe die Rückgabe nicht? Dort soll auch wieder eine Fehlermeldung ausgegeben werden, dies könnte ich auch wieder mit cout machen.</p>
<p>Was ich garnicht verstehe ist die</p>
<pre><code class="language-cpp">boolean isEmpty()
</code></pre>
<p>Funktion. Auf was bezieht sich die Funktion.</p>
<p>Mein Problem ist das ich nicht genau weiß was sie mit den Ausdrücken &quot;Exception, Stack, Keller&quot; meinen.</p>
<p>Mein Code bisher:</p>
<p>meine Headerdatei:</p>
<pre><code class="language-cpp">// Headerdatei für die Spezifizierung der Funktionsprototypen und die grösse des Arrays
#include &lt;iostream&gt;
using namespace std;

#ifndef globaleDefinitionen
#define globaleDefinitionen
char eingabe;
int rechnerinhalt[7] = {0,0,0,0,0,0,0};
int arrayindex = 0;
int zahl, element;
#endif

// Templates
void push(int);
int pop();
//long zahl(char);
</code></pre>
<p>Meine CPP-Datei:</p>
<pre><code class="language-cpp">//#include &lt;iostream&gt;
#include &quot;stack.h&quot;
#include &lt;string&gt;
//using namespace std;

void main()
{

	do{	
		cout &lt;&lt; &quot;Momentaner Arrayinhalt: &quot;;

		for (int aindex = 0; aindex &lt;= 6; aindex++)
		{
			cout &lt;&lt; rechnerinhalt[aindex] &lt;&lt; &quot; &quot;;
		}

		cout &lt;&lt; &quot;\nGeben Sie eine Zahl oder einen Operator (+, -, *, /) [a = Abbruch]: &quot;;
		cin &gt;&gt; eingabe;
		cout &lt;&lt; endl;

		switch(eingabe) 
		{
			case '+': break;
			case '-': break; 
			case '*': break;
			case '/': break;
			case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': 
			cin.putback(eingabe);
			cin &gt;&gt; zahl;
			push(zahl);
			break;
			case 'a': cout &lt;&lt; &quot;Abbruch durch Benutzer\n&quot;; break;
			default: cout &lt;&lt; &quot;unzulässige Eingabe\n&quot;;
		}

	}while(eingabe != 'a');

	cout &lt;&lt; &quot;vorletztes Element : &quot; &lt;&lt; pop() &lt;&lt; endl;
}

void push(int operand)  // Element hinzufügen
{
	if (arrayindex &lt;= 6)
			rechnerinhalt[arrayindex++] = operand;
		else
			cout &lt;&lt; &quot;Fehler: Stack ist voll&quot; &lt;&lt; endl;

}

int pop()    // letztes Element entfernen
{
	rechnerinhalt[arrayindex--] = 0;
	return 0;
}
</code></pre>
<p>Vielen Dank.</p>
<p>Gruss,<br />
Cyrill</p>
]]></description><link>https://www.c-plusplus.net/forum/post/932198</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932198</guid><dc:creator><![CDATA[DragonShaolin]]></dc:creator><pubDate>Fri, 02 Dec 2005 12:09:36 GMT</pubDate></item><item><title><![CDATA[Reply to einfacher Taschenrechner (Trennung von Char und Int) on Fri, 02 Dec 2005 12:27:45 GMT]]></title><description><![CDATA[<p>Als erstes solltest du die Methoden push(), pop() und isempty() zusammen mit deiner Datenstruktur in eine Klasse reinpacken:</p>
<pre><code class="language-cpp">class Stack
{
public:
  void push(int val);
  int pop();
  bool isempty();
private:
  //Datendarstellung (z.B. int-Array)
}
</code></pre>
<p>Zweitens: wenn du schon einen Include-Guard verwendest, dann bitte um den gesamten Header-Inhalt.</p>
<p>Drittens: Expections sind Fehlerobjekte, die mit throw geworfen und mit catch wieder aufgefangen werden können - das hat nichts mit Rückgabewerten oder cout zu tun:</p>
<pre><code class="language-cpp">#include &lt;stdexcept&gt;

void Stack::push(int val)
{
  if(/*voll*/)
    throw std::range_error(&quot;Stack ist voll&quot;);
  //...
}

int Stack::pop()
{
  if(/*leer*/)
    throw std::range_error(&quot;Stack ist leer&quot;);
  //...
}

int main()
{
  Stack my_stack;
  try
  {
    my_stack.push(6);
    //weitere Stack-Operationen
  }
  catch(std::execption&amp; e)//fängt alle &quot;Nachkommen&quot; von Exception auf, also auch das oben verwendete 'range_error'
  {
    cout&lt;&lt;&quot;Fehler:&quot;&lt;&lt;e.what()&lt;&lt;endl;
  }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/932218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932218</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 02 Dec 2005 12:27:45 GMT</pubDate></item><item><title><![CDATA[Reply to einfacher Taschenrechner (Trennung von Char und Int) on Fri, 02 Dec 2005 13:56:12 GMT]]></title><description><![CDATA[<p>Wir haben noch keine Klassen behandelt. Uns wurde gesagt das machen wir erst später. Da ich diese Woche krank war, könnten wir diese Woche den Fehlerabfang behandelt haben, aber eigentlich wollten wir diese Woche die Sortierungsmethoden kennenlernen. Dann beschäftige ich mich jetzt mal um die Fehlersache. Falls wir das noch nicht durchgemacht haben, gibt es bestimmt noch eine andere möglichkeit.</p>
<p>Aber vielen Dank für die Hilfe.</p>
<p>Gruss,<br />
Cyrill</p>
]]></description><link>https://www.c-plusplus.net/forum/post/932364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932364</guid><dc:creator><![CDATA[DragonShaolin]]></dc:creator><pubDate>Fri, 02 Dec 2005 13:56:12 GMT</pubDate></item><item><title><![CDATA[Reply to einfacher Taschenrechner (Trennung von Char und Int) on Fri, 02 Dec 2005 13:57:34 GMT]]></title><description><![CDATA[<p>Wenn es für deine Anwendung reicht, kannst du auch bei deinen globalen Deklarationen bleiben <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>
]]></description><link>https://www.c-plusplus.net/forum/post/932368</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932368</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 02 Dec 2005 13:57:34 GMT</pubDate></item><item><title><![CDATA[Reply to einfacher Taschenrechner (Trennung von Char und Int) on Fri, 02 Dec 2005 14:52:18 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">switch(eingabe)
        {
            case '+': break;
            case '-': break;
            case '*': break;
            case '/': break;
                /* HIER sollte was hin */
                break;
            case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':
            cin.putback(eingabe);
            cin &gt;&gt; zahl;
            push(zahl);
            break;
            case 'a': cout &lt;&lt; &quot;Abbruch durch Benutzer\n&quot;; break;
            default: cout &lt;&lt; &quot;unzulässige Eingabe\n&quot;;
        }
</code></pre>
<p>Eigentlich sollte da wo ich den kommentar gemacht habe hinter den Operatoren etwas hin. Wenn du ein + hast, dieses zurückpackst und dann ne Zahl lesen willst geht das eigentlich schief, weil dann das Zeichen wieder dadrin wäre. Du solltest an der Stelle wo du +, -, * oder / erkennst, dieses irgendwie speichern um später die richtige Berechnung durchzuführen.</p>
<p>Z.B. könnte man ein enum benutzen, eine variable davon anlegen und dann an den Typ dieser Variablen zuweisen:</p>
<pre><code class="language-cpp">enum Token { DEFAULT=0, PLUS='+', MINUS='-', MUL='*', DIV'/' };
Token op=DEFAULT;

/* im case teil für plus, minus... */
if(op!=DEFAULT) exit(1); // irgendwas machen, um sicherzustellen das der operator nicht überschrieben wird
op = Token(ch);
break;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/932421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932421</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Fri, 02 Dec 2005 14:52:18 GMT</pubDate></item><item><title><![CDATA[Reply to einfacher Taschenrechner (Trennung von Char und Int) on Fri, 02 Dec 2005 15:07:46 GMT]]></title><description><![CDATA[<p>Vellas schrieb:</p>
<blockquote>
<p>Z.B. könnte man ein enum benutzen, eine variable davon anlegen und dann an den Typ dieser Variablen zuweisen:</p>
</blockquote>
<p>Oder an dieser Stelle zwei Werte vom Stack holen, entsprechend des gelesenen Symbols verrechnen und zurück auf den Stack legen:</p>
<pre><code class="language-cpp">case '+':
  op1=pop();
  op2=pop();
  push(op1+op2);
  break;
//übrige case analog
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/932439</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932439</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 02 Dec 2005 15:07:46 GMT</pubDate></item><item><title><![CDATA[Reply to einfacher Taschenrechner (Trennung von Char und Int) on Fri, 02 Dec 2005 15:16:00 GMT]]></title><description><![CDATA[<p>Ja, sofern zuerst die Werte eingegeben werden und dann die Operation und nicht in dieser Form (von der ich ausgegangen bin): 10+10</p>
]]></description><link>https://www.c-plusplus.net/forum/post/932447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932447</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Fri, 02 Dec 2005 15:16:00 GMT</pubDate></item><item><title><![CDATA[Reply to einfacher Taschenrechner (Trennung von Char und Int) on Thu, 05 Aug 2010 11:32:06 GMT]]></title><description><![CDATA[<p>Tja, ich bin von den Voraussetzungen im Ursprungspost ausgegangen:</p>
<p>DragonShaolin schrieb:</p>
<blockquote>
<p>So sollte es aussehen:<br />
Eingabe -&gt; 10<br />
Eingabe -&gt; 4<br />
Eingabe -&gt; +<br />
Ausgabe -&gt; 14</p>
</blockquote>
<p>(wie war nochmal der Fachbegriff dafür? &quot;umgekehrte polnische Notation&quot;?)</p>
<p>Bei einer Infix-Eingabe dürfte das parsen tatsächlich etwas schwieriger werden, besonders wenn du auf Punkt-vor-Strich und Klammern achten willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/932453</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932453</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 05 Aug 2010 11:32:06 GMT</pubDate></item><item><title><![CDATA[Reply to einfacher Taschenrechner (Trennung von Char und Int) on Fri, 02 Dec 2005 15:24:24 GMT]]></title><description><![CDATA[<p>Oh stimmt, da habe ich den Ursprungspost wohl nicht ganz richtig gelesen gehabt *g* Hoffe trotzdem geholfen zu haben <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/932457</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932457</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Fri, 02 Dec 2005 15:24:24 GMT</pubDate></item></channel></rss>