Lauflängenkodierung rle



  • Spaßvogel.
    Nutzlose Komentare und auch noch schnell eingeschnappt.
    Ich habe garnichts hier für meines ausgegeben.
    Ich habe doch die Quelle angegeben 😕 , da ist deine Aufmerksamkeit wohl schnell ausgelastet und einfach vom Proll ersätzt.
    😃
    Schönen Abend



  • Danke wob,
    ich habe ja auch eingelängt, dass das ein offensichtlicher Syntax fehler ist und nach Verbesserungsvorschlägen gefragt. Ich begrüsse deine Vorschläge. 👍
    Deiner Aussage, dass man doch eher mit aktuelleren compilern und entsprechenden neuen Funktionen arbeiten sollte, kann ich dir nur zustimmen. Dieser Studiengang sieht das leider anders. 😡
    P.S. @mani66 nicht mehr schmollen, ich werde es ja korrigieren 😃



  • @wob
    Ich verusch die aktuelle Syntax zu lernen, indem ich mich bemühe die Aufgaben nach Beendigung ohne zu spicken auch im VS2017 zu wiederholen.
    Der Grundgedanke und das ausformulieren des Problems ist eher der schwer Punkt. Es geht auch schon bald vom Lehrgang über zu C#-PHP-SQL...
    Danke für das angerägte Gespräch und ich werde den check einbauen... 🙂



  • Gesounds schrieb:

    Danke wob,
    ich habe ja auch eingelängt, dass das ein offensichtlicher Syntax fehler ist

    Es ist, ich wiederhole mich, KEIN Syntaxfehler.

    Und die Ironie ist doch gerade, dass der Code in C++11 ok wäre, siehe hier http://en.cppreference.com/w/cpp/string/basic_string/operator_at den Unterschied. Du hast undefiniertes Verhalten.



  • okay...sehe ich ein...danke für den link und die Klarstellung...also kein Syntax fehler, sondern ein undefiniertes Verhalten und fehlerhaft, weil kein bound checking und "da sie außerhalb des erlaubten Bereichs auf den String zugreift".
    Bin ich voll und ganz mit einverstanden und werde es wie versprochen auch in zukünftigen projecten einhalten. Jetzt können wir die komplette Situation titulieren, aber ich würde immer noch gerne wissen, wieso es keinen fehler wiedergibt...k.p. wie ein buffer overrun, ein endlos schleife, ein compiler fehler, so was halt.
    Ist ein undefined bahavior ab C++11 "tatsächlich" fehlerhaft? oder ein Stilmittel?
    Ich betone, ich verstehe, dass ein check von der String Länge fehlt und das fehlerhaft ist.



  • Eigentlich wollte ich am Anfang nur wissen, wo der fehler in der int to string Konvertierung lag und das ist ja auch inzwischen gelöst.
    Ich habe mir auch über dieses undefinierte Verhalten fragen gestellt und dank eurer kommentare bin ich in dieser Sache einen Schritt weiter.
    Ich will es gerne richtig machen und bei zweifel mir die Fragen, die sich bei einem laufenden Programm stellen, vollständig beantworten können.
    Nochmals Danke 🙂 👍



  • @wob sorry, wegen meiner Unachtsamkeit dir mit "Syntaxfehler" zu antworten. 🙄



  • So...noch ein Versuch...reicht es, wenn ich den Check in die Kondition der FOR Schleife setze oder muss es auch in dem while statement stehen?

    Aktueller Code:

    #include <iostream>
    #include <sstream>
    using namespace std;
    
    string encode(string str)
    {
    	string encoding = "";
    	int count;
            int size;
    	size = str.size() - 1;
    
    	for (int i = 0; i < size; i++)
    	{
    		count = 1;
    		stringstream buffer;
    
    		while (str[i] == str[i + 1])
    			count++, i++;
    
                    buffer << count;
    		encoding += buffer.str() + str[i];
    	}
    
    	return encoding;
    }
    
    int main()
    {
    	string str = "ABBCCCD";
    
    	cout << encode(str);
    
    	return 0;
    }
    

    Ist das weiterhin fehlerhaft?



  • Ja, nur ist es jetzt ein anderer Fehler. Vielleicht kommste ja selbst drauf. Was passiert, wenn die Eingabe mit "AB" endet?



  • Danke für den Hinweis.


Anmelden zum Antworten