<?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[Ceasar chiffre mit Funktion]]></title><description><![CDATA[<p>hallo zusammen, ich muss die folgende Aufgabe lösen:<br />
Schreiben Sie eine Funktion chiffriere(char*, int), die zwei Parameter besitzt. Der erste Parameter entspricht dem zu verschlusselnden Text, der zweite Parameter der Verschiebung des Code-Alphabets zum Original-Alphabet. Es soll eine Verschiebung von 0 &lt;= versatz &lt; 26 ermoglicht werden.<br />
Realisieren Sie in der Funktion chiffriere(char*, int) die Verschlusselung des ubergebenen Textes mit der Caesar-Chiffre. Sie durfen annehmen, dass der<br />
Text nur aus kleinen Buchstaben besteht.</p>
<p>also ich soll eine Funktion schreiben die alle Buchstaben des Textes um n stellen verschiebt. Ich habe das folgende Programm geschrieben... aber es wird nur die allererste Stelle des strings verschoben, vllt kann mir jemand helfen den Fehler zu finden? Das wäre sehr nett.</p>
<p>#include &quot;stdafx.h&quot;<br />
#include &lt;iostream&gt;<br />
using namespace std;</p>
<p>void chiffriere (char* text, int n){<br />
int x=0, y=0;</p>
<p>int size = (sizeof(text));<br />
char alphabet[27] ={'a','b', 'c', 'd','e','f', 'g', 'h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};<br />
int z =y+n;<br />
while (x&lt;size-1) {<br />
while (y&lt;26) {<br />
if (text[x]==alphabet[y])</p>
<p>text[x]=alphabet[z];</p>
<p>y++;<br />
}<br />
x++;<br />
}</p>
<p>}</p>
<p>void ausgabe(char *text)<br />
{<br />
int i = 0;<br />
while (text[i] != '\0')<br />
{<br />
cout &lt;&lt; text[i++];<br />
}<br />
cout &lt;&lt; endl;}</p>
<p>int main()<br />
{<br />
char text_1[] = &quot;abcdefghijklmnopqrstuvwxyz\0&quot;;<br />
char text_2[] = &quot;qvvfxrbcmnwwmrnjwhtnhcjbcnwjsjrlqknbcnuuvranabcnrwvjunrwkrna\0&quot;;</p>
<p>cout &lt;&lt; &quot;--------------Text 1---------------&quot; &lt;&lt; endl;<br />
ausgabe(text_1);<br />
for (int i = 1; i &lt; 26; i++)<br />
{<br />
cout &lt;&lt; &quot;Verschiebung um &quot; &lt;&lt; i &lt;&lt; &quot; Buchstaben:&quot; &lt;&lt; endl;<br />
chiffriere(text_1, i);<br />
ausgabe(text_1);<br />
}</p>
<p>cout &lt;&lt; &quot;--------------Text 2---------------&quot; &lt;&lt; endl;<br />
ausgabe (text_2);<br />
for (int i = 1; i &lt; 26; i++)<br />
{<br />
cout &lt;&lt; &quot;Verschiebung um &quot; &lt;&lt; i &lt;&lt; &quot; Buchstaben:&quot; &lt;&lt; endl;<br />
chiffriere(text_2, i);<br />
ausgabe(text_2);<br />
}</p>
<p>system(&quot;pause&quot;);<br />
return 0;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/295676/ceasar-chiffre-mit-funktion</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 09:01:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/295676.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 18 Nov 2011 20:21:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ceasar chiffre mit Funktion on Fri, 18 Nov 2011 20:21:45 GMT]]></title><description><![CDATA[<p>hallo zusammen, ich muss die folgende Aufgabe lösen:<br />
Schreiben Sie eine Funktion chiffriere(char*, int), die zwei Parameter besitzt. Der erste Parameter entspricht dem zu verschlusselnden Text, der zweite Parameter der Verschiebung des Code-Alphabets zum Original-Alphabet. Es soll eine Verschiebung von 0 &lt;= versatz &lt; 26 ermoglicht werden.<br />
Realisieren Sie in der Funktion chiffriere(char*, int) die Verschlusselung des ubergebenen Textes mit der Caesar-Chiffre. Sie durfen annehmen, dass der<br />
Text nur aus kleinen Buchstaben besteht.</p>
<p>also ich soll eine Funktion schreiben die alle Buchstaben des Textes um n stellen verschiebt. Ich habe das folgende Programm geschrieben... aber es wird nur die allererste Stelle des strings verschoben, vllt kann mir jemand helfen den Fehler zu finden? Das wäre sehr nett.</p>
<p>#include &quot;stdafx.h&quot;<br />
#include &lt;iostream&gt;<br />
using namespace std;</p>
<p>void chiffriere (char* text, int n){<br />
int x=0, y=0;</p>
<p>int size = (sizeof(text));<br />
char alphabet[27] ={'a','b', 'c', 'd','e','f', 'g', 'h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};<br />
int z =y+n;<br />
while (x&lt;size-1) {<br />
while (y&lt;26) {<br />
if (text[x]==alphabet[y])</p>
<p>text[x]=alphabet[z];</p>
<p>y++;<br />
}<br />
x++;<br />
}</p>
<p>}</p>
<p>void ausgabe(char *text)<br />
{<br />
int i = 0;<br />
while (text[i] != '\0')<br />
{<br />
cout &lt;&lt; text[i++];<br />
}<br />
cout &lt;&lt; endl;}</p>
<p>int main()<br />
{<br />
char text_1[] = &quot;abcdefghijklmnopqrstuvwxyz\0&quot;;<br />
char text_2[] = &quot;qvvfxrbcmnwwmrnjwhtnhcjbcnwjsjrlqknbcnuuvranabcnrwvjunrwkrna\0&quot;;</p>
<p>cout &lt;&lt; &quot;--------------Text 1---------------&quot; &lt;&lt; endl;<br />
ausgabe(text_1);<br />
for (int i = 1; i &lt; 26; i++)<br />
{<br />
cout &lt;&lt; &quot;Verschiebung um &quot; &lt;&lt; i &lt;&lt; &quot; Buchstaben:&quot; &lt;&lt; endl;<br />
chiffriere(text_1, i);<br />
ausgabe(text_1);<br />
}</p>
<p>cout &lt;&lt; &quot;--------------Text 2---------------&quot; &lt;&lt; endl;<br />
ausgabe (text_2);<br />
for (int i = 1; i &lt; 26; i++)<br />
{<br />
cout &lt;&lt; &quot;Verschiebung um &quot; &lt;&lt; i &lt;&lt; &quot; Buchstaben:&quot; &lt;&lt; endl;<br />
chiffriere(text_2, i);<br />
ausgabe(text_2);<br />
}</p>
<p>system(&quot;pause&quot;);<br />
return 0;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2146157</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2146157</guid><dc:creator><![CDATA[josite92]]></dc:creator><pubDate>Fri, 18 Nov 2011 20:21:45 GMT</pubDate></item><item><title><![CDATA[Reply to Ceasar chiffre mit Funktion on Fri, 18 Nov 2011 20:59:51 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int size = (sizeof(text));
</code></pre>
<p>Also, nachdem ich diese Zeile gesehen habe, bezweifel ich schonmal, dass der Algorithmus überhaupt funktionieren kann. Weißt du, was diese Zeile tut?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2146163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2146163</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 18 Nov 2011 20:59:51 GMT</pubDate></item><item><title><![CDATA[Reply to Ceasar chiffre mit Funktion on Fri, 18 Nov 2011 21:05:34 GMT]]></title><description><![CDATA[<p>naja wahrscheinlich nicht das was sie soll?! ... eigentlich soll sie die Größe des strings bestimmen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2146165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2146165</guid><dc:creator><![CDATA[josite92]]></dc:creator><pubDate>Fri, 18 Nov 2011 21:05:34 GMT</pubDate></item><item><title><![CDATA[Reply to Ceasar chiffre mit Funktion on Fri, 18 Nov 2011 21:09:22 GMT]]></title><description><![CDATA[<p>josite92 schrieb:</p>
<blockquote>
<p>naja wahrscheinlich nicht das was sie soll?! ... eigentlich soll sie die Größe des strings bestimmen...</p>
</blockquote>
<p>Ganz genau, das sollte es :). Wenn du allerdings ein Array an eine Funktion übergibst, &quot;zerfällt&quot; das Ganze zu einem Zeiger (Stichwort: array to pointer decay). &quot;text&quot; ist also ein Zeiger, und ein Zeiger hat überlichweise eine Größe von 4Byte oder 8Byte.</p>
<p>In diesem Fall kannst du aber strlen aus cstring benutzen:</p>
<pre><code class="language-cpp">#include &lt;cstring&gt;
int size = strlen(text);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2146167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2146167</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 18 Nov 2011 21:09:22 GMT</pubDate></item><item><title><![CDATA[Reply to Ceasar chiffre mit Funktion on Fri, 18 Nov 2011 21:12:41 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">sizeof(text)
</code></pre>
<p>wird bei dir immer 4 (oder 8 auf 64-Bit-System) ergeben, da die Größe von Pointern konastant ist.<br />
Aber warum sich überhaupt mit C-Strings rumschlagen?! Du bist hier im C++-Unterforum, also gehe ich davon aus, dass du auch wirklich C++ schreiben willst. Also nimm std::string.<br />
Den Rest richtig anzupassen sollte nicht allzu schwer sein.</p>
<p>EDIT: Zu langsam... strlen geht natürlich auch, aber nimm lieber std::string</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2146169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2146169</guid><dc:creator><![CDATA[Jonas OSDever]]></dc:creator><pubDate>Fri, 18 Nov 2011 21:12:41 GMT</pubDate></item><item><title><![CDATA[Reply to Ceasar chiffre mit Funktion on Sat, 19 Nov 2011 12:36:43 GMT]]></title><description><![CDATA[<p>Wieso machst du das Ganze eig. so kompliziert? Das geht in deinem Stil auch einfacher. Am besten wäre es aber natürlich du würdest es auf C++-Art machen.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;cstring&gt;
using namespace std;

void chiffriere(char* text, int n)
{
    int size = strlen(text);

    if( n&gt;26 )
        n = n - (n/26)*26; // edit: Ich nehme an, dass ihr die eingebauten Datentypen schon durchgenommen habt.
                           // Hier siehst du nun deutlich, dass der Audruck (n/26)*26 eben nicht n ergibt, da eine Division mit Ganzzahlen als Ergebnis auch eine Ganzzahl liefert.
                           // Wir berechnen hier also den Rest einer ganzzahligen Division. Zukünftig nimmst du dafür natürlich den Modulo-Operator: n = n%26;

    for(int i=0; i&lt;size; ++i)
    {

        if(text[i]+n &lt;= 'z')
        {
            text[i] = text[i] + n;
        }
        else
        {
            int d = text[i] + n - 'z' -1;
            text[i] = 'a' + d;
        }
    }
}

void ausgabe(char *text)
{
    cout &lt;&lt; text &lt;&lt; '\n';
}

int main()
{
    char text_1[] = &quot;abcdefghijklmnopqrstuvwxyz&quot;;
    char text_2[] = &quot;hallo welt&quot;; 

    cout &lt;&lt; &quot;--------------Text 1---------------&quot; &lt;&lt; endl;
    ausgabe(text_1);
    chiffriere(text_1, 2);
    ausgabe(text_1);

    cout &lt;&lt; &quot;--------------Text 2---------------&quot; &lt;&lt; endl;
    ausgabe(text_2);
    chiffriere(text_2, 2);
    ausgabe(text_2);

    system(&quot;pause&quot;);
}
</code></pre>
<p>Falls was nicht verständlich ist, frag nach.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2146172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2146172</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 19 Nov 2011 12:36:43 GMT</pubDate></item><item><title><![CDATA[Reply to Ceasar chiffre mit Funktion on Fri, 18 Nov 2011 21:48:56 GMT]]></title><description><![CDATA[<p>danke für die schnelle Antwort... ich habe es mit strlen(text)und der dazugehörigen bibliothek versucht aber es funktioniert leider immer noch nicht ...<br />
ehm std::string... ich habe gerade gelesen dass das eine Klasse ist? soweit sind wir noch gar nicht in der Vorlesung ... ich bin absolute Anfängerin hatte bis vor 5 wochen noch NIE etwas mit Informatik zu tun und lerne C++ gerade im Nebenfach für Elektrotechnik und Informationstechnik 1. Semester.... deswegen ist mein Stil wohl auch nicht sonderlich gut... ich weiß nicht so genau wo die grenze zwischen c und c++ ist ich denke wir machen gerade noch die grundlagen die zwar in c++ enthalten sind aber wohl auch bestandteil von c sind? Ich weiß es ehrlich gesagt nicht.</p>
<p>ich sehe gerade in der zwischenZeit wurde geantwortet ich werde das jetzt auch mal ausprobieren <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/2146177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2146177</guid><dc:creator><![CDATA[josite92]]></dc:creator><pubDate>Fri, 18 Nov 2011 21:48:56 GMT</pubDate></item><item><title><![CDATA[Reply to Ceasar chiffre mit Funktion on Fri, 18 Nov 2011 22:03:18 GMT]]></title><description><![CDATA[<p>josite92 schrieb:</p>
<blockquote>
<p>ich weiß nicht so genau wo die grenze zwischen c und c++ ist ich denke wir machen gerade noch die grundlagen die zwar in c++ enthalten sind aber wohl auch bestandteil von c sind? Ich weiß es ehrlich gesagt nicht.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Das kenn ich, wurde bei uns leider auch so gemacht. <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>
<p>Ich habe mein Quellcode nochmals editiert, war ein Fehler drin. :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2146183</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2146183</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 18 Nov 2011 22:03:18 GMT</pubDate></item></channel></rss>