<?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[Habe probleme mit meinem programm]]></title><description><![CDATA[<p>hallo</p>
<p>kann mir bitte einer helfen. Bin noch ein anfänger</p>
<p>aus langerweile oder anders gesagt um die materie besser zu verstehen habe ich ein programm geschrieben was aber nicht richtig funktioniert.</p>
<p>Kleine beschreibung.<br />
Rechnen:<br />
es sollen 2 Werte eingelesen und mit einanden +, -, *, / werden.<br />
Die eingabe funktioniert aber die ausgabe ist falsch. Den der compiler gibt zufällige Zahlen aus. D.h von der Funktion Zahleneingabe werden die adressen nicht an die funktion zum ausrechnen übergeben. WARUM?</p>
<p>Schreiben:<br />
Es sollen 2 Sätze eingegeben und mit einander verglichen werden.<br />
Aber es funktioniert nicht ganz so wie ich es will.<br />
Ich kann nicht den ersten Satz eingeben der wird irgendwie übersprungen es kommt die zweite eingabe.</p>
<pre><code class="language-cpp">#include &lt;iostream.h&gt;
#include &lt;string.h&gt;

//Eingabe von Zeichen
void Zeichen (char a[30], char b[30])
    {
    cout &lt;&lt; &quot;Dein erster Satz&quot; &lt;&lt;endl;
    cin.getline(a,30);
    cout &lt;&lt; &quot;Dein zweiter Satz&quot; &lt;&lt;endl;
    cin.getline(b,30);
    cout &lt;&lt; '\n';
    }

//Ermittlung der Zeichen in Zeichen
void laenge (char a[30], char b[30])
    {
    cout &lt;&lt; &quot;Die laenge des ersten Satzes ist   : &quot;;
    cout &lt;&lt; strlen(a) &lt;&lt;endl;
    cout &lt;&lt; &quot;Die laenge des zweiten Satzes ist  : &quot;;
    cout &lt;&lt; strlen(b) &lt;&lt;endl;

    }
//vergleichen von Seingabe
void vergleich(char a[30], char b[30])
    {
    int rechnen;
    if (strlen(a)== strlen(b))
        {
        cout &lt;&lt; &quot;Die laenge ist gleich&quot; &lt;&lt;endl;
        if (strcmp(a,b))
            cout &lt;&lt; &quot;aber die Zeichenfolge ist unterschiedlich&quot;;
        else
            cout &lt;&lt; &quot;und die Zeichen sind auch gelich&quot;;
        }
    else if (strlen(a)&lt;strlen(b))
            {
            cout &lt;&lt; &quot;Die laenge ist unterschiedlich&quot; &lt;&lt;endl;
            rechnen = strlen(b) - strlen(a);
            cout &lt;&lt; &quot;a ist: &quot; &lt;&lt; rechnen &lt;&lt; &quot; Zeichen kuerzer&quot; &lt;&lt;endl;
            }
         else if (strlen(a)&gt;strlen(b))
                {
                cout &lt;&lt; &quot;Die laenge ist unterschiedlich&quot; &lt;&lt;endl;
                rechnen = strlen(a) - strlen(b);
                cout &lt;&lt; &quot;a ist: &quot; &lt;&lt; rechnen &lt;&lt; &quot;Zeichen laenger&quot; &lt;&lt;endl;
                }

     }

//Eingabe von Zahlen
void Zahlen (float f, float g)
    {
    cout &lt;&lt; &quot;Deine erste Zahl   : &quot;;
    cin &gt;&gt; f;
    cout &lt;&lt; &quot;Deine zweite Zahl  : &quot;;
    cin &gt;&gt; g;
    cout &lt;&lt; '\n';
    }

float mal(float a, float b)
        {
        return (a*b);
        }
float durch(float c, float d)
        {
        return (c/d);
        }
float Plus(float e, float f)
        {
        return (e+f);
        }
float Minus(float g, float h)
        {
        return (g-h);
        }
void alles (float r, float t)
      {
      cout &lt;&lt; Minus (r, t)&lt;&lt;endl;
      cout &lt;&lt; Plus (r, t)&lt;&lt;endl;
      cout &lt;&lt; mal(r, t) &lt;&lt;endl;
      cout &lt;&lt; durch(r, t);
       }

void main()
{
char zeichen, zeichenschreiben;
char a[30],s[30];
float f,g;

cout &lt;&lt; &quot;1 fuer rechnen&quot; &lt;&lt;endl;
cout &lt;&lt; &quot;2 fuer schreiben&quot; &lt;&lt;endl;
cout &lt;&lt; &quot;deine eingbe &quot;;
cin &gt;&gt; zeichen;
cout &lt;&lt; '\n';
switch(zeichen)
   {
   case '1':
        Zahlen(f,g);
        alles(f,g);
        break;

   case '2':
        cout &lt;&lt; &quot;l laenge der Zeichen ausgeben&quot; &lt;&lt;endl;
        cout &lt;&lt; &quot;a alles ausgeben 'laenge und Zeichen'&quot; &lt;&lt;endl;
        cin &gt;&gt; zeichenschreiben;

        switch (zeichenschreiben)
            {
            case 'l':
                Zeichen(a,s);
                laenge (a,s);
                break;
            case 'a':
                Zeichen(a,s);
                vergleich(a,s);
                break;
            default:
                cout &lt;&lt; &quot;kenn ich net&quot; &lt;&lt;endl;
            }
   default:
        cout &lt;&lt; &quot;kenn ich net&quot; &lt;&lt;endl;

    }

char p[50];
cin.getline(p,50);
cin.getline(p,50);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/171151/habe-probleme-mit-meinem-programm</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 08:12:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/171151.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 22 Jan 2007 22:01:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Habe probleme mit meinem programm on Mon, 22 Jan 2007 22:01:32 GMT]]></title><description><![CDATA[<p>hallo</p>
<p>kann mir bitte einer helfen. Bin noch ein anfänger</p>
<p>aus langerweile oder anders gesagt um die materie besser zu verstehen habe ich ein programm geschrieben was aber nicht richtig funktioniert.</p>
<p>Kleine beschreibung.<br />
Rechnen:<br />
es sollen 2 Werte eingelesen und mit einanden +, -, *, / werden.<br />
Die eingabe funktioniert aber die ausgabe ist falsch. Den der compiler gibt zufällige Zahlen aus. D.h von der Funktion Zahleneingabe werden die adressen nicht an die funktion zum ausrechnen übergeben. WARUM?</p>
<p>Schreiben:<br />
Es sollen 2 Sätze eingegeben und mit einander verglichen werden.<br />
Aber es funktioniert nicht ganz so wie ich es will.<br />
Ich kann nicht den ersten Satz eingeben der wird irgendwie übersprungen es kommt die zweite eingabe.</p>
<pre><code class="language-cpp">#include &lt;iostream.h&gt;
#include &lt;string.h&gt;

//Eingabe von Zeichen
void Zeichen (char a[30], char b[30])
    {
    cout &lt;&lt; &quot;Dein erster Satz&quot; &lt;&lt;endl;
    cin.getline(a,30);
    cout &lt;&lt; &quot;Dein zweiter Satz&quot; &lt;&lt;endl;
    cin.getline(b,30);
    cout &lt;&lt; '\n';
    }

//Ermittlung der Zeichen in Zeichen
void laenge (char a[30], char b[30])
    {
    cout &lt;&lt; &quot;Die laenge des ersten Satzes ist   : &quot;;
    cout &lt;&lt; strlen(a) &lt;&lt;endl;
    cout &lt;&lt; &quot;Die laenge des zweiten Satzes ist  : &quot;;
    cout &lt;&lt; strlen(b) &lt;&lt;endl;

    }
//vergleichen von Seingabe
void vergleich(char a[30], char b[30])
    {
    int rechnen;
    if (strlen(a)== strlen(b))
        {
        cout &lt;&lt; &quot;Die laenge ist gleich&quot; &lt;&lt;endl;
        if (strcmp(a,b))
            cout &lt;&lt; &quot;aber die Zeichenfolge ist unterschiedlich&quot;;
        else
            cout &lt;&lt; &quot;und die Zeichen sind auch gelich&quot;;
        }
    else if (strlen(a)&lt;strlen(b))
            {
            cout &lt;&lt; &quot;Die laenge ist unterschiedlich&quot; &lt;&lt;endl;
            rechnen = strlen(b) - strlen(a);
            cout &lt;&lt; &quot;a ist: &quot; &lt;&lt; rechnen &lt;&lt; &quot; Zeichen kuerzer&quot; &lt;&lt;endl;
            }
         else if (strlen(a)&gt;strlen(b))
                {
                cout &lt;&lt; &quot;Die laenge ist unterschiedlich&quot; &lt;&lt;endl;
                rechnen = strlen(a) - strlen(b);
                cout &lt;&lt; &quot;a ist: &quot; &lt;&lt; rechnen &lt;&lt; &quot;Zeichen laenger&quot; &lt;&lt;endl;
                }

     }

//Eingabe von Zahlen
void Zahlen (float f, float g)
    {
    cout &lt;&lt; &quot;Deine erste Zahl   : &quot;;
    cin &gt;&gt; f;
    cout &lt;&lt; &quot;Deine zweite Zahl  : &quot;;
    cin &gt;&gt; g;
    cout &lt;&lt; '\n';
    }

float mal(float a, float b)
        {
        return (a*b);
        }
float durch(float c, float d)
        {
        return (c/d);
        }
float Plus(float e, float f)
        {
        return (e+f);
        }
float Minus(float g, float h)
        {
        return (g-h);
        }
void alles (float r, float t)
      {
      cout &lt;&lt; Minus (r, t)&lt;&lt;endl;
      cout &lt;&lt; Plus (r, t)&lt;&lt;endl;
      cout &lt;&lt; mal(r, t) &lt;&lt;endl;
      cout &lt;&lt; durch(r, t);
       }

void main()
{
char zeichen, zeichenschreiben;
char a[30],s[30];
float f,g;

cout &lt;&lt; &quot;1 fuer rechnen&quot; &lt;&lt;endl;
cout &lt;&lt; &quot;2 fuer schreiben&quot; &lt;&lt;endl;
cout &lt;&lt; &quot;deine eingbe &quot;;
cin &gt;&gt; zeichen;
cout &lt;&lt; '\n';
switch(zeichen)
   {
   case '1':
        Zahlen(f,g);
        alles(f,g);
        break;

   case '2':
        cout &lt;&lt; &quot;l laenge der Zeichen ausgeben&quot; &lt;&lt;endl;
        cout &lt;&lt; &quot;a alles ausgeben 'laenge und Zeichen'&quot; &lt;&lt;endl;
        cin &gt;&gt; zeichenschreiben;

        switch (zeichenschreiben)
            {
            case 'l':
                Zeichen(a,s);
                laenge (a,s);
                break;
            case 'a':
                Zeichen(a,s);
                vergleich(a,s);
                break;
            default:
                cout &lt;&lt; &quot;kenn ich net&quot; &lt;&lt;endl;
            }
   default:
        cout &lt;&lt; &quot;kenn ich net&quot; &lt;&lt;endl;

    }

char p[50];
cin.getline(p,50);
cin.getline(p,50);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1214844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1214844</guid><dc:creator><![CDATA[eagle00]]></dc:creator><pubDate>Mon, 22 Jan 2007 22:01:32 GMT</pubDate></item><item><title><![CDATA[Reply to Habe probleme mit meinem programm on Mon, 22 Jan 2007 22:51:08 GMT]]></title><description><![CDATA[<p>Also ich bin zwar selbst noch ein Anfänger, aber dein Zahlenproblem liegt an deiner Übergabe.</p>
<pre><code class="language-cpp">void Zahlen (float f, float g)
</code></pre>
<p>du übergibst call by Value deine noch leeren Variablen an diese Funktion, und da knackts, du liest in der Funktion neue Zahlen ein die aber leider nur die Variablen in der Funktion betreffen die aber die eigentlichen Variablen nicht verändern. Besser wäre hier meiner Meinung nach die Verwendung von Zeigern, sie Zeigen auf den Bereich der Original Variablen die dadurch auch in deiner Funktion verändert werden können.</p>
<pre><code class="language-cpp">void Zahlen (float *pf, float *pg)
{
    cin&gt;&gt;*pf;
    cin&gt;&gt;*pg;
};
.
.
Zahlen(&amp;f,&amp;g)
</code></pre>
<p>Zum Zeichenproblem.</p>
<p>in deiner Zeichenfunktion wird die erste Eingabe automatisch geschluckt, ich hab ka warum, ich kann dir nur die etwas unortodoxe Temporärlösung anbieten das</p>
<pre><code class="language-cpp">cin.getline(a,30);
</code></pre>
<p>2x hintereinander anzufordern, dann Funktioniert das Programm zumindest.<br />
Mich interessiert allerdings warum es so ist wie es ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1214855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1214855</guid><dc:creator><![CDATA[Raven2]]></dc:creator><pubDate>Mon, 22 Jan 2007 22:51:08 GMT</pubDate></item><item><title><![CDATA[Reply to Habe probleme mit meinem programm on Tue, 23 Jan 2007 07:21:30 GMT]]></title><description><![CDATA[<p>Raven2 schrieb:</p>
<blockquote>
<p>Also ich bin zwar selbst noch ein Anfänger, aber dein Zahlenproblem liegt an deiner Übergabe.</p>
<pre><code class="language-cpp">void Zahlen (float f, float g)
</code></pre>
<p>du übergibst call by Value deine noch leeren Variablen an diese Funktion, und da knackts, du liest in der Funktion neue Zahlen ein die aber leider nur die Variablen in der Funktion betreffen die aber die eigentlichen Variablen nicht verändern. Besser wäre hier meiner Meinung nach die Verwendung von Zeigern, sie Zeigen auf den Bereich der Original Variablen die dadurch auch in deiner Funktion verändert werden können.</p>
<pre><code class="language-cpp">void Zahlen (float *pf, float *pg)
{
    cin&gt;&gt;*pf;
    cin&gt;&gt;*pg;
};
.
.
Zahlen(&amp;f,&amp;g)
</code></pre>
</blockquote>
<p>In C++ kannst du stattdessen auch Referenzparameter verwenden:</p>
<pre><code class="language-cpp">void Zahlen(float&amp;f,float&amp;g)
{
  cin&gt;&gt;f&gt;&gt;g;
}
</code></pre>
<blockquote>
<p>Zum Zeichenproblem.</p>
<p>in deiner Zeichenfunktion wird die erste Eingabe automatisch geschluckt, ich hab ka warum</p>
</blockquote>
<p>Aber ich: getline() liest die Eingabe bis zum nächsten Zeilenwechsel. Aber da nach der Eingabe von 'zeichenschreiben' noch ein Enter im Tastaturpuffer zurückgeblieben ist, wird als nächstes der leere String eingelesen. Die korrekte Lösung für das Problem heißt ignore() (aber ein Dummy-getline() hat die selbe Wirkung).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1214925</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1214925</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 23 Jan 2007 07:21:30 GMT</pubDate></item><item><title><![CDATA[Reply to Habe probleme mit meinem programm on Tue, 23 Jan 2007 10:31:56 GMT]]></title><description><![CDATA[<p>danke für die Hilfe</p>
<p>es hat für RECHNEN geklapt.</p>
<p>danke danke danke.</p>
<p>aber für das SCHREIBEN habe ich nicht hinbekommen.<br />
brauche mehr input.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1215072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1215072</guid><dc:creator><![CDATA[eagle00]]></dc:creator><pubDate>Tue, 23 Jan 2007 10:31:56 GMT</pubDate></item><item><title><![CDATA[Reply to Habe probleme mit meinem programm on Tue, 23 Jan 2007 10:39:07 GMT]]></title><description><![CDATA[<p>Nochmal langsam: Die Eingaben schließt du jeweils mit einem ENTER (=\n) ab. op&gt;&gt; lässt eventuelle Whitespaces (inklusive dem ENTER) im Eingabepuffer stehen, getline() holt alle Zeichen bis zum nächsten ENTER aus dem Eingabepuffer. Wenn du das zusammenfügst, kommst du auf das Kernproblem: Das erste getline() in der Zeichen()-Funktion erhält die Restzeile, die nach dem <code>cin&gt;&gt;zeichenschreiben;</code> aus dem Hauptprogramm übriggeblieben ist. Die Lösung ist:</p>
<pre><code class="language-cpp">void Zeichen(char a[30],char b[30])
{
  cin.ignore();
  //der Rest wie gehabt
}
</code></pre>
<p>PS: Übrigens solltest du anstelle der char-Arrays lieber std::string's verwenden. Die sind sicherer und einfacher zu handhaben.<br />
(und auch wenn es so aussieht - niemand überprüft, ob der Funktion wirklich ein 30-Zeichen-Array übergeben wird)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1215077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1215077</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 23 Jan 2007 10:39:07 GMT</pubDate></item><item><title><![CDATA[Reply to Habe probleme mit meinem programm on Tue, 23 Jan 2007 12:38:55 GMT]]></title><description><![CDATA[<p>@ CStoll</p>
<p>ich danke dir, es geht</p>
<p>mann bin ich froh.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1215168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1215168</guid><dc:creator><![CDATA[eagle00]]></dc:creator><pubDate>Tue, 23 Jan 2007 12:38:55 GMT</pubDate></item></channel></rss>