<?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[Problem bei einer Aufgabe]]></title><description><![CDATA[<p>Hi Leute!</p>
<p>Ich hab eine Aufgabe für die SChule zu machen und hänge da grad ein wenig...</p>
<p>Unser Thema ist Arrays. Und es geht um folgendes:<br />
Es soll ein Satz eingelesen und dieser auf Kleinbuchstaben untersucht werden. alle kleingeschriebenen Vokale sollen separat in einem Array gezählt werden und die Konsonanten später aus der Differenz zwischen gesamtkleinenkonsonsnanten-vokalanzahl errechnet werden.</p>
<p>mein ansatz war folgender:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;conio.h&gt;
using namespace std;

int main()
{
	char satz[100];
	int vokale[5];
	int kChr;
	int anzKons;

	cout &lt;&lt; &quot;Bitte geben Sie einen Satz ein:&quot; &lt;&lt; endl;
	cin &gt;&gt; satz;

	for (int i=0; i &lt; sizeof(satz)/sizeof(satz[0]); i++)
	{
		if (satz[i] &gt;= 97 &amp;&amp; satz[i] &lt;= 122)
		{
			anzKons++;

			switch (satz[i])
			{
				case 97:	{	vokale[0]++;	break;	}
				case 101:	{	vokale[1]++;	break;	}
				case 105:	{	vokale[2]++;	break;	}
				case 111:	{	vokale[3]++;	break;	}
				case 117:	{	vokale[4]++;	break;	}
			}
		}
	}

	cout &lt;&lt; &quot;Anzahl der Konsonanten: &quot; &lt;&lt; anzKons &lt;&lt; endl;
	cout &lt;&lt; &quot;Darin enthalten sind:	 &quot; &lt;&lt; vokale[0]+vokale[1]+vokale[2]+vokale[3]+vokale[4];

	getch();

	return 0;
}
</code></pre>
<p>aber irgendwie kanns nicht gehen, weil ich im char keine zahlenwerte untersuchen kann, oder leigt mein fehler woanders? komm grad echt nicht weiter....</p>
<p>dankeschonmal!</p>
<p>liebe grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/127507/problem-bei-einer-aufgabe</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 03:27:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/127507.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 24 Nov 2005 20:18:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem bei einer Aufgabe on Thu, 24 Nov 2005 20:18:18 GMT]]></title><description><![CDATA[<p>Hi Leute!</p>
<p>Ich hab eine Aufgabe für die SChule zu machen und hänge da grad ein wenig...</p>
<p>Unser Thema ist Arrays. Und es geht um folgendes:<br />
Es soll ein Satz eingelesen und dieser auf Kleinbuchstaben untersucht werden. alle kleingeschriebenen Vokale sollen separat in einem Array gezählt werden und die Konsonanten später aus der Differenz zwischen gesamtkleinenkonsonsnanten-vokalanzahl errechnet werden.</p>
<p>mein ansatz war folgender:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;conio.h&gt;
using namespace std;

int main()
{
	char satz[100];
	int vokale[5];
	int kChr;
	int anzKons;

	cout &lt;&lt; &quot;Bitte geben Sie einen Satz ein:&quot; &lt;&lt; endl;
	cin &gt;&gt; satz;

	for (int i=0; i &lt; sizeof(satz)/sizeof(satz[0]); i++)
	{
		if (satz[i] &gt;= 97 &amp;&amp; satz[i] &lt;= 122)
		{
			anzKons++;

			switch (satz[i])
			{
				case 97:	{	vokale[0]++;	break;	}
				case 101:	{	vokale[1]++;	break;	}
				case 105:	{	vokale[2]++;	break;	}
				case 111:	{	vokale[3]++;	break;	}
				case 117:	{	vokale[4]++;	break;	}
			}
		}
	}

	cout &lt;&lt; &quot;Anzahl der Konsonanten: &quot; &lt;&lt; anzKons &lt;&lt; endl;
	cout &lt;&lt; &quot;Darin enthalten sind:	 &quot; &lt;&lt; vokale[0]+vokale[1]+vokale[2]+vokale[3]+vokale[4];

	getch();

	return 0;
}
</code></pre>
<p>aber irgendwie kanns nicht gehen, weil ich im char keine zahlenwerte untersuchen kann, oder leigt mein fehler woanders? komm grad echt nicht weiter....</p>
<p>dankeschonmal!</p>
<p>liebe grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/926463</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/926463</guid><dc:creator><![CDATA[ViperNeo]]></dc:creator><pubDate>Thu, 24 Nov 2005 20:18:18 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei einer Aufgabe on Thu, 24 Nov 2005 20:55:04 GMT]]></title><description><![CDATA[<p>ViperNeo schrieb:</p>
<blockquote>
<p>Es soll ein Satz eingelesen</p>
</blockquote>
<p>Dann solltest du statt cin &gt;&gt; satz; eher <a href="http://www.cppreference.com/cppio/getline.html" rel="nofollow">cin.getline(satz, 99);</a> verwenden. (Oder wenigstens</p>
<pre><code class="language-cpp">cin &gt;&gt; setw(100) &gt;&gt; satz; // maximal 99 Zeichen von stdin einlesen
</code></pre>
<p>um segemtation-faults zu vermeiden.)</p>
<p>Dein Fehler liegt darin, dass du die Variablen nicht initialisierst. Merke: Lokale Variablen, erhalten per Default einen <em>undefinierten</em> Ausgangswert. =&gt; Mache aus</p>
<pre><code class="language-cpp">int vokale[5] = { 0, 0, 0, 0, 0 };
int anzKons = 0;
</code></pre>
<p>Außerdem solltest du in der for-Schleife nicht sizeof(satz) / sizeof(char) verwenden, da deine Schleife sonst 100 mal durchlaufen wird. Nimm besser i &lt; strlen(satz) als Abbruchbedingung.</p>
<p>Gruß Caipi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/926486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/926486</guid><dc:creator><![CDATA[Caipi]]></dc:creator><pubDate>Thu, 24 Nov 2005 20:55:04 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei einer Aufgabe on Thu, 24 Nov 2005 21:29:55 GMT]]></title><description><![CDATA[<p>Caipi schrieb:</p>
<blockquote>
<p>Dann solltest du statt cin &gt;&gt; satz; eher <a href="http://www.cppreference.com/cppio/getline.html" rel="nofollow">cin.getline(satz, 99);</a> verwenden.</p>
</blockquote>
<p>Hallo Caipi,</p>
<p>noch besser wäre die Verwendung eines Strings nebst der Funktion getline. Dann muss man sich nicht auf die (max.) Länge der Zeile festlegen.</p>
<pre><code class="language-cpp">std::string zeile;
    getline( std::cin, zeile );
</code></pre>
<p>Caipi schrieb:</p>
<blockquote>
<p>Außerdem solltest du in der for-Schleife nicht sizeof(satz) / sizeof(char) verwenden, da deine Schleife sonst 100 mal durchlaufen wird. Nimm besser i &lt; strlen(satz) als Abbruchbedingung.</p>
</blockquote>
<p>Die Werte von 'sizeof(satz) / sizeof(char)' sind zur Compile-Zeit bekannt. Jeder durchschnittliche Compiler sollte aus diesem Ausdruck eine Konstante machen können. Mit strlen() wird dagegen zur Laufzeit jedesmal eine Funktion aufgerufen; diese Variante ist mit hoher Wahrscheinlichkeit langsamer.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/926547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/926547</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Thu, 24 Nov 2005 21:29:55 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei einer Aufgabe on Thu, 24 Nov 2005 21:40:07 GMT]]></title><description><![CDATA[<p>Caipi schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int vokale[5] = { 0, 0, 0, 0, 0 };
</code></pre>
</blockquote>
<p>wozu die tipparbeit, wenn doch</p>
<pre><code class="language-cpp">int vokale[5] = {};
</code></pre>
<p>reicht?</p>
<p>(nur um das mit setw zu erklären, ich denke caipi hat es wohl richtig gemeint:<br />
operator&gt;&gt; versucht, alle chars in das array zu stopfen, bis ein whitespace kommt. setw sagt nur die maximale anzahl, die operator&gt;&gt; dort hinein stopfen soll. wenn du whitespaces mitlesen willst, solltest du wohl getline verwenden)</p>
<p>zur aufgabe: mit charx &gt; 97 und charx &lt; 128 willst du wohl den bereich der buchstaben abdecken? dafür gibt es isalpha aus &lt;cctype&gt; afair.</p>
<pre><code class="language-cpp">bool is_uncapitalized_vowel (char c)
{
   static const char vowels[] = &quot;aeiou&quot;;
   return find(vowels, vowels+5,c) != vowels+5;
}
</code></pre>
<p>dito für die switch anweisung. da statt den zahlen einfach schreiben</p>
<pre><code class="language-cpp">...
case 'a' : vokale[0]++; break;
case 'e' : vokale[1]++; break;
...
</code></pre>
<p>allerdings ist die aufgabe</p>
<p>aufgabe schrieb:</p>
<blockquote>
<p>die Konsonanten später aus der Differenz zwischen gesamtkleinenkonsonsnanten-vokalanzahl errechnet werden.</p>
</blockquote>
<p>mir etwas unklar, musst du jetzt alle konsonanten zählen oder nur die kleingeschriebenen? however, auf jedenfall musst du immer daran denken, dass ein satz nicht nur aus buchstaben besteht.</p>
<p>Werner Salomon schrieb:</p>
<blockquote>
<p>Mit strlen() wird dagegen zur Laufzeit jedesmal eine Funktion aufgerufen; diese Variante ist mit hoher Wahrscheinlichkeit langsamer.</p>
</blockquote>
<p>vielleicht gibt es aber zaubercompiler, die wissen, dass in der schleife das char array nicht verändert wird, die würden das dann sicher vor die schleife ziehen. aber wer weiß...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/926555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/926555</guid><dc:creator><![CDATA[davie]]></dc:creator><pubDate>Thu, 24 Nov 2005 21:40:07 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei einer Aufgabe on Thu, 24 Nov 2005 21:49:50 GMT]]></title><description><![CDATA[<p>Werner Salomon schrieb:</p>
<blockquote>
<p>Caipi schrieb:</p>
<blockquote>
<p>Dann solltest du statt cin &gt;&gt; satz; eher <a href="http://www.cppreference.com/cppio/getline.html" rel="nofollow">cin.getline(satz, 99);</a> verwenden.</p>
</blockquote>
<p>Hallo Caipi,</p>
<p>noch besser wäre die Verwendung eines Strings nebst der Funktion getline. Dann muss man sich nicht auf die (max.) Länge der Zeile festlegen.</p>
<pre><code class="language-cpp">std::string zeile;
    getline( std::cin, zeile );
</code></pre>
</blockquote>
<p>Jep. Hast natürlich Recht. Hab ich vergessen zu erwähnen.</p>
<blockquote>
<p>Caipi schrieb:</p>
<blockquote>
<p>Außerdem solltest du in der for-Schleife nicht sizeof(satz) / sizeof(char) verwenden, da deine Schleife sonst 100 mal durchlaufen wird. Nimm besser i &lt; strlen(satz) als Abbruchbedingung.</p>
</blockquote>
<p>Die Werte von 'sizeof(satz) / sizeof(char)' sind zur Compile-Zeit bekannt. Jeder durchschnittliche Compiler sollte aus diesem Ausdruck eine Konstante machen können. Mit strlen() wird dagegen zur Laufzeit jedesmal eine Funktion aufgerufen; diese Variante ist mit hoher Wahrscheinlichkeit langsamer.</p>
</blockquote>
<p>Jup. Auch hier liegst du richtig. Habe mich allerdings falsch ausgedrückt (<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="🙄"
    />). Ich meinte, dass der Schleifenkopf besser so aussehen sollte:</p>
<pre><code class="language-cpp">for(unsigned int i = 0, e = strlen(satz); i &lt; e; ++i)
</code></pre>
<p>(Wobei das wahrscheinlich immer noch langsamer ist, als sizeof(satz) / sizeof(satz[0]).</p>
<p>Oder wenigstens das Array satz mit \0 initialisieren, damit die Werte nicht verfälscht werden. Dann kann der Schleifenkopf so stehen bleiben. (Darauf war mein Hauptaugenmerk beim posten gerichtet).</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1731">@davie</a>: Keine Ahnung... liegt wohl daran, dass ich Arrays nocht nicht so oft mit Default-Werten initialisiert habe ;).</p>
<p>Gruß Caipi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/926562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/926562</guid><dc:creator><![CDATA[Caipi]]></dc:creator><pubDate>Thu, 24 Nov 2005 21:49:50 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei einer Aufgabe on Thu, 24 Nov 2005 22:05:17 GMT]]></title><description><![CDATA[<p>hallo!<br />
erstmal vielen dank für die zahlreichen antworten... leider ist das teilweise noch ein wenig hoch für mich^^ sry!!</p>
<p>aufjedenfall wüsste ich jetzt mal gerne wie ich ganz einfach alle kleingeschriebenen konsonanten rausbekommen. weil ich kann ja doch auch mit euern lösungen keine zahlen mit den char-werten vergleichen, oder?</p>
<p>bin voll durcheinander grad <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/926571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/926571</guid><dc:creator><![CDATA[ViperNeo]]></dc:creator><pubDate>Thu, 24 Nov 2005 22:05:17 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei einer Aufgabe on Thu, 24 Nov 2005 22:09:59 GMT]]></title><description><![CDATA[<p>was meinst du mit &quot;zahlen mit char werten vergleichen&quot;? prinzipiell sind chars nichts anderes als zahlen.</p>
<pre><code class="language-cpp">char c = 'a';
c = 58;
if (c == 'b') ;
switch (c)
{
  case 'a': ...
}
</code></pre>
<p>ist alles möglich.</p>
<p>eine funktion für kleingeschriebene konsonanten wäre z.b.</p>
<pre><code class="language-cpp">#include &lt;algorithm&gt;
using namespace std;

bool is_uncapitalized_consonant (char c)
{
   static const char vowels[] = &quot;bcdfghjklmnpqrstvwxyz&quot;;
   return find(vowels, vowels+21, c) != vowels+21;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/926574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/926574</guid><dc:creator><![CDATA[davie]]></dc:creator><pubDate>Thu, 24 Nov 2005 22:09:59 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei einer Aufgabe on Thu, 24 Nov 2005 22:20:51 GMT]]></title><description><![CDATA[<p>ja ich mach ja:<br />
if (satz[i] &gt;= 97 &amp;&amp; satz[i] &lt;= 122)</p>
<p>das scheint aber nicht zu gehen anscheinend. jedenfalls addiert er mir nichts dazu beim durchlaufen des satzes.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/926580</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/926580</guid><dc:creator><![CDATA[ViperNeo]]></dc:creator><pubDate>Thu, 24 Nov 2005 22:20:51 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei einer Aufgabe on Thu, 24 Nov 2005 22:27:00 GMT]]></title><description><![CDATA[<p>ViperNeo schrieb:</p>
<blockquote>
<p>ja ich mach ja:<br />
if (satz[i] &gt;= 97 &amp;&amp; satz[i] &lt;= 122)</p>
<p>das scheint aber nicht zu gehen anscheinend. jedenfalls addiert er mir nichts dazu beim durchlaufen des satzes.</p>
</blockquote>
<p>Bei welchem Code? Bei dem von dir geposteten? Sollte mit den genannten Änderungen problemlos funktionieren.</p>
<p>Gruß Caipi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/926581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/926581</guid><dc:creator><![CDATA[Caipi]]></dc:creator><pubDate>Thu, 24 Nov 2005 22:27:00 GMT</pubDate></item></channel></rss>