[C++]str.replace();

11/15/2010 23:39 d3pr1#1
-
11/16/2010 15:41 Shadow992#2
Quote:
Originally Posted by d3pr1 View Post
Da ich mit dem anderen Thema in meinem Informatik kurs schon fertige habe hat der lehrer mir ne Aufgabe gegeben die ich zuhause lösen kann wenn ich möchte und ich möchte es tun
Aufgabe ist wiefolgt
Caesar Verschlüsslung wir sollen eigentlich nur eine machen nach wahl ich möchte aber wegen des lern effektes alle 3 machen

a) einfach ne verschiebung um x zeichen done
b eine vordefinierte zeichenreihe heißt a=l z=u usw
und da treten 1 fehler und ein problem auf
1. ich kapier str.replace befehl nicht ganz
2. ist es irgentwie möglich den abc string(der ja eigentlich auch nen array ist
durcheinader zu würfeln
problem liegt dabei eher in richtung wie checke ich ob er den bustaben schon vergeben hat





c ist man kann sein eigenes wort eingeben als beispiel elitepvpers dann
setz er das alphabet so um a=e b=l usw
denke wenn ich b kapiert habe das c dann nur noch coderei ist



ich bin für alle ansätze dankbar pseudo code teil code oder nen denkanstoß


mfg,
d3pr1
Ganz ehrlich, aber ich versteh gerade nicht was genau bei b zu tun ist, werde dir aber bei einem Problem helfen, dass ganz sicher auf dich zu kommen wird:
Wie überprüft man ob das Zeichen bereits ersetzt wurde und nicht nocheinmal ersetzt wird.
Bsp.
a=l, o=a, l=o

Würde man "Hallo" jetzt ganz "hirnlos" umwandeln lassen, so würde das so aussehen, die wichtige Stelle wird markiert:
Alle a's mit l's ersetzen:
Quote:
Hlllo
Alle o's mit a's erstezen:
Quote:
Hllla
Alle l's mit o's ersetzen:
Quote:
Hoooa
So und schon hat man einen Fehler, denn wenn man das Wort wieder entschlüsselt, käme das bei raus:
Quote:
Hlllo
Und wozu string.replace? Das frisst doch nur zusätzlich Zeit, so gehts doch auch:
PHP Code:
#include <iostream>
#include <string>
using namespace std;

string Encode(string text,string normal_chars,string encoded_chars);

int main()
{
    
string encoded=Encode("Hallo","aol","lao");
    
cout<<"Encoded: "<<encoded<<"\n";
    
string decoded=Encode(encoded,"lao","aol");
    
cout<<"Decoded: "<<decoded<<"\n";
}

string Encode(string text,string normal_chars,string encoded_chars)
{
    if (
normal_chars.length()==encoded_chars.length())
    {

        for (
long i=0;i<text.length();i++)
        {
            for (
short i2=0;i2<normal_chars.length();i2++)
            {
                if (
normal_chars[i2]==text[i])
                {

                    
text[i]=encoded_chars[i2];
                    break;

                }
            }
        }
        return 
text;
    }
    else return 
"";

11/16/2010 17:21 MoepMeep#3
Das du bei so tollen Variabelnamen wie 'lol' nicht weiterkommst, wundert mich nicht :>
11/16/2010 17:23 d3pr1#4
Quote:
Originally Posted by MoepMeep View Post
Das du bei so tollen Variabelnamen wie 'lol' nicht weiterkommst, wundert mich nicht :>
geändert
Quote:
Originally Posted by Shadow992 View Post
Ganz ehrlich, aber ich versteh gerade nicht was genau bei b zu tun ist, werde dir aber bei einem Problem helfen, dass ganz sicher auf dich zu kommen wird:
Wie überprüft man ob das Zeichen bereits ersetzt wurde und nicht nocheinmal ersetzt wird.
Bsp.
a=l, o=a, l=o

Würde man "Hallo" jetzt ganz "hirnlos" umwandeln lassen, so würde das so aussehen, die wichtige Stelle wird markiert:
Alle a's mit l's ersetzen:

Alle o's mit a's erstezen:

Alle l's mit o's ersetzen:


So und schon hat man einen Fehler, denn wenn man das Wort wieder entschlüsselt, käme das bei raus:


Und wozu string.replace? Das frisst doch nur zusätzlich Zeit, so gehts doch auch:


ja das mit h=o und o=l ist mir auch schon aufgefallen dachte jetzt an sowas wie

string.replace was ich immer noch net auf die reihe kriege ka why wäre nett wenn einer einfach mal nen schnellen code dafür zeigt
dachte jetzt an sowas wie
dachte jetzt an sowas
ausgabe[string.find('a')] = 'b'
11/16/2010 18:46 Shadow992#5
Quote:
Originally Posted by d3pr1 View Post
geändert




ja das mit h=o und o=l ist mir auch schon aufgefallen dachte jetzt an sowas wie

string.replace was ich immer noch net auf die reihe kriege ka why wäre nett wenn einer einfach mal nen schnellen code dafür zeigt
dachte jetzt an sowas wie
dachte jetzt an sowas
ausgabe[string.find('a')] = 'b'
Falls es dir noch nicht aufgefallen ist, das obere Beispiel ist die erledigte Aufgabe c) und b) in einem...
11/16/2010 19:38 d3pr1#6
ich bin dir auch dankbar für den fertigen code aber erstmal analysieren ^^