String Iteratoren



  • Also habs jetzt so umgeschrieben:

    stringstream sa; 
    for(string::iterator i = mRNA.begin(); i != mRNA.end(); ++i) { 
        string window(i, i + 3); 
        if (window == "UUU" || window == "UUC") 
            sa << "Phe"; 
    }
    cout<<sa;
    

    Es müsste ja eigentlich gehen, jedoch wird mir am Schluss nichts angezeigt?
    P.S. Es muss noch <sstream> eingefügt werden

    König Engluish



  • König Engluish schrieb:

    Es müsste ja eigentlich gehen, jedoch wird mir am Schluss nichts angezeigt?

    versuch mal "cout << sa.str();".

    Übrigens kann man sich die Kopie sparen, wenn man das Fenster nicht explizit erstellt und zum Vergleich die Funktio 'std::equal' aus <algorithm> verwendet:

    stringstream sa;
    for(string::iterator i = mRNA.begin(); i != mRNA.end(); i += 3) {
        if (equal(i, i + 3, "UUU") || equal(i, i + 3, "UUC"))
            sa << "Phe";
    }
    cout << sa.str();
    


  • Es will einfach nicht bei mir funktionieren..

    Gäbe es denn evt. noch weitere Möglichkeiten?

    König Engluish



  • König Engluish schrieb:

    Es will einfach nicht bei mir funktionieren..

    Was funktioniert nicht? Welcher Fehler kommt?



  • Beim Compilieren geht alles, wenn ich es ausführe kommt... NICHTS einfach gar nichts..

    König Engluish



  • König Engluish schrieb:

    Beim Compilieren geht alles, wenn ich es ausführe kommt... NICHTS einfach gar nichts..

    Ok, pack noch ein 'flush' hinter die Ausgabe, oder ein 'endl'.

    Oder schließt sich die Konsole etwa? Da gibt's ne FAQ drüber, man kann das Schließen verhindern:

    void wait() // Ungetestet, aus dem Gedächtnis.
    {
        using std::cin;
        cin.clear();
        cin.ignore(cin.rdbuf()->in_avail());
        cin.get();
    }
    

    Diese Funktion dann halt nach der Ausgabe in 'main' aufrufen.



  • Das mit dem Schließen ist nicht das Problem, soo neu bin ich auch wieder nicht (; nein, dieses cout<<sa.str(); funktioniert einfach nicht, werd mal jetzt noch deinen code ausprobieren

    König Engluish



  • Hatte jetzt noch eine andere Idee.

    int laenge=mRNA.length();
    
        char puffer[laenge];
    
        for(int i=0;i<laenge/3;i=i+3)
        {
                mRNA.copy(puffer,i);
    
        }
    

    Ich will, dass der Puffer nach und nach überprüft wird, nach den Kombinationen und dann die Lösungen an mRNA anhängt. Wäre das realisierbar ?



  • Zuerst mal: Was hat dieser neue Code mit der Fragestellung zu tun?

    Zweitens: Wieso willst Du das Ergebnis an die RNS anhängen? Das scheint keinen Sinn zu ergeben.

    Drittens: Iteratoren kann man hier leider nicht verwenden, da man den String ja verändert.

    Viertens: So.

    string::size_type len = mRNA.length();
    for (string::size_type i = 0; i < len; i += 3) {
        string::const_iterator it = mRNA.begin() + i;
        if (equal(it, it + 3, "UUC") or equal(it, it + 3, "UUU"))
            mRNA += "Phe";
        // usw. usf.
    }
    

    Aber wie gesagt: Was soll das bringen?



  • mRNA += "Phe";

    lol? nicht aufgepasst in bio?



  • besserwisser schrieb:

    mRNA += "Phe";

    lol? nicht aufgepasst in bio?

    Äh, lies Dir den ganzen Thread (oder auch nur das gesamte Posting, insbesondere den Satz "Das scheint keinen Sinn zu ergeben.") durch, bevor Du klugscheißt. Mir ist der Unterschied zwischen Peptid- und Phosphodiesterbindung durchaus bewusst.


Anmelden zum Antworten